tdaq-develop-2025-02-12
ots::GatewaySupervisor Class Reference

#include <otsdaq/GatewaySupervisor/GatewaySupervisor.h>

Inheritance diagram for ots::GatewaySupervisor:
ots::SOAPMessenger ots::RunControlStateMachine ots::CorePropertySupervisorBase ots::ConfigurationSupervisorBase

Classes

struct  RemoteGatewayInfo
 

Public Member Functions

 XDAQ_INSTANTIATOR ()
 
 GatewaySupervisor (xdaq::ApplicationStub *s)
 
void init (void)
 
void Default (xgi::Input *in, xgi::Output *out)
 
void loginRequest (xgi::Input *in, xgi::Output *out)
 
void request (xgi::Input *in, xgi::Output *out)
 
void tooltipRequest (xgi::Input *in, xgi::Output *out)
 
void XGI_Turtle (xgi::Input *in, xgi::Output *out)
 
void addStateMachineStatusToXML (HttpXmlDocument &xmlOut, const std::string &fsmName, bool getRunNumber=true)
 
void addFilteredConfigAliasesToXML (HttpXmlDocument &xmlOut, const std::string &fsmName)
 
void addRequiredFsmLogInputToXML (HttpXmlDocument &xmlOut, const std::string &fsmName)
 
void stateMachineXgiHandler (xgi::Input *in, xgi::Output *out)
 
void stateMachineIterationBreakpoint (xgi::Input *in, xgi::Output *out)
 
xoap::MessageReference stateMachineXoapHandler (xoap::MessageReference msg)
 
bool stateMachineThread (toolbox::task::WorkLoop *workLoop)
 
void statusRequest (xgi::Input *in, xgi::Output *out)
 
void infoRequestResultHandler (xgi::Input *in, xgi::Output *out)
 
bool infoRequestThread (toolbox::task::WorkLoop *workLoop)
 
xoap::MessageReference supervisorCookieCheck (xoap::MessageReference msg)
 
xoap::MessageReference supervisorGetActiveUsers (xoap::MessageReference msg)
 
xoap::MessageReference supervisorSystemMessage (xoap::MessageReference msg)
 
xoap::MessageReference supervisorGetUserInfo (xoap::MessageReference msg)
 
xoap::MessageReference supervisorSystemLogbookEntry (xoap::MessageReference msg)
 
xoap::MessageReference supervisorLastTableGroupRequest (xoap::MessageReference msg)
 
void stateInitial (toolbox::fsm::FiniteStateMachine &fsm) override
 
void statePaused (toolbox::fsm::FiniteStateMachine &fsm) override
 
void stateRunning (toolbox::fsm::FiniteStateMachine &fsm) override
 
void stateHalted (toolbox::fsm::FiniteStateMachine &fsm) override
 
void stateConfigured (toolbox::fsm::FiniteStateMachine &fsm) override
 
void inError (toolbox::fsm::FiniteStateMachine &fsm) override
 
void transitionConfiguring (toolbox::Event::Reference e) override
 
void transitionHalting (toolbox::Event::Reference e) override
 
void transitionInitializing (toolbox::Event::Reference e) override
 
void transitionPausing (toolbox::Event::Reference e) override
 
void transitionResuming (toolbox::Event::Reference e) override
 
void transitionStarting (toolbox::Event::Reference e) override
 
void transitionStopping (toolbox::Event::Reference e) override
 
void transitionShuttingDown (toolbox::Event::Reference e) override
 
void transitionStartingUp (toolbox::Event::Reference e) override
 
void enteringError (toolbox::Event::Reference e) override
 
void makeSystemLogEntry (const std::string &entryText, const std::string &subjectText="")
 
void checkForAsyncError (void)
 
virtual void setSupervisorPropertyDefaults (void) override
 override to control supervisor specific defaults
 
virtual void forceSupervisorPropertyValues (void) override
 override to force supervisor property values (and ignore user settings)
 
void loadRemoteGatewaySettings (std::vector< GatewaySupervisor::RemoteGatewayInfo > &remoteGateways, bool onlyNotFound=false) const
 
void saveRemoteGatewaySettings (void) const
 
- Public Member Functions inherited from ots::SOAPMessenger
 SOAPMessenger (xdaq::Application *application)
 
 SOAPMessenger (const SOAPMessenger &aSOAPMessenger)
 
std::string send (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, xoap::MessageReference message)
 
std::string send (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, SOAPCommand soapCommand)
 
std::string send (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, std::string command)
 
std::string send (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, std::string command, SOAPParameters parameters)
 
std::string sendStatus (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, std::string message)
 
xoap::MessageReference sendWithSOAPReply (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, xoap::MessageReference message)
 
xoap::MessageReference sendWithSOAPReply (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, SOAPCommand soapCommand)
 
xoap::MessageReference sendWithSOAPReply (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, std::string command)
 
xoap::MessageReference sendWithSOAPReply (XDAQ_CONST_CALL xdaq::ApplicationDescriptor *d, std::string command, SOAPParameters parameters)
 
- Public Member Functions inherited from ots::RunControlStateMachine
 RunControlStateMachine (const std::string &name="Undefined Name")
 
void reset (void)
 
void setStateMachineName (const std::string &name)
 
const std::string & getErrorMessage (void) const
 
void setAsyncPauseExceptionMessage (const std::string &error)
 
void setAsyncStopExceptionMessage (const std::string &error)
 
template<class OBJECT >
void addStateTransition (toolbox::fsm::State from, toolbox::fsm::State to, const std::string &input, const std::string &transitionName, OBJECT *obj, void(OBJECT::*func)(toolbox::Event::Reference))
 
template<class OBJECT >
void addStateTransition (toolbox::fsm::State from, toolbox::fsm::State to, const std::string &input, const std::string &transitionName, const std::string &transitionParameter, OBJECT *obj, void(OBJECT::*func)(toolbox::Event::Reference))
 
virtual void stateShutdown (toolbox::fsm::FiniteStateMachine &)
 
xoap::MessageReference runControlMessageHandler (xoap::MessageReference message)
 Run Control Messages. More...
 
unsigned int getIterationIndex (void)
 
unsigned int getSubIterationIndex (void)
 
void indicateIterationWork (void)
 
void clearIterationWork (void)
 
bool getIterationWork (void)
 
void indicateSubIterationWork (void)
 
void clearSubIterationWork (void)
 
bool getSubIterationWork (void)
 
const std::string & getLastCommand (void)
 
const std::string & getLastAttemptedConfigureGroup (void)
 
- Public Member Functions inherited from ots::CorePropertySupervisorBase
 CorePropertySupervisorBase (xdaq::Application *application)
 
XDAQ_CONST_CALL xdaq::ApplicationDescriptor * getGatewaySupervisorDescriptor (void)
 will be wizard supervisor in wiz mode More...
 
void getRequestUserInfo (WebUsers::RequestUserInfo &requestUserInfo)
 
ConfigurationTree getContextTreeNode (void) const
 
ConfigurationTree getSupervisorTableNode (void) const
 
const std::string & getContextUID (void) const
 
const std::string & getSupervisorUID (void) const
 
const std::string & getSupervisorConfigurationPath (void) const
 
void resetPropertiesAreSetup (void)
 
ConfigurationTree getSupervisorTreeNode (void)
 
void loadUserSupervisorProperties (void)
 
template<class T >
void setSupervisorProperty (const std::string &propertyName, const T &propertyValue)
 
void setSupervisorProperty (const std::string &propertyName, const std::string &propertyValue)
 
template<class T >
void addSupervisorProperty (const std::string &propertyName, const T &propertyValue)
 
void addSupervisorProperty (const std::string &propertyName, const std::string &propertyValue)
 
template<class T >
getSupervisorProperty (const std::string &propertyName)
 
template<class T >
getSupervisorProperty (const std::string &propertyName, const T &defaultValue)
 
std::string getSupervisorProperty (const std::string &propertyName)
 
std::string getSupervisorProperty (const std::string &propertyName, const std::string &defaultValue)
 getSupervisorProperty
 
WebUsers::permissionLevel_t getSupervisorPropertyUserPermissionsThreshold (const std::string &requestType)
 
time_t getSupervisorUptime (void) const
 

Static Public Member Functions

static std::string getIconHeaderString (void)
 
static bool handleAddDesktopIconRequest (const std::string &author, cgicc::Cgicc &cgiIn, HttpXmlDocument &xmlOut, std::vector< DesktopIconTable::DesktopIcon > *newIcons=nullptr)
 
static void handleGetApplicationIdRequest (AllSupervisorInfo *applicationInfo, cgicc::Cgicc &cgiIn, HttpXmlDocument &xmlOut)
 
static void addSystemMessage (std::string toUserCSV, std::string message)
 
static void CheckRemoteGatewayStatus (GatewaySupervisor::RemoteGatewayInfo &remoteGatewayApp, const std::unique_ptr< TransceiverSocket > &remoteGatewaySocket, const std::string &ipForReverseLoginOverUDP, int portForReverseLoginOverUDP)
 
static void SendRemoteGatewayCommand (GatewaySupervisor::RemoteGatewayInfo &remoteGatewayApp, const std::unique_ptr< TransceiverSocket > &remoteGatewaySocket)
 
static void GetRemoteGatewayIcons (GatewaySupervisor::RemoteGatewayInfo &remoteGatewayApp, const std::unique_ptr< TransceiverSocket > &remoteGatewaySocket)
 
- Static Public Member Functions inherited from ots::CorePropertySupervisorBase
static void extractPermissionsMapFromString (const std::string &permissionsString, std::map< std::string, WebUsers::permissionLevel_t > &permissionsMap)
 
static bool doPermissionsGrantAccess (std::map< std::string, WebUsers::permissionLevel_t > &permissionLevelsMap, std::map< std::string, WebUsers::permissionLevel_t > &permissionThresholdsMap)
 
- Static Public Member Functions inherited from ots::ConfigurationSupervisorBase
static void getConfigurationStatusXML (HttpXmlDocument &xmlOut, ConfigurationManagerRW *cfgMgr, const std::string &username)
 getConfigurationStatusXML
 
static TableVersion saveModifiedVersionXML (HttpXmlDocument &xmlOut, ConfigurationManagerRW *cfgMgr, const std::string &tableName, TableVersion originalVersion, bool makeTemporary, TableBase *config, TableVersion temporaryModifiedVersion, bool ignoreDuplicates=false, bool lookForEquivalent=false)
 
static void handleCreateTableXML (HttpXmlDocument &xmlOut, ConfigurationManagerRW *cfgMgr, const std::string &tableName, TableVersion version, bool makeTemporary, const std::string &data, const int &dataOffset, const std::string &author, const std::string &comment, bool sourceTableAsIs, bool lookForEquivalent)
 
static void handleCreateTableGroupXML (HttpXmlDocument &xmlOut, ConfigurationManagerRW *cfgMgr, const std::string &groupName, const std::string &configList, bool allowDuplicates=false, bool ignoreWarnings=false, const std::string &groupComment="", bool lookForEquivalent=false)
 
static void handleGetTableGroupXML (HttpXmlDocument &xmlOut, ConfigurationManagerRW *cfgMgr, const std::string &groupName, TableGroupKey groupKey, bool ignoreWarnings=false)
 
static bool handleAddDesktopIconXML (HttpXmlDocument &xmlOut, ConfigurationManagerRW *cfgMgr, const std::string &iconCaption, const std::string &iconAltText, const std::string &iconFolderPath, const std::string &iconImageURL, const std::string &iconWindowURL, const std::string &iconPermissions, std::string windowLinkedApp="", unsigned int windowLinkedAppLID=0, bool enforceOneWindowInstance=false, const std::string &windowParameters="")
 
static void recursiveCopyTreeUIDNode (HttpXmlDocument &xmlOut, ConfigurationManagerRW *cfgMgr, std::map< std::string, TableVersion > &modifiedTablesMap, const unsigned int startingDepth, const unsigned int depth, const unsigned int numberOfInstances, TableView *cfgView, const std::string &uidToCopy)
 

Public Attributes

std::vector< GatewaySupervisor::RemoteGatewayInforemoteGatewayApps_
 
std::mutex remoteGatewayAppsMutex_
 
- Public Attributes inherited from ots::CorePropertySupervisorBase
AllSupervisorInfo allSupervisorInfo_
 
ConfigurationManagertheConfigurationManager_
 

Friends

class WizardSupervisor
 
class Iterator
 

Additional Inherited Members

- Static Public Attributes inherited from ots::RunControlStateMachine
static const std::string FAILED_STATE_NAME = FiniteStateMachine::FAILED_STATE_NAME
 
static const std::string INITIAL_STATE_NAME = "Initial"
 
static const std::string HALTED_STATE_NAME = "Halted"
 
static const std::string PAUSED_STATE_NAME = "Paused"
 
static const std::string RUNNING_STATE_NAME = "Running"
 
static const std::string SHUTDOWN_STATE_NAME = "Shutdown"
 
static const std::string CONFIGURED_STATE_NAME = "Configured"
 
static const std::string SHUTDOWN_TRANSITION_NAME = "Shutdown"
 
static const std::string STARTUP_TRANSITION_NAME = "Startup"
 
static const std::string INIT_TRANSITION_NAME = "Initialize"
 
static const std::string ERROR_TRANSITION_NAME = FiniteStateMachine::ERROR_TRANSITION_NAME
 
static const std::string FAIL_TRANSITION_NAME = "Fail"
 
static const std::string CONFIGURE_TRANSITION_NAME = "Configure"
 
static const std::string HALT_TRANSITION_NAME = "Halt"
 
static const std::string ABORT_TRANSITION_NAME = "Abort"
 
static const std::string PAUSE_TRANSITION_NAME = "Pause"
 
static const std::string RESUME_TRANSITION_NAME = "Resume"
 
static const std::string START_TRANSITION_NAME = "Start"
 
static const std::string STOP_TRANSITION_NAME = "Stop"
 
- Protected Member Functions inherited from ots::CorePropertySupervisorBase
xoap::MessageReference TRACESupervisorRequest (xoap::MessageReference message)
 
const std::string & getTraceLevels (void)
 
const std::string & setTraceLevels (std::string const &host, std::string const &mode, std::string const &labelsStr, uint32_t setValueMSB, uint32_t setValueLSB)
 
const std::string & setIndividualTraceLevels (std::string const &host, std::string const &mode, std::string const &labelValuesStr)
 
const std::string & getTraceTriggerStatus (void)
 
const std::string & setTraceTriggerEnable (std::string const &host, size_t entriesAfterTrigger)
 
const std::string & resetTRACE (std::string const &host)
 
const std::string & enableTRACE (std::string const &host, bool enable)
 
const std::string & getTraceSnapshot (std::string const &host, std::string const &filterFor, std::string const &filterOut)
 
- Static Protected Member Functions inherited from ots::CorePropertySupervisorBase
static void indicateOtsAlive (const CorePropertySupervisorBase *properties=0)
 
static void indicateOtsDead (const CorePropertySupervisorBase *properties=0)
 
- Protected Attributes inherited from ots::SOAPMessenger
xdaq::Application * theApplication_
 
- Protected Attributes inherited from ots::RunControlStateMachine
FiniteStateMachine theStateMachine_
 
ProgressBar theProgressBar_
 
volatile bool asyncFailureReceived_
 
volatile bool asyncPauseExceptionReceived_
 
volatile bool asyncStopExceptionReceived_
 
unsigned int iterationIndex_ = 0
 
unsigned int subIterationIndex_ = 0
 
bool iterationWorkFlag_
 
bool subIterationWorkFlag_
 
toolbox::fsm::State lastIterationState_
 
std::string lastIterationCommand_
 
std::string lastAttemptedConfigureGroup_
 
std::string lastIterationResult_
 
unsigned int lastIterationIndex_
 
unsigned int lastSubIterationIndex_
 
std::map< toolbox::fsm::State, std::map< std::string, void(RunControlStateMachine::*)(toolbox::Event::Reference), std::less< std::string > > > stateTransitionFunctionTable_
 
- Protected Attributes inherited from ots::CorePropertySupervisorBase
const std::string supervisorClass_
 
const std::string supervisorClassNoNamespace_
 
ITRACEControllertheTRACEController_
 only define for an app that receives a command
 
- Static Protected Attributes inherited from ots::CorePropertySupervisorBase
static const struct ots::CorePropertySupervisorBase::SupervisorProperties SUPERVISOR_PROPERTIES
 

Detailed Description

GatewaySupervisor This class is the gateway server for all otsdaq requests in "Normal Mode." It validates user access for every request. It synchronizes the state machines of all other supervisors.

Definition at line 50 of file GatewaySupervisor.h.

Member Function Documentation

◆ stateConfigured()

void ots::GatewaySupervisor::stateConfigured ( toolbox::fsm::FiniteStateMachine &  )
overridevirtual
  1. XDAQ applications are configured.
  2. Run parameters have been distributed.
  3. Hardware is configured.
  4. I2O connections are established, no data is sent or read out.
  5. Triggers are not sent.

Reimplemented from ots::RunControlStateMachine.

◆ stateHalted()

void ots::GatewaySupervisor::stateHalted ( toolbox::fsm::FiniteStateMachine &  )
overridevirtual
  1. Control hierarchy is instantiated.
  2. XDAQ executives are running and configured.
  3. XDAQ applications are loaded and instantiated.
  4. DCS nodes are allocated.

Reimplemented from ots::RunControlStateMachine.

◆ stateInitial()

void ots::GatewaySupervisor::stateInitial ( toolbox::fsm::FiniteStateMachine &  )
overridevirtual

using stateMachineFunction_t = void (ots::RunControlStateMachine::* )(toolbox::Event::Reference); stateMachineFunction_t getTransitionFunction (const toolbox::fsm::State from, const std::string &transition);

Finite State Machine States

  1. Control Configuration and Function Manager are loaded.

Reimplemented from ots::RunControlStateMachine.

◆ statePaused()

void ots::GatewaySupervisor::statePaused ( toolbox::fsm::FiniteStateMachine &  )
overridevirtual
  1. XDAQ applications are running.
  2. Hardware is running.
  3. Triggers are accepted.
  4. Triggers are not sent.
  5. Data is sent / read out.

Reimplemented from ots::RunControlStateMachine.

◆ stateRunning()

void ots::GatewaySupervisor::stateRunning ( toolbox::fsm::FiniteStateMachine &  )
overridevirtual
  1. XDAQ applications are running.
  2. Hardware is running.
  3. Triggers are accepted.
  4. Triggers are sent.
  5. Data is sent / read out.

Reimplemented from ots::RunControlStateMachine.


The documentation for this class was generated from the following file: