From afa8d09ade02dbaec5b09189e75d3aa48bb45572 Mon Sep 17 00:00:00 2001 From: "Timur A. Fatkhullin" Date: Sat, 9 Nov 2024 23:51:40 +0300 Subject: [PATCH] ... --- net/adc_device_netserver.h | 13 ++++++------- net/adc_net_concepts.h | 3 +++ net/adc_netserver.h | 7 +++++-- net/adc_netserver_spdlog.h | 5 +++++ net/asio/adc_netservice_asio.h | 8 +++----- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/net/adc_device_netserver.h b/net/adc_device_netserver.h index 5c1e413..e228a5f 100644 --- a/net/adc_device_netserver.h +++ b/net/adc_device_netserver.h @@ -246,8 +246,9 @@ public: _netService.asyncReceive( [self, this](netservice_t::async_callback_err_t ec, message_t msg) { if (ec) { - _serverPtr->errorMessage(std::string("asyncReceive operation completed with") + - netservice_t::formatError(ec)); + std::string str("asyncReceive operation completed with error: "); + netservice_t::formatError(ec, str); + _serverPtr->errorMessage(str); stop(); } else { auto msg_sptr = std::make_shared(std::move(msg)); @@ -260,8 +261,9 @@ public: *msg_sptr, [self, msg_sptr, this](netservice_t::async_callback_err_t ec) { if (ec) { - _serverPtr->errorMessage(std::string("asyncSend operation completed with") + - netservice_t::formatError(ec)); + std::string str("asyncSend operation completed with error: "); + netservice_t::formatError(ec, str); + _serverPtr->errorMessage(str); stop(); } else { start(); @@ -391,9 +393,6 @@ public: auto id = std::forward(id_ser_func)(dev_ptr->ident()); _devices.try_emplace(dev_ptr, dev_ptr, id, std::forward(attr_id_deser_func), std::forward(cmd_id_deser_func)); - // _devices.try_emplace(dev_ptr, dev_ptr, std::forward(id_ser_func), - // std::forward(attr_id_deser_func), - // std::forward(cmd_id_deser_func)); return *this; } diff --git a/net/adc_net_concepts.h b/net/adc_net_concepts.h index e42721b..93f02eb 100644 --- a/net/adc_net_concepts.h +++ b/net/adc_net_concepts.h @@ -159,6 +159,9 @@ concept adc_netservice_c = requires(SRVT srv, const SRVT srv_const) { { srv.receive(std::declval()) } -> std::same_as; srv.close(); + + // static method + SRVT::formatError(std::declval(), std::declval()); }; diff --git a/net/adc_netserver.h b/net/adc_netserver.h index 6b70274..6e072d9 100644 --- a/net/adc_netserver.h +++ b/net/adc_netserver.h @@ -353,13 +353,16 @@ protected: _isListening[this][id] = true; doAccept(acceptor, std::move(id), std::move(sess_ctx)); } else { - errorMessage(SessionT::netservice_t::formatError(ec)); + std::string str{"Cannot start accepting connection: "}; + SessionT::netservice_t::formatError(ec, str); + errorMessage(str); + _isListening[this][id] = false; } }); } - virtual void errorMessage(const std::string&) = 0; + virtual void errorMessage(const std::string&) {}; }; diff --git a/net/adc_netserver_spdlog.h b/net/adc_netserver_spdlog.h index 51b689d..9c09403 100644 --- a/net/adc_netserver_spdlog.h +++ b/net/adc_netserver_spdlog.h @@ -30,6 +30,11 @@ protected: std::string _serverID; + virtual void errorMessage(const std::string& err_msg) + { + logError(err_msg); + } + public: using typename ServerT::server_ident_t; diff --git a/net/asio/adc_netservice_asio.h b/net/asio/adc_netservice_asio.h index 604a378..8575ed8 100644 --- a/net/asio/adc_netservice_asio.h +++ b/net/asio/adc_netservice_asio.h @@ -758,12 +758,10 @@ public: } - template - static void formatError(std::error_code err, - OutputItT out_iter, - FormatT fmt = "{} (Err category: {}) (Err msg: {})") + static void formatError(std::error_code err, std::string& result_str) { - std::format_to(out_iter, fmt, err.value(), err.category().name(), err.message()); + std::format_to(std::back_inserter(result_str), "{} (Err category: {}) (Err msg: {})", err.value(), + err.category().name(), err.message()); } protected: