otsdaq  3.03.00
ARTDAQOnlineMonitorSupervisor.h
1 #ifndef _ots_ARTDAQOnlineMonitorSupervisor_h
2 #define _ots_ARTDAQOnlineMonitorSupervisor_h
3 
4 #include "otsdaq/CoreSupervisors/CoreSupervisorBase.h"
5 
6 #include <memory>
7 #include <set>
8 #include <string>
9 #include <thread>
10 
11 namespace ots
12 {
14 {
15  public:
16  XDAQ_INSTANTIATOR();
17 
18  ARTDAQOnlineMonitorSupervisor(xdaq::ApplicationStub* s);
19  virtual ~ARTDAQOnlineMonitorSupervisor(void);
20  void init(void);
21  void destroy(void);
22 
23  virtual void transitionConfiguring(toolbox::Event::Reference event) override;
24  virtual void transitionHalting(toolbox::Event::Reference event) override;
25  virtual void transitionInitializing(toolbox::Event::Reference event) override;
26  virtual void transitionPausing(toolbox::Event::Reference event) override;
27  virtual void transitionResuming(toolbox::Event::Reference event) override;
28  virtual void transitionStarting(toolbox::Event::Reference event) override;
29  virtual void transitionStopping(toolbox::Event::Reference event) override;
30  virtual void enteringError(toolbox::Event::Reference event) override;
31 
32  private:
33  void RunArt(const std::string& config_file,
34  const std::shared_ptr<std::atomic<pid_t>>& pid_out);
35 
36  void StartArtProcess(const std::string& config_file);
37 
38  void ShutdownArtProcess();
39 
40  const std::string supervisorContextUID_;
41  const std::string supervisorApplicationUID_;
42  const std::string supervisorConfigurationPath_;
43  std::string config_file_name_;
44  std::shared_ptr<std::atomic<pid_t>> art_pid_;
45  std::atomic<bool> restart_art_;
46  bool should_restart_art_;
47  int minimum_art_lifetime_s_{5};
48  int partition_;
49  int om_rank_;
50 };
51 } // namespace ots
52 #endif // _ots_ARTDAQOnlineMonitorSupervisor_h
virtual void transitionHalting(toolbox::Event::Reference event) override
virtual void transitionInitializing(toolbox::Event::Reference event) override