otsdaq_utilities  v2_04_01
ECLSupervisor.h
1 #ifndef _ots_ECLSupervisor_h
2 #define _ots_ECLSupervisor_h
3 
4 #include "otsdaq-core/FiniteStateMachine/RunControlStateMachine.h"
5 #include "otsdaq-core/SOAPUtilities/SOAPMessenger.h"
6 #include "otsdaq-core/WebUsersUtilities/RemoteWebUsers.h"
7 
8 #include <xdaq/Application.h>
9 #include <xgi/Method.h>
10 #include "otsdaq-core/Macros/XDAQApplicationMacros.h"
11 
12 #include <cgicc/HTMLClasses.h>
13 #include <cgicc/HTMLDoctype.h>
14 #include <cgicc/HTTPCookie.h>
15 #include <cgicc/HTTPHeader.h>
16 
17 #include <chrono>
18 #include <map>
19 #include <string>
20 #include "otsdaq-core/CoreSupervisors/CoreSupervisorBase.h"
21 
22 namespace ots
23 {
24 class ConfigurationManager;
25 class TableGroupKey;
26 
27 class ECLSupervisor : public CoreSupervisorBase
28 {
29  public:
30  XDAQ_INSTANTIATOR();
31 
32  ECLSupervisor(xdaq::ApplicationStub* s);
33  virtual ~ECLSupervisor(void);
34  void init(void);
35  void destroy(void);
36 
37  void defaultPage(xgi::Input* in, xgi::Output* out);
38 
39  void transitionConfiguring(toolbox::Event::Reference e);
40  void transitionStarting(toolbox::Event::Reference e);
41  void transitionStopping(toolbox::Event::Reference e);
42  void transitionPausing(toolbox::Event::Reference e);
43  void transitionResuming(toolbox::Event::Reference e);
44  void enteringError(toolbox::Event::Reference e);
45 
46  xoap::MessageReference MakeSystemLogbookEntry(xoap::MessageReference msg);
47 
48  private:
49  ConfigurationManager* theConfigurationManager_;
50  const std::string supervisorContextUID_;
51  const std::string supervisorApplicationUID_;
52  const std::string supervisorConfigurationPath_;
53 
54  std::string ECLUser;
55  std::string ECLHost;
56  std::string ECLPwd;
57  std::string ExperimentName;
58  std::string run;
59  std::chrono::steady_clock::time_point run_start;
60  int duration_ms; // For paused runs, don't count time spend in pause state
61 
62  std::string EscapeECLString(std::string input = "");
63 
64  enum class WriteState
65  {
66  kStart,
67  kStop,
68  kPause,
69  kResume,
70  kError
71  };
72 
73  int Write(WriteState state);
74 };
75 }
76 
77 #endif