1 #ifndef _ots_MacroMakerSupervisor_h_
2 #define _ots_MacroMakerSupervisor_h_
4 #include "otsdaq/CoreSupervisors/CoreSupervisorBase.h"
28 std::string feClassSelected_;
29 std::string feUIDSelected_;
30 std::string macroType_;
31 std::string macroName_;
32 std::string inputArgs_;
33 std::string outputArgs_;
35 std::string runningUsername_;
36 std::string userGroupPermissions_;
38 time_t startTime_ = time(0);
39 time_t doneTime_ = -1;
40 std::string feMacroRunError_ =
"";
41 uint64_t threadID_ = 0;
46 const std::string& feClassSelected,
47 const std::string& feUIDSelected,
48 const std::string& macroType,
49 const std::string& macroName,
50 const std::string& inputArgs,
51 const std::string& outputArgs,
53 const std::string& runningUsername,
54 const std::string& userGroupPermissions
57 parameters_.xmldoc_ = xmldoc;
58 parameters_.feClassSelected_ = feClassSelected;
59 parameters_.feUIDSelected_ = feUIDSelected;
60 parameters_.macroType_ = macroType;
61 parameters_.macroName_ = macroName;
62 parameters_.inputArgs_ = inputArgs;
63 parameters_.outputArgs_ = outputArgs;
64 parameters_.saveOutputs_ = saveOutputs;
65 parameters_.runningUsername_ = runningUsername;
66 parameters_.userGroupPermissions_ = userGroupPermissions;
77 parameters_(other.parameters_)
78 , feMacroRunDone_(other.feMacroRunDone_.load())
84 parameters_ = other.parameters_;
85 feMacroRunDone_.store(other.feMacroRunDone_.load());
90 runFEMacroParameterStruct parameters_;
91 std::atomic<bool> feMacroRunDone_ =
false;
100 virtual void request (
const std::string& requestType,
103 const WebUsers::RequestUserInfo& userInfo)
override;
109 void generateURL (
void);
110 void verification (xgi::Input* in, xgi::Output* out);
111 void requestIcons (xgi::Input* in, xgi::Output* out);
112 void tooltipRequest (xgi::Input* in, xgi::Output* out);
113 void requestWrapper (xgi::Input* in, xgi::Output* out);
118 void handleRequest (
const std::string Command,
121 const WebUsers::RequestUserInfo& userInfo);
123 xoap::MessageReference frontEndCommunicationRequest (xoap::MessageReference message);
124 xoap::MessageReference supervisorSequenceCheck (xoap::MessageReference message);
127 void getFEMacroList (
HttpXmlDocument& xmldoc,
const std::string& username);
131 const std::string& username);
134 const std::string& username);
137 const std::string& username);
138 void loadMacro (
const std::string& macroName,
139 std::string& macroString,
140 const std::string& username =
"");
141 void loadMacros (
HttpXmlDocument& xmldoc,
const std::string& username);
142 void loadMacroNames (
143 const std::string& username,
144 std::pair<std::vector<std::string> ,
145 std::vector<std::string> >& returnMacroNames);
146 void appendCommandToHistory (std::string command,
149 std::string interfaces,
150 const std::string& username);
151 void appendCommandToHistory (std::string feClass,
153 std::string macroType,
154 std::string macroName,
155 std::string inputArgs,
156 std::string outputArgs,
158 const std::string& username);
159 void loadFEMacroSequences (
HttpXmlDocument& xmldoc,
const std::string& username);
160 void saveFEMacroSequence (cgicc::Cgicc& cgi,
const std::string& username);
163 const std::string& username);
166 const std::string& username);
167 void deleteFEMacroSequence (cgicc::Cgicc& cgi,
const std::string& username);
168 void makeSequencePublic (cgicc::Cgicc& cgi,
const std::string& username);
169 void loadHistory (
HttpXmlDocument& xmldoc,
const std::string& username);
170 void loadFEHistory (
HttpXmlDocument& xmldoc,
const std::string& username);
173 const std::string& username);
176 const std::string& username);
177 void clearHistory (
const std::string& username);
178 void clearFEHistory (
const std::string& username);
181 const std::string& username);
184 const std::string& username);
187 const WebUsers::RequestUserInfo& userInfo);
189 std::string feClassSelected,
190 std::string feUIDSelected,
191 const std::string& macroType,
192 const std::string& macroName,
193 const std::string& inputArgs,
194 const std::string outputArgs,
196 const std::string& username,
197 const std::string& userGroupPermissions);
198 static void runFEMacroThread (runFEMacroStruct* feMacroRunThreadStruct,
201 std::string generateHexArray (
const std::string& sourceHexString,
int& numOfBytes);
202 bool isArgumentVariable (
const std::string& argumentString);
203 void createCode (std::ostream& out,
204 const std::vector<std::string>& commands,
205 const std::string& tabOffset =
"",
206 bool forFeMacro =
false,
207 std::set<std::string>* inArgNames = 0,
208 std::set<std::string>* outArgNames = 0);
210 SupervisorInfoMap allFESupervisorInfo_;
211 std::map<std::string ,
unsigned int > FEtoSupervisorMap_;
212 std::map<std::string , std::set<std::string> > FEPluginTypetoFEsMap_;
213 std::map<std::string , std::string > FEtoPluginTypeMap_;
215 std::string securityCode_;
216 bool defaultSequence_;
218 std::map<std::string ,
219 std::vector<std::string> > lastFeCommandToHistory_;
222 std::vector<runFEMacroStruct> feMacroRunThreadStruct_;
friend friend class MacroMakerSupervisor
virtual void forceSupervisorPropertyValues(void) override
override to force supervisor property values (and ignore user settings)
runFEMacroStruct(runFEMacroStruct &&other) noexcept
Allow move constructor because std::atomic is not copyable.
runFEMacroStruct(const runFEMacroStruct &)=delete
Delete copy constructor because std::atomic is not copyable.
runFEMacroStruct & operator=(runFEMacroStruct &&other) noexcept
Allow move constructor because std::atomic is not copyable, for vector erase.