FIX: Updated the use of a function handle

This commit is contained in:
Henry Winkel
2023-08-10 17:17:27 +02:00
parent c7fea6f5cc
commit 1c35c0cf67
2 changed files with 15 additions and 13 deletions

View File

@@ -46,7 +46,7 @@ namespace DirectCommunication
std::atomic_bool isConnected = false; std::atomic_bool isConnected = false;
std::function<void(std::string)> MessageHandle_ = nullptr; std::function<void(std::string)> MessageHandle_ = nullptr;
std::atomic_bool useHandl_ = false;;
WHISPER::threadSafeQueue<std::string> receivedMessages_; WHISPER::threadSafeQueue<std::string> receivedMessages_;

View File

@@ -35,19 +35,15 @@ namespace DirectCommunication
DirectCommunicationClient::~DirectCommunicationClient() DirectCommunicationClient::~DirectCommunicationClient()
{ {
sendMessage("CLOSE"); this->disconnect();
stopWorker_ = true;
Worker_.join();
socket_.close();
isConnected = false;
} }
void DirectCommunicationClient::disconnect() void DirectCommunicationClient::disconnect()
{ {
sendMessage("CLOSE"); sendMessage("CLOSE");
useHandl_ = false;
MessageHandle_ = nullptr;
stopWorker_ = true; stopWorker_ = true;
Worker_.join(); Worker_.join();
@@ -59,6 +55,7 @@ namespace DirectCommunication
void DirectCommunicationClient::registerMessageCallback(std::function<void(std::string)> MessageHandle) void DirectCommunicationClient::registerMessageCallback(std::function<void(std::string)> MessageHandle)
{ {
MessageHandle_ = MessageHandle; MessageHandle_ = MessageHandle;
useHandl_ = true;
} }
void DirectCommunicationClient::sendMessage(std::string msg) void DirectCommunicationClient::sendMessage(std::string msg)
@@ -102,14 +99,19 @@ namespace DirectCommunication
}else }else
{ {
if (MessageHandle_ != nullptr) if (MessageHandle_ == nullptr)
{ {
auto i = std::async(std::launch::async, MessageHandle_, msg.to_string()); receivedMessages_.addElement(msg.to_string());
// MessageHandle_(msg.to_string()); // MessageHandle_(msg.to_string());
} }
else else
{ {
receivedMessages_.addElement(msg.to_string()); if (useHandl_ == true)
{
auto i = std::async(std::launch::async, MessageHandle_, msg.to_string());
}
} }
} }