diff --git a/core-writer/include/UdpRecvModule.hpp b/core-writer/include/UdpRecvModule.hpp index 0be6633..af53abc 100644 --- a/core-writer/include/UdpRecvModule.hpp +++ b/core-writer/include/UdpRecvModule.hpp @@ -19,7 +19,7 @@ class UdpRecvModule { public: UdpRecvModule(RingBuffer& ring_buffer); - virtual ~UdpRecvModule() = default; + virtual ~UdpRecvModule(); void start_recv( const uint16_t udp_port, diff --git a/core-writer/src/module/UdpRecvModule.cpp b/core-writer/src/module/UdpRecvModule.cpp index ed9ed9a..ddb2527 100644 --- a/core-writer/src/module/UdpRecvModule.cpp +++ b/core-writer/src/module/UdpRecvModule.cpp @@ -12,6 +12,11 @@ UdpRecvModule::UdpRecvModule(RingBuffer& ring_buffer) : } +UdpRecvModule::~UdpRecvModule() +{ + stop_recv(); +} + void UdpRecvModule::start_recv( const uint16_t udp_port, const size_t udp_buffer_n_bytes) @@ -49,6 +54,23 @@ void UdpRecvModule::start_recv( udp_buffer_n_bytes); } +void UdpRecvModule::stop_recv() +{ +#ifdef DEBUG_OUTPUT + using namespace date; + using namespace chrono; + cout << "[" << system_clock::now() << "]"; + cout << "UdpRecvModule::stop_recv"; + cout << " Stop receiving." << endl; +#endif + + is_receiving_ = false; + + if (receiving_thread_.joinable()) { + receiving_thread_.join(); + } +} + void UdpRecvModule::receive_thread( const uint16_t udp_port, const size_t udp_buffer_n_bytes)