tdaq-develop-2025-02-12
MacroMakerSupervisor.h
1 #ifndef _ots_MacroMakerSupervisor_h_
2 #define _ots_MacroMakerSupervisor_h_
3 
4 #include "otsdaq/CoreSupervisors/CoreSupervisorBase.h"
5 
6 namespace ots
7 {
12 class MacroMakerSupervisor : public CoreSupervisorBase
13 {
14  public:
15  XDAQ_INSTANTIATOR();
16 
17  MacroMakerSupervisor(xdaq::ApplicationStub* s);
18  virtual ~MacroMakerSupervisor(void);
19 
20  void init(void);
21  void destroy(void);
22 
23  virtual void request(const std::string& requestType,
24  cgicc::Cgicc& cgiIn,
25  HttpXmlDocument& xmlOut,
26  const WebUsers::RequestUserInfo& userInfo) override;
27 
28  virtual void forceSupervisorPropertyValues(void) override;
32 
33  private:
35  void generateURL(void);
36  void verification(xgi::Input* in, xgi::Output* out);
37  void requestIcons(xgi::Input* in, xgi::Output* out);
38  void tooltipRequest(xgi::Input* in, xgi::Output* out);
39  void requestWrapper(xgi::Input* in, xgi::Output* out);
42  static void RemoteControlWorkLoop(MacroMakerSupervisor* supervisorPtr);
43 
44  void handleRequest(const std::string Command,
45  HttpXmlDocument& xmldoc,
46  cgicc::Cgicc& cgi,
47  const WebUsers::RequestUserInfo& userInfo);
48 
49  xoap::MessageReference frontEndCommunicationRequest(xoap::MessageReference message);
50  xoap::MessageReference supervisorSequenceCheck(xoap::MessageReference message);
51 
52  void getFElist(HttpXmlDocument& xmldoc);
53  void getFEMacroList(HttpXmlDocument& xmldoc, const std::string& username);
54 
55  void writeData(HttpXmlDocument& xmldoc,
56  cgicc::Cgicc& cgi,
57  const std::string& username);
58  void readData(HttpXmlDocument& xmldoc,
59  cgicc::Cgicc& cgi,
60  const std::string& username);
61  void createMacro(HttpXmlDocument& xmldoc,
62  cgicc::Cgicc& cgi,
63  const std::string& username);
64  void loadMacro(const std::string& macroName,
65  std::string& macroString,
66  const std::string& username = "");
67  void loadMacros(HttpXmlDocument& xmldoc, const std::string& username);
68  void loadMacroNames(
69  const std::string& username,
70  std::pair<std::vector<std::string> /*public macros*/,
71  std::vector<std::string> /*private macros*/>& returnMacroNames);
72  void appendCommandToHistory(std::string command,
73  std::string Format,
74  std::string time,
75  std::string interfaces,
76  const std::string& username);
77  void appendCommandToHistory(std::string feClass,
78  std::string feUID,
79  std::string macroType,
80  std::string macroName,
81  std::string inputArgs,
82  std::string outputArgs,
83  bool saveOutputs,
84  const std::string& username);
85  void loadFEMacroSequences(HttpXmlDocument& xmldoc, const std::string& username);
86  void saveFEMacroSequence(cgicc::Cgicc& cgi, const std::string& username);
87  void getFEMacroSequence(HttpXmlDocument& xmldoc,
88  cgicc::Cgicc& cgi,
89  const std::string& username);
90  void runFEMacroSequence(HttpXmlDocument& xmldoc,
91  cgicc::Cgicc& cgi,
92  const std::string& username);
93  void deleteFEMacroSequence(cgicc::Cgicc& cgi, const std::string& username);
94  void loadHistory(HttpXmlDocument& xmldoc, const std::string& username);
95  void loadFEHistory(HttpXmlDocument& xmldoc, const std::string& username);
96  void deleteMacro(HttpXmlDocument& xmldoc,
97  cgicc::Cgicc& cgi,
98  const std::string& username);
99  void editMacro(HttpXmlDocument& xmldoc,
100  cgicc::Cgicc& cgi,
101  const std::string& username);
102  void clearHistory(const std::string& username);
103  void clearFEHistory(const std::string& username);
104  void exportMacro(HttpXmlDocument& xmldoc,
105  cgicc::Cgicc& cgi,
106  const std::string& username);
107  void exportFEMacro(HttpXmlDocument& xmldoc,
108  cgicc::Cgicc& cgi,
109  const std::string& username);
110  void runFEMacro(HttpXmlDocument& xmldoc,
111  cgicc::Cgicc& cgi,
112  const WebUsers::RequestUserInfo& userInfo);
113  void runFEMacro(HttpXmlDocument& xmldoc,
114  std::string feClassSelected,
115  std::string feUIDSelected,
116  const std::string& macroType,
117  const std::string& macroName,
118  const std::string& inputArgs,
119  const std::string outputArgs,
120  bool saveOutputs,
121  const std::string& username,
122  const std::string& userGroupPermissions);
123 
124  std::string generateHexArray(const std::string& sourceHexString, int& numOfBytes);
125  bool isArgumentVariable(const std::string& argumentString);
126  void createCode(std::ostream& out,
127  const std::vector<std::string>& commands,
128  const std::string& tabOffset = "",
129  bool forFeMacro = false,
130  std::set<std::string>* inArgNames = 0,
131  std::set<std::string>* outArgNames = 0);
132 
133  SupervisorInfoMap allFESupervisorInfo_;
134  std::map<std::string /*FE UID*/, unsigned int /*superivisor index*/>
135  FEtoSupervisorMap_;
136  std::map<std::string /*FE Type*/, std::set<std::string> /*FE UIDs*/>
137  FEPluginTypetoFEsMap_;
138  std::map<std::string /*FE UID*/, std::string /*FE Type*/> FEtoPluginTypeMap_;
139 
140  std::string securityCode_;
141  bool defaultSequence_;
142 
143  std::map<std::string /* username */, std::vector<std::string> /* last command */>
144  lastFeCommandToHistory_;
145 
146 }; // end MacroMakerSupervisor declaration
147 
148 } // namespace ots
149 
150 #endif
virtual void forceSupervisorPropertyValues(void) override