1 #ifndef _ots_CoreSupervisorBase_h_
2 #define _ots_CoreSupervisorBase_h_
4 #include "otsdaq-core/WorkLoopManager/WorkLoopManager.h"
5 #include "otsdaq-core/FiniteStateMachine/RunControlStateMachine.h"
6 #include "otsdaq-core/SOAPUtilities/SOAPMessenger.h"
8 #include "otsdaq-core/XmlUtilities/HttpXmlDocument.h"
9 #include "otsdaq-core/SOAPUtilities/SOAPUtilities.h"
10 #include "otsdaq-core/SOAPUtilities/SOAPCommand.h"
11 #include "otsdaq-core/CgiDataUtilities/CgiDataUtilities.h"
13 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationGroupKey.h"
14 #include "otsdaq-core/ConfigurationInterface/ConfigurationManager.h"
15 #include "otsdaq-core/ConfigurationInterface/ConfigurationTree.h"
16 #include "otsdaq-core/ConfigurationPluginDataFormats/XDAQContextConfiguration.h"
17 #include "otsdaq-core/MessageFacility/MessageFacility.h"
18 #include "otsdaq-core/Macros/CoutMacros.h"
19 #include "otsdaq-core/FiniteStateMachine/VStateMachine.h"
21 #include "otsdaq-core/CoreSupervisors/CorePropertySupervisorBase.h"
22 #include "otsdaq-core/WebUsersUtilities/RemoteWebUsers.h"
24 #pragma GCC diagnostic push
25 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
26 #include <xdaq/Application.h>
27 #pragma GCC diagnostic pop
28 #include "otsdaq-core/Macros/XDAQApplicationMacros.h"
29 #include "xgi/Method.h"
31 #include <toolbox/fsm/FailedEvent.h>
33 #include <xdaq/NamespaceURI.h>
34 #include <xoap/Method.h>
67 virtual void defaultPage (xgi::Input* in, xgi::Output* out) ;
69 virtual void nonXmlRequest (
const std::string& requestType, cgicc::Cgicc& cgiIn, std::ostream& out,
const WebUsers::RequestUserInfo& userInfo) ;
72 xoap::MessageReference workLoopStatusRequestWrapper (xoap::MessageReference message ) ;
73 void defaultPageWrapper (xgi::Input* in, xgi::Output* out) ;
74 void requestWrapper (xgi::Input* in, xgi::Output* out) ;
81 void stateMachineXgiHandler (xgi::Input* in, xgi::Output* out ) ;
82 void stateMachineResultXgiHandler (xgi::Input* in, xgi::Output* out ) ;
83 xoap::MessageReference stateMachineXoapHandler (xoap::MessageReference message ) ;
84 xoap::MessageReference stateMachineResultXoapHandler (xoap::MessageReference message ) ;
86 xoap::MessageReference stateMachineStateRequest (xoap::MessageReference message ) ;
87 xoap::MessageReference stateMachineErrorMessageRequest (xoap::MessageReference message ) ;
89 virtual xoap::MessageReference workLoopStatusRequest (xoap::MessageReference message ) ;
91 bool stateMachineThread (toolbox::task::WorkLoop* workLoop);
93 virtual void stateInitial (toolbox::fsm::FiniteStateMachine& fsm) ;
94 virtual void statePaused (toolbox::fsm::FiniteStateMachine& fsm) ;
95 virtual void stateRunning (toolbox::fsm::FiniteStateMachine& fsm) ;
96 virtual void stateHalted (toolbox::fsm::FiniteStateMachine& fsm) ;
97 virtual void stateConfigured (toolbox::fsm::FiniteStateMachine& fsm) ;
98 virtual void inError (toolbox::fsm::FiniteStateMachine& fsm) ;
100 virtual void transitionConfiguring (toolbox::Event::Reference e) ;
101 virtual void transitionHalting (toolbox::Event::Reference e) ;
102 virtual void transitionInitializing (toolbox::Event::Reference e) ;
103 virtual void transitionPausing (toolbox::Event::Reference e) ;
104 virtual void transitionResuming (toolbox::Event::Reference e) ;
105 virtual void transitionStarting (toolbox::Event::Reference e) ;
106 virtual void transitionStopping (toolbox::Event::Reference e) ;
107 virtual void enteringError (toolbox::Event::Reference e) ;
110 static const std::string WORK_LOOP_DONE, WORK_LOOP_WORKING;
115 toolbox::BSem stateMachineSemaphore_;
116 std::vector<VStateMachine*> theStateMachineImplementation_;