00001 #ifndef _ots_MacroMakerSupervisor_h_
00002 #define _ots_MacroMakerSupervisor_h_
00003
00004 #include "otsdaq-core/CoreSupervisors/CoreSupervisorBase.h"
00005
00006 namespace ots
00007 {
00008
00009
00010
00011
00012
00013 class MacroMakerSupervisor: public CoreSupervisorBase
00014 {
00015
00016 public:
00017
00018 XDAQ_INSTANTIATOR();
00019
00020
00021 MacroMakerSupervisor (xdaq::ApplicationStub* s);
00022 virtual ~MacroMakerSupervisor (void);
00023
00024 void init (void);
00025 void destroy (void);
00026
00027 virtual void request (const std::string& requestType, cgicc::Cgicc& cgiIn, HttpXmlDocument& xmlOut, const WebUsers::RequestUserInfo& userInfo) override;
00028
00029 virtual void forceSupervisorPropertyValues (void) override;
00030
00031
00032 private:
00033
00034 void handleRequest (const std::string Command, HttpXmlDocument& xmldoc, cgicc::Cgicc& cgi, const std::string &username);
00035
00036 xoap::MessageReference frontEndCommunicationRequest (xoap::MessageReference message);
00037
00038 void getFElist (HttpXmlDocument& xmldoc);
00039 void getFEMacroList (HttpXmlDocument& xmldoc, const std::string &username);
00040
00041 void writeData (HttpXmlDocument& xmldoc, cgicc::Cgicc& cgi, const std::string &username);
00042 void readData (HttpXmlDocument& xmldoc, cgicc::Cgicc& cgi, const std::string &username);
00043 void createMacro (HttpXmlDocument& xmldoc, cgicc::Cgicc& cgi, const std::string &username);
00044 void loadMacro (const std::string& macroName, std::string& macroString, const std::string& username = "");
00045 void loadMacros (HttpXmlDocument& xmldoc, const std::string &username);
00046 void appendCommandToHistory (std::string command, std::string Format, std::string time, std::string interfaces, const std::string &username);
00047 void loadHistory (HttpXmlDocument& xmldoc, const std::string &username);
00048 void deleteMacro (HttpXmlDocument& xmldoc,cgicc::Cgicc& cgi, const std::string &username);
00049 void editMacro (HttpXmlDocument& xmldoc, cgicc::Cgicc& cgi, const std::string &username);
00050 void clearHistory (const std::string &username);
00051 void exportMacro (HttpXmlDocument& xmldoc, cgicc::Cgicc& cgi, const std::string &username);
00052 void exportFEMacro (HttpXmlDocument& xmldoc, cgicc::Cgicc& cgi, const std::string &username);
00053 void runFEMacro (HttpXmlDocument& xmldoc, cgicc::Cgicc& cgi);
00054
00055
00056
00057 std::string generateHexArray (const std::string& sourceHexString,int &numOfBytes);
00058 bool isArgumentVariable (const std::string& argumentString);
00059 void createCode (std::ostream& out, const std::vector<std::string>& commands, const std::string& tabOffset = "", bool forFeMacro = false, std::set<std::string>* inArgNames = 0, std::set<std::string>* outArgNames = 0);
00060
00061 SupervisorInfoMap allFESupervisorInfo_;
00062 std::map<std::string , unsigned int > FEtoSupervisorMap_;
00063
00064 };
00065
00066 }
00067
00068 #endif