diff --git a/fairmq/FairMQStateMachine.h b/fairmq/FairMQStateMachine.h index a79d64e5..8c2b29aa 100644 --- a/fairmq/FairMQStateMachine.h +++ b/fairmq/FairMQStateMachine.h @@ -90,8 +90,8 @@ struct FairMQFSM : public msmf::state_machine_def , fWorkAvailable(false) , fStateChangeSignal() , fStateChangeSignalsMap() - , fWorkerThread() , fTerminationRequested(false) + , fWorkerThread() {} virtual ~FairMQFSM() diff --git a/fairmq/devices/FairMQBenchmarkSampler.cxx b/fairmq/devices/FairMQBenchmarkSampler.cxx index 2ab7cbf9..30549243 100644 --- a/fairmq/devices/FairMQBenchmarkSampler.cxx +++ b/fairmq/devices/FairMQBenchmarkSampler.cxx @@ -108,7 +108,7 @@ void FairMQBenchmarkSampler::Run() auto tEnd = chrono::high_resolution_clock::now(); - LOG(INFO) << "Leaving RUNNING state. Done " << fNumIterations << " iterations in " << chrono::duration(tEnd - tStart).count() << "ms."; + LOG(INFO) << "Done " << fNumIterations << " iterations in " << chrono::duration(tEnd - tStart).count() << "ms."; } diff --git a/fairmq/options/runConfigEx.cxx b/fairmq/options/runConfigEx.cxx index 8926f161..6ac7c8ea 100644 --- a/fairmq/options/runConfigEx.cxx +++ b/fairmq/options/runConfigEx.cxx @@ -89,7 +89,7 @@ int main(int argc, char** argv) // config.UpdateChannelMap(map2); MyDevice device; - device.CatchSignals(); + // device.CatchSignals(); device.SetConfig(config); // getting as string and conversion helpers diff --git a/fairmq/plugins/DDS/DDS.cxx b/fairmq/plugins/DDS/DDS.cxx index 84e92a05..c6e82321 100644 --- a/fairmq/plugins/DDS/DDS.cxx +++ b/fairmq/plugins/DDS/DDS.cxx @@ -34,6 +34,7 @@ DDS::DDS(const string name, const Plugin::Version version, const string maintain , fEvents() , fEventsMutex() , fNewEvent() + , fDeviceTerminationRequested(false) { try { @@ -67,6 +68,10 @@ auto DDS::HandleControl() -> void fEvents.push(newState); } fNewEvent.notify_one(); + if (newState == DeviceState::Exiting) + { + fDeviceTerminationRequested = true; + } }); ChangeDeviceState(DeviceStateTransition::InitDevice); @@ -100,7 +105,7 @@ auto DDS::HandleControl() -> void // wait until stop signal unique_lock lock(fStopMutex); - while (!DeviceTerminated()) + while (!fDeviceTerminationRequested) { fStopCondition.wait_for(lock, chrono::seconds(1)); } @@ -129,7 +134,7 @@ auto DDS::FillChannelContainers() -> void if (GetProperty(methodKey) == "bind") { fBindingChans.insert(make_pair(c.first, vector())); - for (unsigned int i = 0; i < c.second; ++i) + for (int i = 0; i < c.second; ++i) { fBindingChans.at(c.first).push_back(GetProperty(addressKey)); } @@ -138,7 +143,7 @@ auto DDS::FillChannelContainers() -> void { fConnectingChans.insert(make_pair(c.first, DDSConfig())); LOG(DEBUG) << "preparing to connect: " << c.first << " with " << c.second << " sub-channels."; - for (unsigned int i = 0; i < c.second; ++i) + for (int i = 0; i < c.second; ++i) { fConnectingChans.at(c.first).fSubChannelAddresses.push_back(string()); } diff --git a/fairmq/plugins/DDS/DDS.h b/fairmq/plugins/DDS/DDS.h index 1253b0c5..88a757bc 100644 --- a/fairmq/plugins/DDS/DDS.h +++ b/fairmq/plugins/DDS/DDS.h @@ -74,6 +74,8 @@ class DDS : public Plugin std::queue fEvents; std::mutex fEventsMutex; std::condition_variable fNewEvent; + + std::atomic fDeviceTerminationRequested; }; REGISTER_FAIRMQ_PLUGIN( diff --git a/fairmq/test/plugin_services/Fixture.h b/fairmq/test/plugin_services/Fixture.h index e2dc9e21..31665389 100644 --- a/fairmq/test/plugin_services/Fixture.h +++ b/fairmq/test/plugin_services/Fixture.h @@ -36,7 +36,8 @@ inline auto control(std::shared_ptr device) -> void struct PluginServices : ::testing::Test { PluginServices() - : mDevice{std::make_shared()} + : mConfig() + , mDevice{std::make_shared()} , mServices{&mConfig, mDevice} { mDevice->SetTransport("zeromq");