Go to the documentation of this file.
35 #include <condition_variable>
43 virtual public IceUtil::Shared,
72 void start(
bool enterToplevelState =
true);
86 template <
typename EventType>
89 EventPtr event =
new EventType(StateIceBasePtr::dynamicCast(receivingState)->stateName);
90 return addEvent(event, receivingState->__getParentState());
96 struct EventProcessingData
102 bool checkEvent(
const EventProcessingData& eventData)
const;
108 std::list<EventProcessingData> eventQueue;
110 mutable std::mutex eventQueueMutex;
111 std::condition_variable idleCondition;
115 mutable HiddenTimedMutex managerStateMutex;
119 StringVariantContainerBaseMap startParameters;
bool addEvent(const StateControllerPtr &receivingState)
virtual void processEvents()
StatePtr getToplevelState() const
StatechartManagerState getManagerState() const
void wakeUp()
wakeUp signals the event processing thread to wake up and check for new events or shutdown conditions
~StatechartManager() override
void start(bool enterToplevelState=true)
bool addEvent(const EventPtr &newEvent, const StateControllerPtr &receivingState)
Base Class for all Logging classes.
IceUtil::Handle< RunningTask< T > > pointer_type
Shared pointer type for convenience.
bool setToplevelState(const armarx::StatePtr &newToplevelState, StringVariantContainerBaseMap startParameters=StringVariantContainerBaseMap())
setToplevelState sets the toplevel state of this manager.
IceUtil::Handle< StatechartManager > StatechartManagerPtr
IceInternal::Handle< State > StatePtr
This file offers overloads of toIce() and fromIce() functions for STL container types.