mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-14 09:06:47 +00:00
DDS plugin: refactor to load DDS task id only once
This commit is contained in:
parent
38eb9d22e4
commit
cd83efadea
|
@ -37,6 +37,7 @@ DDS::DDS(const string& name,
|
||||||
const string& homepage,
|
const string& homepage,
|
||||||
PluginServices* pluginServices)
|
PluginServices* pluginServices)
|
||||||
: Plugin(name, version, maintainer, homepage, pluginServices)
|
: Plugin(name, version, maintainer, homepage, pluginServices)
|
||||||
|
, fDDSTaskId(dds::env_prop<dds::task_id>())
|
||||||
, fCurrentState(DeviceState::Idle)
|
, fCurrentState(DeviceState::Idle)
|
||||||
, fLastState(DeviceState::Idle)
|
, fLastState(DeviceState::Idle)
|
||||||
, fDeviceTerminationRequested(false)
|
, fDeviceTerminationRequested(false)
|
||||||
|
@ -112,7 +113,7 @@ DDS::DDS(const string& name,
|
||||||
for (auto subscriberId : fStateChangeSubscribers) {
|
for (auto subscriberId : fStateChangeSubscribers) {
|
||||||
LOG(debug) << "Publishing state-change: " << fLastState << "->" << newState << " to " << subscriberId;
|
LOG(debug) << "Publishing state-change: " << fLastState << "->" << newState << " to " << subscriberId;
|
||||||
|
|
||||||
Cmds cmds(make<StateChange>(id, dds::env_prop<dds::task_id>(), fLastState, fCurrentState));
|
Cmds cmds(make<StateChange>(id, fDDSTaskId, fLastState, fCurrentState));
|
||||||
fDDS.Send(cmds.Serialize(), to_string(subscriberId));
|
fDDS.Send(cmds.Serialize(), to_string(subscriberId));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -143,10 +144,10 @@ auto DDS::StartWorkerThread() -> void
|
||||||
auto DDS::WaitForExitingAck() -> void
|
auto DDS::WaitForExitingAck() -> void
|
||||||
{
|
{
|
||||||
unique_lock<mutex> lock(fStateChangeSubscriberMutex);
|
unique_lock<mutex> lock(fStateChangeSubscriberMutex);
|
||||||
fExitingAcked.wait_for(
|
auto timeout = GetProperty<unsigned int>("wait-for-exiting-ack-timeout");
|
||||||
lock,
|
fExitingAcked.wait_for(lock, chrono::milliseconds(timeout), [this]() {
|
||||||
chrono::milliseconds(GetProperty<unsigned int>("wait-for-exiting-ack-timeout")),
|
return fExitingAckedByLastExternalController;
|
||||||
[this]() { return fExitingAckedByLastExternalController; });
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
auto DDS::FillChannelContainers() -> void
|
auto DDS::FillChannelContainers() -> void
|
||||||
|
@ -321,11 +322,11 @@ auto DDS::SubscribeForCustomCommands() -> void
|
||||||
Transition transition = static_cast<cmd::ChangeState&>(*cmd).GetTransition();
|
Transition transition = static_cast<cmd::ChangeState&>(*cmd).GetTransition();
|
||||||
if (ChangeDeviceState(transition)) {
|
if (ChangeDeviceState(transition)) {
|
||||||
cmd::Cmds outCmds(
|
cmd::Cmds outCmds(
|
||||||
cmd::make<cmd::TransitionStatus>(id, dds::env_prop<dds::task_id>(), cmd::Result::Ok, transition));
|
cmd::make<cmd::TransitionStatus>(id, fDDSTaskId, cmd::Result::Ok, transition));
|
||||||
fDDS.Send(outCmds.Serialize(), to_string(senderId));
|
fDDS.Send(outCmds.Serialize(), to_string(senderId));
|
||||||
} else {
|
} else {
|
||||||
sdk::cmd::Cmds outCmds(
|
sdk::cmd::Cmds outCmds(
|
||||||
cmd::make<cmd::TransitionStatus>(id, dds::env_prop<dds::task_id>(), cmd::Result::Failure, transition));
|
cmd::make<cmd::TransitionStatus>(id, fDDSTaskId, cmd::Result::Failure, transition));
|
||||||
fDDS.Send(outCmds.Serialize(), to_string(senderId));
|
fDDS.Send(outCmds.Serialize(), to_string(senderId));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
@ -359,8 +360,7 @@ auto DDS::SubscribeForCustomCommands() -> void
|
||||||
|
|
||||||
cmd::Cmds outCmds(
|
cmd::Cmds outCmds(
|
||||||
cmd::make<cmd::StateChangeSubscription>(id, cmd::Result::Ok),
|
cmd::make<cmd::StateChangeSubscription>(id, cmd::Result::Ok),
|
||||||
cmd::make<cmd::StateChange>(
|
cmd::make<cmd::StateChange>(id, fDDSTaskId, fLastState, fCurrentState));
|
||||||
id, dds::env_prop<dds::task_id>(), fLastState, fCurrentState));
|
|
||||||
|
|
||||||
fDDS.Send(outCmds.Serialize(), to_string(senderId));
|
fDDS.Send(outCmds.Serialize(), to_string(senderId));
|
||||||
} break;
|
} break;
|
||||||
|
|
|
@ -144,6 +144,7 @@ class DDS : public Plugin
|
||||||
auto SubscribeForCustomCommands() -> void;
|
auto SubscribeForCustomCommands() -> void;
|
||||||
|
|
||||||
DDSSubscription fDDS;
|
DDSSubscription fDDS;
|
||||||
|
size_t fDDSTaskId;
|
||||||
|
|
||||||
std::unordered_map<std::string, std::vector<std::string>> fBindingChans;
|
std::unordered_map<std::string, std::vector<std::string>> fBindingChans;
|
||||||
std::unordered_map<std::string, DDSConfig> fConnectingChans;
|
std::unordered_map<std::string, DDSConfig> fConnectingChans;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user