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