From f17566cba09db26b745600249fd449e1fac7bb2d Mon Sep 17 00:00:00 2001 From: hwinkel Date: Tue, 26 Sep 2023 11:05:50 +0200 Subject: [PATCH] ADD: added usage without a receiver queue --- include/WHISPER/InternalUDPListener.hpp | 5 +++ src/WHISPER/InternalUDPListener.cpp | 42 +++++++++++++++++++------ 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/include/WHISPER/InternalUDPListener.hpp b/include/WHISPER/InternalUDPListener.hpp index cc9004d..12a272c 100644 --- a/include/WHISPER/InternalUDPListener.hpp +++ b/include/WHISPER/InternalUDPListener.hpp @@ -23,7 +23,12 @@ namespace WHISPER { public: InternalUDPListener(std::uint16_t port, std::string address = "*"); ~InternalUDPListener(); + [[DEPRECATED]] void connect(std::shared_ptr> receiver); + void connect(); + + void addReceiverQueue(std::shared_ptr> receiver); + void start(); void stop(); diff --git a/src/WHISPER/InternalUDPListener.cpp b/src/WHISPER/InternalUDPListener.cpp index ed3d197..013417d 100644 --- a/src/WHISPER/InternalUDPListener.cpp +++ b/src/WHISPER/InternalUDPListener.cpp @@ -33,7 +33,7 @@ void InternalUDPListener::connect(std::shared_ptr(ctx,zmq::socket_type::dish); std::string portAsString = std::to_string(port_); @@ -46,6 +46,30 @@ void InternalUDPListener::connect(std::shared_ptr(ctx,zmq::socket_type::dish); + + std::string portAsString = std::to_string(port_); + receiverSocket_->bind("udp://"+address_+":"+portAsString); + ///used to set a custom time out to the socket + receiverSocket_->set(zmq::sockopt::rcvtimeo,100); + } + subscribe(WHISPER::MsgTopics::MANAGEMENT); + + start(); +} + +void InternalUDPListener::addReceiverQueue(std::shared_ptr> receiver) +{ + receiverQueue_ = receiver; +} + + void InternalUDPListener::listen() { listening_ = true; @@ -59,14 +83,14 @@ void InternalUDPListener::listen() res = receiverSocket_->recv(msg,zmq::recv_flags::none); // std::string message = msg.to_string(); - if (useHandl_ == true) - { - auto i = std::async(std::launch::async, MessageHandle_, msg.to_string()); - } else - { - WHISPER::Message receivedMessage(msg.to_string()); - receiverQueue_->addElement(receivedMessage); - } + if (useHandl_ == true) + { + auto i = std::async(std::launch::async, MessageHandle_, msg.to_string()); + } else if(receiverQueue_ != nullptr) + { + WHISPER::Message receivedMessage(msg.to_string()); + receiverQueue_->addElement(receivedMessage); + } } listening_ = false;