tdaq-develop-2025-02-12
ECLSupervisor.h
1 #ifndef _ots_ECLSupervisor_h
2 #define _ots_ECLSupervisor_h
3 
4 #include "otsdaq/FiniteStateMachine/RunControlStateMachine.h"
5 #include "otsdaq/SOAPUtilities/SOAPMessenger.h"
6 #include "otsdaq/WebUsersUtilities/RemoteWebUsers.h"
7 
8 #pragma GCC diagnostic push
9 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
10 #pragma GCC diagnostic ignored "-Wunused-variable"
11 #pragma GCC diagnostic ignored "-Wunused-parameter"
12 #if __GNUC__ >= 8
13 #pragma GCC diagnostic ignored "-Wcatch-value"
14 #endif
15 
16 #include <xdaq/Application.h>
17 #pragma GCC diagnostic pop
18 #include "otsdaq/Macros/XDAQApplicationMacros.h"
19 
20 #pragma GCC diagnostic push
21 #pragma GCC diagnostic ignored "-Wunknown-pragmas"
22 #include <cgicc/HTMLClasses.h>
23 #include <cgicc/HTMLDoctype.h>
24 #include <cgicc/HTTPCookie.h>
25 #include <cgicc/HTTPHeader.h>
26 #include <xgi/Method.h> //for cgicc::Cgicc
27 #pragma GCC diagnostic pop
28 
29 #include <chrono>
30 #include <map>
31 #include <string>
32 #include "otsdaq/CoreSupervisors/CoreSupervisorBase.h"
33 
34 #include "otsdaq-utilities/ECLWriter/ECLConnection.h"
35 
36 // clang-format off
37 namespace ots
38 {
39 class ConfigurationManager;
40 class TableGroupKey;
41 
42 class ECLSupervisor : public CoreSupervisorBase
43 {
44  public:
45  XDAQ_INSTANTIATOR();
46 
47  ECLSupervisor (xdaq::ApplicationStub* s);
48  virtual ~ECLSupervisor (void);
49  void init (void);
50  void destroy (void);
51 
52 
53  virtual void defaultPage (xgi::Input* in, xgi::Output* out) override;
54  static std::string getIconHeaderString (void);
55  virtual void request (const std::string& requestType,
56  cgicc::Cgicc& cgiIn,
57  HttpXmlDocument& xmlOut,
58  const WebUsers::RequestUserInfo& userInfo) override;
64  virtual void setSupervisorPropertyDefaults (void) override;
65  virtual void forceSupervisorPropertyValues (void) override;
66 
67  xoap::MessageReference MakeSystemLogEntry (xoap::MessageReference msg);
68 
69  private:
70 
71  void getCategories (HttpXmlDocument* xmldoc = 0, std::ostringstream* out = 0);
72  void webUserSetActiveCategory (std::string category, HttpXmlDocument* xmldoc = 0);
73  void refreshLogbook (time_t date,
74  size_t duration,
75  HttpXmlDocument* xmldoc = 0,
76  std::ostringstream* out = 0,
77  std::string categoryFilter = "");
78 
79  std::string ECLUser_;
80  std::string ECLHost_;
81  std::string ECLPwd_;
82  std::string ECLCategory_;
83  std::string CategoryName_;
84  int64_t timezoneHourOffset_ = 0;
85 
86  std::unique_ptr<ECLConnection> eclConn_;
87 
88  const std::string EscapeECLString (const std::string& input = "");
89 };
90 }
91 // clang-format on
92 
93 #endif
virtual void forceSupervisorPropertyValues(void) override
override to force supervisor property values (and ignore user settings)
xoap::MessageReference MakeSystemLogEntry(xoap::MessageReference msg)
virtual void setSupervisorPropertyDefaults(void) override
override to control supervisor specific defaults
virtual void request(const std::string &requestType, cgicc::Cgicc &cgiIn, HttpXmlDocument &xmlOut, const WebUsers::RequestUserInfo &userInfo) override