otsdaq_utilities  v2_04_02
ControlsDashboardSupervisor.h
1 #ifndef _ots_ControlsDashboardSupervisor_h_
2 #define _ots_ControlsDashboardSupervisor_h_
3 
4 #include "otsdaq/CoreSupervisors/CoreSupervisorBase.h"
5 
6 //#include "otsdaq-utilities/SlowControlsInterfacePlugins/EpicsInterface.h"
7 //#include "EpicsInterface.h.bkup"
8 
9 namespace ots
10 {
11 class SlowControlsVInterface;
12 class ConfigurationManager;
13 
14 // ControlsDashboardSupervisor
15 // This class handles the management of slow controls interface plugins, as well as the
16 // user web interface
17 class ControlsDashboardSupervisor : public CoreSupervisorBase
18 {
19  public:
20  XDAQ_INSTANTIATOR();
21 
22  ControlsDashboardSupervisor(xdaq::ApplicationStub* s);
23  virtual ~ControlsDashboardSupervisor(void);
24 
25  void init(void);
26  void destroy(void);
27 
28  virtual void request(const std::string& requestType,
29  cgicc::Cgicc& cgiIn,
30  HttpXmlDocument& xmlOut,
31  const WebUsers::RequestUserInfo& userInfo) override;
32  virtual void handleRequest(const std::string Command,
33  HttpXmlDocument& xmlOut,
34  cgicc::Cgicc& cgiIn,
35  const WebUsers::RequestUserInfo& userInfo);
36 
37  virtual void setSupervisorPropertyDefaults(void) override;
38  virtual void forceSupervisorPropertyValues(void) override; // override to force
39  // supervisor property
40  // values (and ignore user
41  // settings)
42 
43  void Poll(cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut, std::string UID);
44  void GetPVSettings(cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut);
45  void GetPVArchiverData(cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut);
46  void GetUserPermissions(cgicc::Cgicc& cgiIn,
47  HttpXmlDocument& xmlOut,
48  const WebUsers::RequestUserInfo& userInfo);
49  void GenerateUID(cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut, std::string pvlist);
50  void GetList(cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut);
51  void GetPages(cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut);
52  void loadPage(cgicc::Cgicc& cgiIn,
53  HttpXmlDocument& xmlOut,
54  std::string page,
55  const WebUsers::RequestUserInfo& userInfo);
56  void SaveControlsPage(cgicc::Cgicc& cgiIn,
57  HttpXmlDocument& xmlOut,
58  const WebUsers::RequestUserInfo& userInfo);
59  void Subscribe(cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut);
60  void Unsubscribe(cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut);
61 
62  // Utilities, eventually to be moved
63  bool isDir(std::string dir);
64  void listFiles(std::string baseDir, bool recursive, std::vector<std::string>* pages);
65 
66  private:
67  // SlowControlsInterface
68  // AllSupervisorInfo allSupervisorInfo_;
69  // EpicsInterface * interface_;
70 
71  // ConfigurationManager* theConfigurationManager_;
72  // RemoteWebUsers theRemoteWebUsers_;
73  // std::string username;
74  std::map<int, std::set<std::string>> pvDependencyLookupMap_;
75  int UID_;
76 
77  public:
78  SlowControlsVInterface* interface_;
79  std::mutex pluginBusyMutex_;
80 };
81 }
82 
83 #endif