From 334d81a1abd6a9bcbd6815ab9ec07c7a2fdcdf37 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 19 Feb 2020 16:52:50 +0100 Subject: [PATCH] SDK: Unsubscribe in the Topology destructor --- fairmq/sdk/Topology.h | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/fairmq/sdk/Topology.h b/fairmq/sdk/Topology.h index 937ceb1e..e6f6ee99 100644 --- a/fairmq/sdk/Topology.h +++ b/fairmq/sdk/Topology.h @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -250,11 +251,18 @@ class BasicTopology : public AsioBase BasicTopology(BasicTopology&&) = default; BasicTopology& operator=(BasicTopology&&) = default; + void UnsubscribeFromStateChanges() + { + using namespace fair::mq::sdk::cmd; + + fDDSSession.SendCommand(Cmds(make()).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() { - - - + UnsubscribeFromStateChanges(); std::lock_guard lk(fMtx); fDDSSession.UnsubscribeFromCommands();