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