From f14b4fdc103fc0f040364f945ccb5457054b9e66 Mon Sep 17 00:00:00 2001 From: "Timur A. Fatkhullin" Date: Wed, 30 Oct 2024 00:09:30 +0300 Subject: [PATCH] ... --- net/adc_device_netserver.h | 17 +++++++++++++---- tests/adc_asio_netserver_test.cpp | 5 +++++ tests/adc_netservice_test.cpp | 8 ++++---- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/net/adc_device_netserver.h b/net/adc_device_netserver.h index 3ef5347..f2deb60 100644 --- a/net/adc_device_netserver.h +++ b/net/adc_device_netserver.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "adc_device_netmsg.h" @@ -219,7 +220,7 @@ public: : _ident(), _netService(std::move(srv)), _serverPtr(srv_ptr), - _bindDevice(_serverPtr->_devices.size() ? _serverPtr->_devices[0] : AdcDeviceNetServer::nullDevice) + _bindDevice(srv_ptr->_devices.size() ? srv_ptr->_devices.begin()->second : AdcDeviceNetServer::nullDevice) { if constexpr (std::is_array_v>) { _ident = id; @@ -235,8 +236,10 @@ public: void start() { + auto self(this->shared_from_this()); + _netService.asyncReceive( - [this](std::error_code ec, message_t msg) { + [self, this](std::error_code ec, message_t msg) { if (ec) { stop(); } else { @@ -248,7 +251,7 @@ public: _netService.asyncSend( *msg_sptr, - [msg_sptr, this](std::error_code ec) { + [self, msg_sptr, this](std::error_code ec) { if (ec) { stop(); } else { @@ -360,7 +363,13 @@ public: }; - using AdcGenericNetServer::AdcGenericNetServer; + // using AdcGenericNetServer::AdcGenericNetServer; + template + AdcDeviceNetServer(const R& id) : AdcGenericNetServer(id), _devices() + { + } + + virtual ~AdcDeviceNetServer() = default; template , diff --git a/tests/adc_asio_netserver_test.cpp b/tests/adc_asio_netserver_test.cpp index f4709bc..5b55d8d 100644 --- a/tests/adc_asio_netserver_test.cpp +++ b/tests/adc_asio_netserver_test.cpp @@ -29,6 +29,10 @@ int main(int argc, char* argv[]) } asio::io_context io_ctx; + + asio::signal_set signals(io_ctx, SIGINT, SIGTERM); + signals.async_wait([&](std::error_code, int) { io_ctx.stop(); }); + adc::impl::AdcDeviceNetServerASIO server("TEST SRV", io_ctx); server.setupSignals(); @@ -63,6 +67,7 @@ int main(int argc, char* argv[]) return 127; } catch (const std::system_error& ex) { std::cerr << "\nAn error ocured: " << ex.what() << "\n"; + std::cerr << "Category: " << ex.code().category().name() << "; message: " << ex.code().message() << "\n"; return 128; } diff --git a/tests/adc_netservice_test.cpp b/tests/adc_netservice_test.cpp index 6097636..f5349b3 100644 --- a/tests/adc_netservice_test.cpp +++ b/tests/adc_netservice_test.cpp @@ -21,14 +21,14 @@ void receive(T srv) int main() { - using tr_p_t = asio ::ip::tcp; - // using tr_p_t = asio::local::stream_protocol; + // using tr_p_t = asio ::ip::tcp; + using tr_p_t = asio::local::stream_protocol; // using tr_p_t = asio::local::seq_packet_protocol; - // tr_p_t::endpoint ept_c(std::string("/tmp/AAA").insert(0, 1, '\0')); + tr_p_t::endpoint ept_c(std::string("/tmp/AAA").insert(0, 1, '\0')); // tr_p_t::endpoint ept_c("/tmp/AAA"); + // tr_p_t::endpoint ept_c(asio::ip::make_address_v4("0.0.0.0"), 9999); - tr_p_t::endpoint ept_c(asio::ip::make_address_v4("0.0.0.0"), 9999); std::cout << "ADDR: " << ept_c << "\n"; asio::io_context ctx;