FIX: fixed issue that no address was set and change to that the callback is only called on a received message

This commit is contained in:
Henry Winkel
2023-11-01 09:16:59 +01:00
parent 3aab7acd50
commit b896455a86

View File

@@ -60,7 +60,7 @@ void InternalUDPListener::connect()
receiverSocket_ = std::make_shared<zmq::socket_t>(ctx,zmq::socket_type::dish); receiverSocket_ = std::make_shared<zmq::socket_t>(ctx,zmq::socket_type::dish);
std::string portAsString = std::to_string(port_); std::string portAsString = std::to_string(port_);
receiverSocket_->bind("udp://*:"+portAsString); receiverSocket_->bind("udp://"+address_+":"+portAsString);
///used to set a custom time out to the socket ///used to set a custom time out to the socket
receiverSocket_->set(zmq::sockopt::rcvtimeo,100); receiverSocket_->set(zmq::sockopt::rcvtimeo,100);
} }
@@ -88,14 +88,17 @@ void InternalUDPListener::listen()
res = receiverSocket_->recv(msg,zmq::recv_flags::none); res = receiverSocket_->recv(msg,zmq::recv_flags::none);
// std::string message = msg.to_string(); // std::string message = msg.to_string();
if (useHandl_ == true) if(res.has_value())
{ {
auto i = std::async(std::launch::async, MessageHandle_, msg.to_string()); if (useHandl_ == true)
} else if(receiverQueue_ != nullptr) {
{ auto i = std::async(std::launch::async, MessageHandle_, msg.to_string());
WHISPER::Message receivedMessage(msg.to_string()); } else if(receiverQueue_ != nullptr)
receiverQueue_->addElement(receivedMessage); {
} WHISPER::Message receivedMessage(msg.to_string());
receiverQueue_->addElement(receivedMessage);
}
}
} }
listening_ = false; listening_ = false;