From cd83efadea6fdda90ae1263f0bec2a8e75dabbc1 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Tue, 24 Mar 2020 14:37:43 +0100 Subject: [PATCH] DDS plugin: refactor to load DDS task id only once --- fairmq/plugins/DDS/DDS.cxx | 18 +++++++++--------- fairmq/plugins/DDS/DDS.h | 1 + 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/fairmq/plugins/DDS/DDS.cxx b/fairmq/plugins/DDS/DDS.cxx index a8c03ca5..955a2b18 100644 --- a/fairmq/plugins/DDS/DDS.cxx +++ b/fairmq/plugins/DDS/DDS.cxx @@ -37,6 +37,7 @@ DDS::DDS(const string& name, const string& homepage, PluginServices* pluginServices) : Plugin(name, version, maintainer, homepage, pluginServices) + , fDDSTaskId(dds::env_prop()) , fCurrentState(DeviceState::Idle) , fLastState(DeviceState::Idle) , fDeviceTerminationRequested(false) @@ -112,7 +113,7 @@ DDS::DDS(const string& name, for (auto subscriberId : fStateChangeSubscribers) { LOG(debug) << "Publishing state-change: " << fLastState << "->" << newState << " to " << subscriberId; - Cmds cmds(make(id, dds::env_prop(), fLastState, fCurrentState)); + Cmds cmds(make(id, fDDSTaskId, fLastState, fCurrentState)); fDDS.Send(cmds.Serialize(), to_string(subscriberId)); } }); @@ -143,10 +144,10 @@ auto DDS::StartWorkerThread() -> void auto DDS::WaitForExitingAck() -> void { unique_lock lock(fStateChangeSubscriberMutex); - fExitingAcked.wait_for( - lock, - chrono::milliseconds(GetProperty("wait-for-exiting-ack-timeout")), - [this]() { return fExitingAckedByLastExternalController; }); + auto timeout = GetProperty("wait-for-exiting-ack-timeout"); + fExitingAcked.wait_for(lock, chrono::milliseconds(timeout), [this]() { + return fExitingAckedByLastExternalController; + }); } auto DDS::FillChannelContainers() -> void @@ -321,11 +322,11 @@ auto DDS::SubscribeForCustomCommands() -> void Transition transition = static_cast(*cmd).GetTransition(); if (ChangeDeviceState(transition)) { cmd::Cmds outCmds( - cmd::make(id, dds::env_prop(), cmd::Result::Ok, transition)); + cmd::make(id, fDDSTaskId, cmd::Result::Ok, transition)); fDDS.Send(outCmds.Serialize(), to_string(senderId)); } else { sdk::cmd::Cmds outCmds( - cmd::make(id, dds::env_prop(), cmd::Result::Failure, transition)); + cmd::make(id, fDDSTaskId, cmd::Result::Failure, transition)); fDDS.Send(outCmds.Serialize(), to_string(senderId)); } { @@ -359,8 +360,7 @@ auto DDS::SubscribeForCustomCommands() -> void cmd::Cmds outCmds( cmd::make(id, cmd::Result::Ok), - cmd::make( - id, dds::env_prop(), fLastState, fCurrentState)); + cmd::make(id, fDDSTaskId, fLastState, fCurrentState)); fDDS.Send(outCmds.Serialize(), to_string(senderId)); } break; diff --git a/fairmq/plugins/DDS/DDS.h b/fairmq/plugins/DDS/DDS.h index 9db87eaa..4b357dfd 100644 --- a/fairmq/plugins/DDS/DDS.h +++ b/fairmq/plugins/DDS/DDS.h @@ -144,6 +144,7 @@ class DDS : public Plugin auto SubscribeForCustomCommands() -> void; DDSSubscription fDDS; + size_t fDDSTaskId; std::unordered_map> fBindingChans; std::unordered_map fConnectingChans;