00001 #ifndef _ots_ECLSupervisor_h
00002 #define _ots_ECLSupervisor_h
00003
00004 #include "otsdaq-core/SOAPUtilities/SOAPMessenger.h"
00005 #include "otsdaq-core/FiniteStateMachine/RunControlStateMachine.h"
00006 #include "otsdaq-core/WebUsersUtilities/RemoteWebUsers.h"
00007
00008 #include <xdaq/Application.h>
00009 #include "otsdaq-core/Macros/XDAQApplicationMacros.h"
00010 #include <xgi/Method.h>
00011
00012 #include <cgicc/HTMLClasses.h>
00013 #include <cgicc/HTTPCookie.h>
00014 #include <cgicc/HTMLDoctype.h>
00015 #include <cgicc/HTTPHeader.h>
00016
00017 #include <string>
00018 #include <map>
00019 #include <chrono>
00020 #include "otsdaq-core/CoreSupervisors/CoreSupervisorBase.h"
00021
00022
00023
00024 namespace ots
00025 {
00026
00027 class ConfigurationManager;
00028 class ConfigurationGroupKey;
00029
00030 class ECLSupervisor: public CoreSupervisorBase
00031 {
00032
00033 public:
00034
00035 XDAQ_INSTANTIATOR();
00036
00037 ECLSupervisor (xdaq::ApplicationStub * s) ;
00038 virtual ~ECLSupervisor (void);
00039 void init (void);
00040 void destroy (void);
00041
00042 void defaultPage (xgi::Input* in, xgi::Output* out) ;
00043
00044 void transitionConfiguring (toolbox::Event::Reference e) ;
00045 void transitionStarting (toolbox::Event::Reference e) ;
00046 void transitionStopping (toolbox::Event::Reference e) ;
00047 void transitionPausing (toolbox::Event::Reference e) ;
00048 void transitionResuming (toolbox::Event::Reference e) ;
00049 void enteringError (toolbox::Event::Reference e) ;
00050
00051 xoap::MessageReference MakeSystemLogbookEntry(xoap::MessageReference msg) ;
00052
00053 private:
00054
00055 ConfigurationManager* theConfigurationManager_;
00056 const std::string supervisorContextUID_;
00057 const std::string supervisorApplicationUID_;
00058 const std::string supervisorConfigurationPath_;
00059
00060
00061 std::string ECLUser;
00062 std::string ECLHost;
00063 std::string ECLPwd;
00064 std::string ExperimentName;
00065 std::string run;
00066 std::chrono::steady_clock::time_point run_start;
00067 int duration_ms;
00068
00069 std::string EscapeECLString(std::string input = "");
00070
00071 enum class WriteState
00072 {
00073 kStart,
00074 kStop,
00075 kPause,
00076 kResume,
00077 kError
00078 };
00079
00080 int Write(WriteState state);
00081 };
00082
00083 }
00084
00085 #endif