30 #ifndef _MIRA_STATEMACHINE_H_ 31 #define _MIRA_STATEMACHINE_H_ 46 namespace mira {
namespace sm {
50 template <
typename T,
typename Sequence = std::vector<T>,
typename Compare = std::less<
typename Sequence::value_type>>
76 template<
typename Reflector>
79 r.interface(
"IStateMachine");
82 r.method(
"sendEventByName",
84 this,
"Send an event by name",
85 "event",
"Event name",
"MyEvent");
86 r.method(
"sendEventByName",
88 this,
"Send an event by name",
89 "event",
"Event name",
"jsonData",
"Event data (JSON notation)");
90 r.method(
"sendEventByName",
92 this,
"Send an event by name",
93 "event",
"Event name",
"jsonData",
"Event data (JSON notation)",
"delay",
"Delay (in ms) before event is dispatched");
99 void load(
const Path& filename);
112 void sendEvent(
const Event& event);
118 void sendEventByName(
const std::string& event,
const std::string& jsonData,
const uint64 delay);
123 void cancelEvent(
const std::string& sendid);
128 bool inState(
const std::string& state)
const;
138 std::set<std::string> getConfiguration()
const;
148 std::string getNamespace()
const;
153 std::string resolveName(
const std::string& name)
const;
158 std::string resolveServiceName(
const std::string& name)
const;
165 void executePython(
const std::string& script,
bool ignoreErrors =
false);
176 bool matchesCondition(
const std::string& condition);
194 void parseExecutableContent(
XMLDom::iterator node,
const std::string& nodeInfo =
"");
196 void publishConfiguration();
205 std::map<std::string, TransitionTargetPtr>
mTargets;
220 return lhsTime > rhsTime;
Definition: StateMachineListener.h:41
const_iterator begin() const
Definition: StateMachine.h:59
boost::shared_ptr< TransitionTarget > TransitionTargetPtr
Definition: TransitionTarget.h:54
boost::filesystem::path Path
boost::shared_ptr< Authority > mAuthority
Definition: StateMachine.h:236
std::map< std::string, TransitionTargetPtr > mTargets
Definition: StateMachine.h:205
std::vector< StateMachineListener * > mListener
Definition: StateMachine.h:231
EventQueue mInternalEvents
Definition: StateMachine.h:224
Authority * mParentAuthority
Definition: StateMachine.h:235
void sendEventByName(const std::string &event, const std::string &jsonData)
Definition: StateMachine.h:117
void sendEvent(const Event &event)
Send an event to the state machine.
Definition: StateMachine.h:51
sibling_iterator iterator
std::string mName
Definition: StateMachine.h:200
iterable_priority_queue< Event, std::vector< Event >, EventLessComp > EventQueue
Definition: StateMachine.h:223
std::set< TransitionTargetPtr, SortEntryOrder > TransitionTargetSet
Definition: TransitionTarget.h:118
TransitionTargetPtr mSCXML
Definition: StateMachine.h:203
void interrupt()
Interrupt the interpreter.
Definition: StateMachine.h:108
Channel< std::set< std::string > > mStateChannel
Definition: StateMachine.h:227
std::string mBinding
Definition: StateMachine.h:204
iterator end()
Definition: StateMachine.h:58
Event mCurrentEvent
Definition: StateMachine.h:229
const_iterator end() const
Definition: StateMachine.h:60
std::list< TransitionPtr > TransitionList
Definition: TransitionTarget.h:58
void reflect(Reflector &r)
Definition: StateMachine.h:77
Channel< std::set< std::string > > mCompressedStateChannel
Definition: StateMachine.h:228
Time invocationTime
Definition: Event.h:113
uint64 delay
Definition: Event.h:112
bool mRunning
Definition: StateMachine.h:209
boost::shared_ptr< FinalState > FinalStatePtr
Definition: TransitionTarget.h:169
#define MIRA_STATEMACHINE_EXPORT
Definition: StateMachineExports.h:41
Sequence::const_iterator const_iterator
Definition: StateMachine.h:55
void sendEventByName(const std::string &event)
Send an event by name to the state machine.
Definition: StateMachine.h:116
boost::shared_ptr< HistoryState > HistoryStatePtr
Definition: TransitionTarget.h:50
std::list< TransitionTargetPtr > TransitionTargetList
Definition: TransitionTarget.h:55
boost::shared_ptr< Transition > TransitionPtr
Definition: TransitionTarget.h:57
boost::mutex mRunMutex
Definition: StateMachine.h:208
SCXML based state machine interpreter.
Definition: StateMachine.h:69
uint32 mCurrentID
Definition: StateMachine.h:202
XMLDom mDocument
Definition: StateMachine.h:201
TransitionTargetSet mConfiguration
Definition: StateMachine.h:210
Auto-generated file for export macro definition.
EventQueue mExternalEvents
Definition: StateMachine.h:225
boost::python::object mPythonContext
Definition: StateMachine.h:233
std::map< std::string, TransitionTargetSet > mHistoryValue
Definition: StateMachine.h:206
bool isRunning() const
Returns if the interpreter is running.
Definition: StateMachine.h:132
iterator begin()
Definition: StateMachine.h:57
Definition: StateMachine.h:211
Sequence::iterator iterator
Definition: StateMachine.h:54
std::set< std::string > mSubscribedChannels
Definition: StateMachine.h:226