SDK: Unsubscribe in the Topology destructor

This commit is contained in:
Alexey Rybalchenko
2020-02-19 16:52:50 +01:00
committed by Dennis Klein
parent c1719eb285
commit 334d81a1ab

View File

@@ -39,6 +39,7 @@
#include <set> #include <set>
#include <stdexcept> #include <stdexcept>
#include <string> #include <string>
#include <thread>
#include <unordered_map> #include <unordered_map>
#include <utility> #include <utility>
#include <vector> #include <vector>
@@ -250,11 +251,18 @@ class BasicTopology : public AsioBase<Executor, Allocator>
BasicTopology(BasicTopology&&) = default; BasicTopology(BasicTopology&&) = default;
BasicTopology& operator=(BasicTopology&&) = default; BasicTopology& operator=(BasicTopology&&) = default;
void UnsubscribeFromStateChanges()
{
using namespace fair::mq::sdk::cmd;
fDDSSession.SendCommand(Cmds(make<UnsubscribeFromStateChange>()).Serialize());
// give dds a chance to complete request, TODO: track each individual task and its subscription status
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
~BasicTopology() ~BasicTopology()
{ {
UnsubscribeFromStateChanges();
std::lock_guard<std::mutex> lk(fMtx); std::lock_guard<std::mutex> lk(fMtx);
fDDSSession.UnsubscribeFromCommands(); fDDSSession.UnsubscribeFromCommands();