StateUtility Class Reference

#include <ArmarXCore/statechart/StateUtil.h>

+ Inheritance diagram for StateUtility:

Classes

struct  ActionEventIdentifier
 Struct for the return value of setCounter/TimerEvent. More...
 

Public Member Functions

template<class EventClass >
EventPtr createEvent ()
 Utility function to create a new Event. More...
 
EventPtr createEvent (const std::string &eventName, const StringVariantContainerBaseMap &properties=StringVariantContainerBaseMap())
 Utility function to create a new Event. More...
 
- Public Member Functions inherited from StateController
bool __applyMappings (const StateControllerPtr &srcState, const TransitionIceBase &t, const EventPtr &event, TransitionError &error)
 Apply the mappings during a transitions. More...
 
virtual bool __breakActiveSubstate (const EventPtr event)
 
bool __checkExistenceOfTransition (const TransitionIceBase &transition)
 
virtual void __enqueueEvent (const EventPtr event)
 
virtual void __finalize (const EventPtr event)
 Function that gets called, when a state enters a FinalSubstate. Virtual function, so that RemoteStateWrapper can override it. More...
 
bool __findValidTransition (const EventPtr &event, const StateIceBasePtr &sourceState, TransitionIceBase &resultTransition, TransitionError &error) const
 
StateControllerPtr __getParentState () const
 Getter function that automatically casts the parentState member of StateBase into StateControllerPtr. More...
 
virtual unsigned int __getUnbreakableBufferSize () const
 
virtual bool __getUnbreakableBufferStati () const
 Before:Function to get the unbreakable-buffer status of all parent state - recursively. More...
 
virtual void __notifyEventBufferedDueToUnbreakableState (bool eventBuffered=true)
 
void __printTransitionError (const TransitionError &transitionError, const EventPtr &event) const
 
virtual void __processBufferedEvents ()
 Processes buffered events, that could not be processed immediately due to unbreakable substates. More...
 
virtual void __processEvent (const EventPtr event, bool buffered=false)
 Main function to control the statemachine/state. More...
 
virtual void __substatesFinished (const EventPtr ev)
 Function that gets called, when a state enters a FinalSubstate. Virtual function, so that RemoteStateWrapper can override it. More...
 
TransitionError __validateTransition (const TransitionIceBase &transition, const EventPtr event, const StateIceBasePtr &sourceState, const StateIceBasePtr &destinationState) const
 
void __waitForRemoteStates () const
 
virtual bool _baseOnBreak (const EventPtr evt)
 Called by StateControllerprocessEvent()-function or parentstate. Must NOT be called by user. More...
 
virtual void _baseOnEnter ()
 Called by StateControllerprocessEvent()-function or parentstate. More...
 
virtual void _baseOnExit ()
 Called by StateController::processEvent()-function or parentstate. Must NOT be called by user. More...
 
virtual void _baseRun ()
 
virtual void _startRun ()
 
void addProfilerRecursive (Profiler::ProfilerPtr profiler, int recursiveLevels=0)
 addProfilerRecursive recursively adds a new armarx::Profiler::Profiler object as armarx::StateController::localProfiler(the default one does not do anything at all). More...
 
void addTransitionFunction (const TransitionIceBase &t, transitionFunction function)
 
void disableRunFunction ()
 disableRunFunction sets useRunFunction to false and waits (blocking) for the current StateBase::run() function to complete. More...
 
void disableStateReporting (bool disable=true)
 Disables the reporting to profilers for this states during state visits. More...
 
void enter (const StringVariantContainerBaseMap &tempInputParameters=StringVariantContainerBaseMap())
 Function to set the statemachine in the first state and call OnEnter(). More...
 
bool findTransition (const std::string &eventName, const std::string sourceStateName, TransitionIceBase &transition)
 
std::string getTransitionID (const std::string &eventName, const std::string sourceStateName) const
 
std::string getTransitionID (const TransitionIceBase &t) const
 
bool isFinished () const
 
bool isRunningTaskFinished () const
 Checks whether the run() function has already finished. More...
 
bool isRunningTaskStopped () const
 isRunningTaskStopped checks whether the RunningTask, that executes run() is requested to stop. More...
 
void removeProfilerRecursive (Profiler::ProfilerPtr profiler, int recursiveLevels=0)
 
 StateController ()
 
 StateController (const StateController &source)
 
void waitForRunningTaskToFinish () const
 Waits until the run-function has finished. More...
 
void waitForStateToFinish (int timeoutMs=-1) const
 waitForStateToFinish waits until this thread has finished (i.e. More...
 
 ~StateController () override
 
- Public Member Functions inherited from StateBase
void __checkPhase (const std::vector< StatePhase > &allowedTypes, const char *functionName) const
 
void __checkPhase (StatePhase allowedType, const char *functionName) const
 Helper function for checking if a function was called in valid position of the statechart. More...
 
void __checkPhaseMin (StatePhase allowedType, const char *functionName) const
 
void __copyDefaultValuesToInput ()
 
StringVariantContainerBaseMap __getSetInputAndLocalParameters () const
 Combines both maps to one map and returns a new map of only the set parameters. More...
 
virtual bool __hasActiveSubstate ()
 Virtual function to indicate wheter a state has an active substate or not. To be overridden by RemoteState to deligate the call to the real state. More...
 
virtual bool __hasSubstates ()
 Virtual function to indicate wheter a state has substates or not. To be overridden by RemoteState to deligate the call to the real state. More...
 
void __setParentState (StateBase *parentState)
 
void __throwUnknownParameter (const StateParameterMap &paramMap, const std::string &key) const
 
void __updateGlobalStateId ()
 
virtual void __updateGlobalStateIdRecursive ()
 
bool addParameter (StateParameterMap &paramMap, const std::string &key, VariantTypeId type, bool optional, VariantPtr defaultValue=VariantPtr()) const
 
bool addParameterContainer (StateParameterMap &paramMap, const std::string &key, const ContainerType &containerType, bool optional, VariantContainerBasePtr defaultValue=VariantContainerBasePtr()) const
 
void clearSelfPointer ()
 
virtual StateBasePtr clone () const =0
 Pure virtual function to clone of the derived class type. More...
 
virtual StateBasePtr createEmptyCopy () const =0
 
virtual void deepCopy (const StateBase &sourceState, bool reset=true)
 Function to copy the states with all it substates and transitions. More...
 
virtual void defineParameters ()
 Virtual function, in which input/local/output parameters can be specified. More...
 
virtual void defineState ()
 Virtual function, in which this state can be configured. More...
 
virtual void defineSubstates ()
 Virtual function, in which substates, transition and mappings can be added. More...
 
StateBasePtr findSubstateByName (const std::string &substateName)
 Utility function to find a substate of this state by the name. More...
 
template<typename ContextType >
ContextType * getContext () const
 
StatechartContextInterfacegetContext (bool checkNULL=true) const
 
std::string getGlobalHierarchyString () const
 
virtual StateParameterMap getInputParameters ()=0
 Not const because RemoteState implementation gets the current parameters via Ice and sets them. More...
 
std::string getLocalHierarchyString () const
 Function to get a string that contains als parent states and this state. (e.g. "Robot->Functional->Idling") More...
 
Ice::Int getLocalUniqueId () const
 
virtual StateParameterMap & getOutputParameters ()
 
void getParameter (const StateParameterMap &paramMap, const std::string &key, VariantPtr &value) const
 
void getParameterContainer (const StateParameterMap &paramMap, const std::string &key, VariantContainerBasePtr &valueContainer) const
 
const std::string & getStateClassName () const
 
std::string getStateName () const
 getStateName More...
 
StatePhase getStatePhase () const
 
EventPtr getTriggeredEndstateEvent () const
 This function returns the event that was triggered by entering an endstate. More...
 
void inheritInputParameters ()
 
bool init (StatechartContextInterface *context, StatechartManager *manager)
 Function to initialize this state. Must be called in the highest level of the hierarchy - and only there. More...
 
virtual bool isInitialized () const
 Returns the status of this state. Only if a state is initialized, it can be used. More...
 
bool isParameterSet (const StateParameterMap &paramMap, const std::string &key) const
 
virtual void onBreak ()
 Virtual function, in which the behaviour of state is defined, when it is abnormally exited. Can be overridden, but it is optional.
An abnormal exit only occurs in hierarchy-levels greater 1.
When a parent state is left before the substates are finished, the OnBreak()-function is called in the active substate and in all it's active substates.
If this function is not implemented, the normal OnExit()-function is called.
More...
 
virtual void onEnter ()
 Virtual function, in which the behaviour of state is defined, when it is entered.
Can be overridden, but it is optional. More...
 
virtual void onExit ()
 Virtual function, in which the behaviour of state is defined, when it is exited. Can be overridden, but it is optional. More...
 
StateBaseoperator= (const StateBase &source)
 
virtual void refetchSubstates ()
 This functions updates the substates. More...
 
void reset ()
 Function to reset the state: clear name, clear substatesList, clear transition etc. More...
 
virtual void run ()
 Virtual function, that can be reimplemented to calculate complex operations. More...
 
void setContext (StatechartContextInterface *context)
 
void setInitialized (bool enable)
 
void setParameter (StateParameterMap &paramMap, const std::string &key, const Variant &variant)
 
void setParameterContainer (StateParameterMap &paramMap, const std::string &key, const VariantContainerBase &valueContainer)
 
void setParameterContainer (StateParameterMap &paramMap, const std::string &key, const VariantContainerBasePtr &valueContainer)
 
void setStateClassName (std::string className)
 setStateClassName() sets the string, that contains a stringrepresentation of this class. Should not be called usually. The classname gets automatically set in the constructor of the derived class StateTemplate<T>. More...
 
void setStatePhase (StatePhase newPhase)
 
 StateBase ()
 
 StateBase (const StateBase &source)
 
virtual bool waitForInitialization (int timeoutMS=-1) const
 
 ~StateBase () override
 
- Public Member Functions inherited from Logging
SpamFilterDataPtr deactivateSpam (float deactivationDurationSec=10.0f, const std::string &identifier="", bool deactivate=true) const
 disables the logging for the current line for the given amount of seconds. More...
 
MessageTypeT getEffectiveLoggingLevel () const
 
 Logging ()
 
void setLocalMinimumLoggingLevel (MessageTypeT level)
 With setLocalMinimumLoggingLevel the minimum verbosity-level of log-messages can be set. More...
 
void setTag (const LogTag &tag)
 
void setTag (const std::string &tagName)
 
virtual ~Logging ()
 

Protected Member Functions

ConditionIdentifier installCondition (const Term &condition, const EventPtr evt, const std::string &desc="")
 Utility function to install a condition on the distributed conditionhandler. More...
 
template<class Eventclass >
ConditionIdentifier installCondition (const Term &condition, const std::string &desc="")
 Utility function to install a condition on the distributed conditionhandler. More...
 
void removeCondition (ConditionIdentifier conditionId)
 Utility function to remove an installed condition on the distributed conditionhandler. More...
 
void removeCounterEvent (const ActionEventIdentifier &id)
 
void removeTimeoutEvent (const ActionEventIdentifier &id)
 
void sendEvent (const EventPtr event, StateBasePtr eventProcessor=nullptr)
 Function to send an event to a specific state from an onEnter()-function. Must not be called anywhere else. The event is processed after the onEnter()-function of this and all initial substates have returned.
Use of this function should be avoided since this statemachine is blocked until this event and all subsequent sendEvents() are processed. More...
 
template<class Event >
void sendEvent (StateBasePtr eventProcessor=nullptr)
 
ActionEventIdentifier setCounterEvent (int counterThreshold, const EventPtr &evt, int initialValue=0)
 
template<class Eventclass >
ActionEventIdentifier setCounterEvent (int counterThreshold, int initialValue=0)
 
template<class Eventclass >
ActionEventIdentifier setTimeoutEvent (int timeoutDurationMs)
 
ActionEventIdentifier setTimeoutEvent (int timeoutDurationMs, const EventPtr &evt)
 Utility function to start a timer on the systemObserver and register an event on the conditionHandler. The condition is automatically removed, when the state is left. More...
 
- Protected Member Functions inherited from Logging
bool checkLogLevel (MessageTypeT level) const
 
const LogSenderPtrgetLogSender () const
 Retrieve log sender. More...
 
LogSenderPtr loghelper (const char *file, int line, const char *function) const
 

Additional Inherited Members

- Public Types inherited from StateController
using transitionFunction = std::function< void(StateController *state, const StateIceBasePtr &nextState, const StateIceBasePtr &previousState)>
 
using TransitionFunctionMap = std::map< std::string, transitionFunction >
 
- Public Types inherited from StateBase
enum  StatePhase {
  ePreDefined, eStatechartDefinitions, eSubstatesDefinitions, eParametersDefinitions,
  eDefined, eEntering, eEntered, eBreaking,
  eExiting, eExited
}
 enum that specifies the phase in which the state is currently in used to control the usage of state-functions in the correct context More...
 
- Static Public Member Functions inherited from StateBase
static std::vector< StateBasePtrGetActiveStateLeafs (StateBasePtr toplevelState)
 
- Public Attributes inherited from StateController
std::unique_ptr< Implcimpl
 
- Public Attributes inherited from StateBase
std::unique_ptr< Implimpl
 
- Protected Attributes inherited from Logging
MessageTypeT minimumLoggingLevel
 
SpamFilterDataPtr spamFilter
 
LogTag tag
 

Detailed Description

This class provides utility functions for statechart-implementing-users to communicate with other distributed components like observers. These functions should only be used in the onEnter(), onBreak() and onExit() functions.

Definition at line 47 of file StateUtil.h.

Member Function Documentation

◆ createEvent() [1/2]

EventPtr createEvent ( )
inline

Utility function to create a new Event.

Definition at line 64 of file StateUtil.h.

+ Here is the caller graph for this function:

◆ createEvent() [2/2]

EventPtr createEvent ( const std::string &  eventName,
const StringVariantContainerBaseMap &  properties = StringVariantContainerBaseMap() 
)

Utility function to create a new Event.

Definition at line 261 of file StateUtil.cpp.

◆ installCondition() [1/2]

ConditionIdentifier installCondition ( const Term condition,
const EventPtr  evt,
const std::string &  desc = "" 
)
protected

Utility function to install a condition on the distributed conditionhandler.

Parameters
conditionSmartpointer to the condition that should be installed on the conditionhandler
evtThe event that the statecharts wants to receive if the condition is fulfilled

Definition at line 97 of file StateUtil.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ installCondition() [2/2]

ConditionIdentifier installCondition ( const Term condition,
const std::string &  desc = "" 
)
inlineprotected

Utility function to install a condition on the distributed conditionhandler.

Parameters
conditionSmartpointer to the condition that should be installed on the conditionhandler
EventclassThe eventtype that the statecharts wants to receive if the condition is fulfilled

Definition at line 83 of file StateUtil.h.

+ Here is the call graph for this function:

◆ removeCondition()

void removeCondition ( ConditionIdentifier  conditionId)
protected

Utility function to remove an installed condition on the distributed conditionhandler.

Parameters
conditionIdThe ConditionIdentifier that was returned from installCondition

Definition at line 131 of file StateUtil.cpp.

+ Here is the caller graph for this function:

◆ removeCounterEvent()

void removeCounterEvent ( const ActionEventIdentifier id)
protected

Definition at line 226 of file StateUtil.cpp.

+ Here is the call graph for this function:

◆ removeTimeoutEvent()

void removeTimeoutEvent ( const ActionEventIdentifier id)
protected

Definition at line 178 of file StateUtil.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sendEvent() [1/2]

void sendEvent ( const EventPtr  event,
StateBasePtr  eventProcessor = nullptr 
)
protected

Function to send an event to a specific state from an onEnter()-function. Must not be called anywhere else. The event is processed after the onEnter()-function of this and all initial substates have returned.
Use of this function should be avoided since this statemachine is blocked until this event and all subsequent sendEvents() are processed.

Parameters
eventEvent that is to be sent
eventProcessorPointer to the state, that should process this event. If set to NULL, the event it sent to the parent state. If you want to leave the current state with this event, set this parameter to NULL.

Definition at line 38 of file StateUtil.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sendEvent() [2/2]

void sendEvent ( StateBasePtr  eventProcessor = nullptr)
inlineprotected

Definition at line 123 of file StateUtil.h.

+ Here is the call graph for this function:

◆ setCounterEvent() [1/2]

StateUtility::ActionEventIdentifier setCounterEvent ( int  counterThreshold,
const EventPtr evt,
int  initialValue = 0 
)
protected

Definition at line 192 of file StateUtil.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setCounterEvent() [2/2]

ActionEventIdentifier setCounterEvent ( int  counterThreshold,
int  initialValue = 0 
)
inlineprotected

Definition at line 106 of file StateUtil.h.

+ Here is the call graph for this function:

◆ setTimeoutEvent() [1/2]

ActionEventIdentifier setTimeoutEvent ( int  timeoutDurationMs)
inlineprotected

Definition at line 100 of file StateUtil.h.

+ Here is the call graph for this function:

◆ setTimeoutEvent() [2/2]

StateUtility::ActionEventIdentifier setTimeoutEvent ( int  timeoutDurationMs,
const EventPtr evt 
)
protected

Utility function to start a timer on the systemObserver and register an event on the conditionHandler. The condition is automatically removed, when the state is left.

Parameters
EventclassEventtype that the state wants to receive
timeoutDurationMsDuration until the event should be send back
Returns
Identifier for this timeoutevent to be able to remove/reset the condition/timer

Definition at line 144 of file StateUtil.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

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