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();