diff --git a/include/DirectCommunicationClient.hpp b/include/DirectCommunicationClient.hpp index 5931eb8..de9ddce 100644 --- a/include/DirectCommunicationClient.hpp +++ b/include/DirectCommunicationClient.hpp @@ -27,6 +27,7 @@ namespace DirectCommunication void sendMessage(std::string msg); std::string getLatestMessage(); + void disconnect(); void registerMessageCallback(std::function MessageHandle); diff --git a/src/DirectCommunicationClient.cpp b/src/DirectCommunicationClient.cpp index fd72725..25896b6 100644 --- a/src/DirectCommunicationClient.cpp +++ b/src/DirectCommunicationClient.cpp @@ -2,11 +2,13 @@ #include "zmq.hpp" +#include #include #include #include #include #include +#include namespace DirectCommunication @@ -34,12 +36,24 @@ namespace DirectCommunication DirectCommunicationClient::~DirectCommunicationClient() { sendMessage("CLOSE"); - isConnected = false; stopWorker_ = true; Worker_.join(); socket_.close(); + isConnected = false; + } + + void DirectCommunicationClient::disconnect() + { + sendMessage("CLOSE"); + + stopWorker_ = true; + Worker_.join(); + + socket_.close(); + isConnected = false; + } void DirectCommunicationClient::registerMessageCallback(std::function MessageHandle) @@ -89,8 +103,9 @@ namespace DirectCommunication }else { if (MessageHandle_ != nullptr) - { - MessageHandle_(msg.to_string()); + { + auto i = std::async(std::launch::async, MessageHandle_, msg.to_string()); + // MessageHandle_(msg.to_string()); } else {