9 #ifndef FAIR_MQ_PLUGINS_CONTROL 10 #define FAIR_MQ_PLUGINS_CONTROL 12 #include <fairmq/Plugin.h> 13 #include <fairmq/Version.h> 15 #include <condition_variable> 38 auto InteractiveMode() -> void;
39 static auto PrintInteractiveHelp() -> void;
40 auto StaticMode() -> void;
42 auto SignalHandler() -> void;
43 auto RunShutdownSequence() -> void;
44 auto RunStartupSequence() -> void;
45 auto EmptyEventQueue() -> void;
47 std::thread fControllerThread;
48 std::thread fSignalHandlerThread;
49 std::queue<DeviceState> fEvents;
50 std::mutex fEventsMutex;
51 std::mutex fControllerMutex;
52 std::condition_variable fNewEvent;
53 std::atomic<bool> fDeviceShutdownRequested;
54 std::atomic<bool> fDeviceHasShutdown;
55 std::atomic<bool> fPluginShutdownRequested;
57 struct DeviceErrorState : std::runtime_error {
using std::runtime_error::runtime_error; };
60 auto ControlPluginProgramOptions() -> Plugin::ProgOptions;
62 REGISTER_FAIRMQ_PLUGIN(
67 FAIRMQ_VERSION_PATCH}),
68 "FairRootGroup <fairroot@gsi.de>",
69 "https://github.com/FairRootGroup/FairRoot",
70 ControlPluginProgramOptions
Facilitates communication between devices and plugins.
Definition: PluginServices.h:38
Base class for FairMQ plugins.
Definition: Plugin.h:38
DeviceState
See https://github.com/FairRootGroup/FairRoot/blob/dev/fairmq/docs/Device.md#13-state-machine.
Definition: PluginServices.h:60
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23