From 82a891b0cd47fe19ca2d896ffde992b4dea305fb Mon Sep 17 00:00:00 2001 From: Henry Winkel Date: Fri, 27 Oct 2023 14:17:58 +0200 Subject: [PATCH] ADD: added new constructor --- include/WHISPER/InternalUDPListener.hpp | 10 ++++------ src/WHISPER/InternalUDPListener.cpp | 20 ++++++++++++++++---- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/include/WHISPER/InternalUDPListener.hpp b/include/WHISPER/InternalUDPListener.hpp index 12a272c..908ab49 100644 --- a/include/WHISPER/InternalUDPListener.hpp +++ b/include/WHISPER/InternalUDPListener.hpp @@ -21,14 +21,14 @@ namespace WHISPER { public: - InternalUDPListener(std::uint16_t port, std::string address = "*"); + InternalUDPListener(std::uint16_t port); + InternalUDPListener(std::string address, std::uint16_t port); + ~InternalUDPListener(); - [[DEPRECATED]] + [[deprecated]] void connect(std::shared_ptr> receiver); void connect(); - void addReceiverQueue(std::shared_ptr> receiver); - void start(); void stop(); @@ -41,9 +41,7 @@ namespace WHISPER { private: - /// @brief the address to listen to (default: "*") std::string address_; - /// @brief the port to listen to std::uint16_t port_; //zeromq io contex zmq::context_t ctx; diff --git a/src/WHISPER/InternalUDPListener.cpp b/src/WHISPER/InternalUDPListener.cpp index 013417d..d4ec6f8 100644 --- a/src/WHISPER/InternalUDPListener.cpp +++ b/src/WHISPER/InternalUDPListener.cpp @@ -9,10 +9,15 @@ namespace WHISPER { -InternalUDPListener::InternalUDPListener(std::uint16_t port, std::string address):address_(address) +InternalUDPListener::InternalUDPListener(std::uint16_t port):address_("*") { port_ = checkPort(port); } +InternalUDPListener::InternalUDPListener(std::string address, std::uint16_t port):address_(address) +{ + port_ = checkPort(port); +} + InternalUDPListener::~InternalUDPListener() { @@ -29,7 +34,7 @@ InternalUDPListener::~InternalUDPListener() void InternalUDPListener::connect(std::shared_ptr> receiver) { - receiverQueue_ = receiver; + receiverQueue_ = receiver; if (receiverSocket_ == nullptr) { @@ -55,7 +60,7 @@ void InternalUDPListener::connect() receiverSocket_ = std::make_shared(ctx,zmq::socket_type::dish); std::string portAsString = std::to_string(port_); - receiverSocket_->bind("udp://"+address_+":"+portAsString); + receiverSocket_->bind("udp://*:"+portAsString); ///used to set a custom time out to the socket receiverSocket_->set(zmq::sockopt::rcvtimeo,100); } @@ -123,7 +128,14 @@ void InternalUDPListener::stop() void InternalUDPListener::subscribe(WHISPER::MsgTopics topic) { subscribedTopics.push_back(topic); - receiverSocket_->join(WHISPER::MsgTopicsMap[topic].c_str()); + LOG_S(WARNING)<< WHISPER::MsgTopicsMap[topic].c_str(); + try { + + receiverSocket_->join(WHISPER::MsgTopicsMap[topic].c_str()); + } catch (const std::exception& e) + { + LOG_S(ERROR)<