Skip to content

Commit c2dd7a4

Browse files
committed
refactor(error): migrate make_error call sites to typed error codes (Issue #230)
Replace all make_error/error_info call sites across 32 files to use messaging_error_category typed error codes via make_typed_error_code(). - Core: message.cpp, message_bus.cpp, message_broker.cpp, message_queue.cpp, topic_router.cpp - Patterns: request_reply.cpp, event_streaming.cpp, message_pipeline.cpp, pub_sub.cpp - Backends: standalone_backend.cpp, integration_backend.cpp - Adapters: http_transport.h/.cpp, websocket_transport.h/.cpp - Task: task.cpp, scheduler.cpp, cron_parser.cpp, worker_pool.cpp, and 7 more - Serialization: message_serializer.h - Integration: event_bridge.h, executor_adapter.h, task_event_bridge.h, task_handler.h - Tests: test_message_bus.cpp updated to use messaging_error_category type alias
1 parent 96c4e3f commit c2dd7a4

32 files changed

Lines changed: 499 additions & 878 deletions

include/kcenon/messaging/adapters/http_transport.h

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
#include <kcenon/messaging/config/feature_flags.h>
2222
#include <kcenon/messaging/adapters/transport_interface.h>
23-
#include <kcenon/messaging/error/error_codes.h>
23+
#include <kcenon/messaging/error/messaging_error_category.h>
2424

2525
#include <map>
2626
#include <memory>
@@ -218,11 +218,8 @@ class http_transport : public transport_interface {
218218
~http_transport() override = default;
219219

220220
common::VoidResult connect() override {
221-
return common::VoidResult::err(common::error_info(
222-
static_cast<int>(error::not_supported),
223-
"HTTP transport requires network_system. "
224-
"Build with -DKCENON_WITH_NETWORK_SYSTEM=ON"
225-
));
221+
return common::VoidResult::err(
222+
make_typed_error_code(messaging_error_category::not_supported));
226223
}
227224

228225
common::VoidResult disconnect() override {
@@ -236,17 +233,13 @@ class http_transport : public transport_interface {
236233
}
237234

238235
common::VoidResult send(const message& /*msg*/) override {
239-
return common::VoidResult::err(common::error_info(
240-
static_cast<int>(error::not_supported),
241-
"HTTP transport requires network_system"
242-
));
236+
return common::VoidResult::err(
237+
make_typed_error_code(messaging_error_category::not_supported));
243238
}
244239

245240
common::VoidResult send_binary(const std::vector<uint8_t>& /*data*/) override {
246-
return common::VoidResult::err(common::error_info(
247-
static_cast<int>(error::not_supported),
248-
"HTTP transport requires network_system"
249-
));
241+
return common::VoidResult::err(
242+
make_typed_error_code(messaging_error_category::not_supported));
250243
}
251244

252245
void set_message_handler(std::function<void(const message&)> /*handler*/) override {}
@@ -259,19 +252,15 @@ class http_transport : public transport_interface {
259252

260253
// HTTP-specific stubs
261254
common::Result<message> post(const std::string& /*endpoint*/, const message& /*msg*/) {
262-
return common::Result<message>::err(common::error_info(
263-
static_cast<int>(error::not_supported),
264-
"HTTP transport requires network_system"
265-
));
255+
return common::Result<message>::err(
256+
make_typed_error_code(messaging_error_category::not_supported));
266257
}
267258

268259
common::Result<message> get(
269260
const std::string& /*endpoint*/,
270261
const std::map<std::string, std::string>& /*query*/ = {}) {
271-
return common::Result<message>::err(common::error_info(
272-
static_cast<int>(error::not_supported),
273-
"HTTP transport requires network_system"
274-
));
262+
return common::Result<message>::err(
263+
make_typed_error_code(messaging_error_category::not_supported));
275264
}
276265

277266
void set_header(const std::string& /*key*/, const std::string& /*value*/) {}

include/kcenon/messaging/adapters/websocket_transport.h

Lines changed: 17 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
#include <kcenon/messaging/config/feature_flags.h>
2222
#include <kcenon/messaging/adapters/transport_interface.h>
23-
#include <kcenon/messaging/error/error_codes.h>
23+
#include <kcenon/messaging/error/messaging_error_category.h>
2424
#include <kcenon/common/interfaces/executor_interface.h>
2525

2626
#include <memory>
@@ -232,11 +232,8 @@ class websocket_transport : public transport_interface {
232232
~websocket_transport() override = default;
233233

234234
common::VoidResult connect() override {
235-
return common::VoidResult::err(common::error_info(
236-
static_cast<int>(error::not_supported),
237-
"WebSocket transport requires network_system. "
238-
"Build with -DKCENON_WITH_NETWORK_SYSTEM=ON"
239-
));
235+
return common::VoidResult::err(
236+
make_typed_error_code(messaging_error_category::not_supported));
240237
}
241238

242239
common::VoidResult disconnect() override {
@@ -250,17 +247,13 @@ class websocket_transport : public transport_interface {
250247
}
251248

252249
common::VoidResult send(const message& /*msg*/) override {
253-
return common::VoidResult::err(common::error_info(
254-
static_cast<int>(error::not_supported),
255-
"WebSocket transport requires network_system"
256-
));
250+
return common::VoidResult::err(
251+
make_typed_error_code(messaging_error_category::not_supported));
257252
}
258253

259254
common::VoidResult send_binary(const std::vector<uint8_t>& /*data*/) override {
260-
return common::VoidResult::err(common::error_info(
261-
static_cast<int>(error::not_supported),
262-
"WebSocket transport requires network_system"
263-
));
255+
return common::VoidResult::err(
256+
make_typed_error_code(messaging_error_category::not_supported));
264257
}
265258

266259
void set_message_handler(std::function<void(const message&)> /*handler*/) override {}
@@ -273,40 +266,30 @@ class websocket_transport : public transport_interface {
273266

274267
// WebSocket-specific stubs
275268
common::VoidResult subscribe(const std::string& /*topic_pattern*/) {
276-
return common::VoidResult::err(common::error_info(
277-
static_cast<int>(error::not_supported),
278-
"WebSocket transport requires network_system"
279-
));
269+
return common::VoidResult::err(
270+
make_typed_error_code(messaging_error_category::not_supported));
280271
}
281272

282273
common::VoidResult unsubscribe(const std::string& /*topic_pattern*/) {
283-
return common::VoidResult::err(common::error_info(
284-
static_cast<int>(error::not_supported),
285-
"WebSocket transport requires network_system"
286-
));
274+
return common::VoidResult::err(
275+
make_typed_error_code(messaging_error_category::not_supported));
287276
}
288277

289278
common::VoidResult unsubscribe_all() {
290-
return common::VoidResult::err(common::error_info(
291-
static_cast<int>(error::not_supported),
292-
"WebSocket transport requires network_system"
293-
));
279+
return common::VoidResult::err(
280+
make_typed_error_code(messaging_error_category::not_supported));
294281
}
295282

296283
std::set<std::string> get_subscriptions() const { return {}; }
297284

298285
common::VoidResult send_text(const std::string& /*text*/) {
299-
return common::VoidResult::err(common::error_info(
300-
static_cast<int>(error::not_supported),
301-
"WebSocket transport requires network_system"
302-
));
286+
return common::VoidResult::err(
287+
make_typed_error_code(messaging_error_category::not_supported));
303288
}
304289

305290
common::VoidResult ping() {
306-
return common::VoidResult::err(common::error_info(
307-
static_cast<int>(error::not_supported),
308-
"WebSocket transport requires network_system"
309-
));
291+
return common::VoidResult::err(
292+
make_typed_error_code(messaging_error_category::not_supported));
310293
}
311294

312295
void set_disconnect_handler(

include/kcenon/messaging/integration/event_bridge.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#pragma once
1414

1515
#include <kcenon/common/patterns/event_bus.h>
16+
#include <kcenon/messaging/error/messaging_error_category.h>
1617
#include "../core/message_bus.h"
1718
#include <chrono>
1819
#include <memory>
@@ -197,8 +198,8 @@ class messaging_event_bridge {
197198
*/
198199
common::VoidResult start() {
199200
if (running_) {
200-
return common::make_error<std::monostate>(
201-
-1, "Event bridge already running", "messaging::event_bridge");
201+
return common::VoidResult::err(
202+
make_typed_error_code(messaging_error_category::already_running));
202203
}
203204

204205
running_ = true;

include/kcenon/messaging/integration/executor_adapter.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
#include <kcenon/common/interfaces/executor_interface.h>
1717
#include <kcenon/common/patterns/result.h>
18+
#include <kcenon/messaging/error/messaging_error_category.h>
1819
#include "../core/message.h"
1920
#include <functional>
2021
#include <memory>
@@ -65,8 +66,8 @@ class message_processor_job : public common::interfaces::IJob {
6566
*/
6667
common::VoidResult execute() override {
6768
if (!handler_) {
68-
return common::make_error<std::monostate>(
69-
-1, "No handler registered", "messaging::message_processor_job");
69+
return common::VoidResult::err(
70+
make_typed_error_code(messaging_error_category::task_failed));
7071
}
7172
return handler_(msg_);
7273
}
@@ -126,13 +127,13 @@ class message_reply_job : public common::interfaces::IJob {
126127

127128
common::VoidResult execute() override {
128129
if (!handler_) {
129-
auto error = common::make_error<message>(
130-
-1, "No handler registered", "messaging::message_reply_job");
130+
auto error = common::Result<message>::err(
131+
make_typed_error_code(messaging_error_category::task_failed));
131132
if (reply_callback_) {
132133
reply_callback_(std::move(error));
133134
}
134-
return common::make_error<std::monostate>(
135-
-1, "No handler registered", "messaging::message_reply_job");
135+
return common::VoidResult::err(
136+
make_typed_error_code(messaging_error_category::task_failed));
136137
}
137138

138139
auto result = handler_(request_);
@@ -190,8 +191,8 @@ class executor_message_handler {
190191
int priority = 0) {
191192

192193
if (!executor_) {
193-
return common::make_error<std::future<void>>(
194-
-1, "No executor available", "messaging::executor_message_handler");
194+
return common::Result<std::future<void>>::err(
195+
make_typed_error_code(messaging_error_category::broker_unavailable));
195196
}
196197

197198
auto job = std::make_unique<message_processor_job>(
@@ -214,8 +215,8 @@ class executor_message_handler {
214215
int priority = 0) {
215216

216217
if (!executor_) {
217-
return common::make_error<std::future<void>>(
218-
-1, "No executor available", "messaging::executor_message_handler");
218+
return common::Result<std::future<void>>::err(
219+
make_typed_error_code(messaging_error_category::broker_unavailable));
219220
}
220221

221222
auto job = std::make_unique<message_reply_job>(

include/kcenon/messaging/integration/task_event_bridge.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#pragma once
1414

1515
#include <kcenon/common/patterns/event_bus.h>
16+
#include <kcenon/messaging/error/messaging_error_category.h>
1617
#include <kcenon/messaging/integration/task_events.h>
1718
#include <kcenon/messaging/task/task.h>
1819

@@ -301,8 +302,8 @@ inline task_event_bridge::~task_event_bridge() {
301302

302303
inline common::VoidResult task_event_bridge::start() {
303304
if (running_) {
304-
return common::make_error<std::monostate>(
305-
-1, "Task event bridge already running", "task::event_bridge");
305+
return common::VoidResult::err(
306+
make_typed_error_code(messaging_error_category::already_running));
306307
}
307308
running_ = true;
308309
return common::ok();

0 commit comments

Comments
 (0)