27#include <condition_variable>
60 StringVariantContainerBaseMap startParameters = StringVariantContainerBaseMap());
70 void start(
bool enterToplevelState =
true);
85 template <
typename EventType>
89 EventPtr event =
new EventType(StateIceBasePtr::dynamicCast(receivingState)->stateName);
90 return addEvent(event, receivingState->__getParentState());
97 struct EventProcessingData
103 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;
IceUtil::Handle< RunningTask< T > > pointer_type
Shared pointer type for convenience.
void wakeUp()
wakeUp signals the event processing thread to wake up and check for new events or shutdown conditions
void start(bool enterToplevelState=true)
StatePtr getToplevelState() const
bool addEvent(const StateControllerPtr &receivingState)
bool setToplevelState(const armarx::StatePtr &newToplevelState, StringVariantContainerBaseMap startParameters=StringVariantContainerBaseMap())
setToplevelState sets the toplevel state of this manager.
bool addEvent(const EventPtr &newEvent, const StateControllerPtr &receivingState)
~StatechartManager() override
virtual void processEvents()
StatechartManagerState getManagerState() const
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceInternal::Handle< State > StatePtr
IceInternal::Handle< Event > EventPtr
Typedef of EventPtr as IceInternal::Handle<Event> for convenience.
IceUtil::Handle< StatechartManager > StatechartManagerPtr
IceInternal::Handle< StateController > StateControllerPtr