1 #ifndef _ots_FiniteStateMachine_h
2 #define _ots_FiniteStateMachine_h
4 #include <toolbox/fsm/FiniteStateMachine.h>
5 #include <xoap/MessageReference.h>
16 using toolbox::fsm::FiniteStateMachine::addStateTransition;
18 template<
class OBJECT>
19 void addStateTransition(toolbox::fsm::State from,
20 toolbox::fsm::State to,
21 const std::string& input,
22 const std::string& transitionName,
24 void (OBJECT::*func)(toolbox::Event::Reference))
27 stateTransitionNameTable_[from][input] = transitionName;
28 toolbox::fsm::FiniteStateMachine::addStateTransition(from, to, input, obj, func);
31 template<
class OBJECT>
32 void addStateTransition (toolbox::fsm::State from,
33 toolbox::fsm::State to,
34 const std::string& input,
35 const std::string& transitionName,
36 const std::string& transitionParameter,
38 void (OBJECT::*func)(toolbox::Event::Reference))
41 stateTransitionParameterTable_[from][input] = transitionParameter;
42 addStateTransition(from, to, input, transitionName, obj, func);
45 toolbox::fsm::State getProvenanceState (
void);
46 toolbox::fsm::State getTransitionFinalState (
const std::string& transition);
48 std::string getProvenanceStateName (
void);
49 std::string getCurrentStateName (
void);
51 std::string getCurrentTransitionName (
const std::string& transition =
"");
52 std::string getTransitionName (
const toolbox::fsm::State from,
const std::string& transition);
53 std::string getTransitionParameter (
const toolbox::fsm::State from,
const std::string& transition);
54 std::string getTransitionFinalStateName (
const std::string& transition);
55 const std::string& getErrorMessage (
void)
const;
56 const std::string& getStateMachineName (
void)
const {
return stateMachineName_; }
57 void setStateMachineName (
const std::string& name) { stateMachineName_ = name; }
59 const xoap::MessageReference& getCurrentMessage (
void) {
return theMessage_; }
61 bool execTransition (
const std::string& transition);
62 bool execTransition (
const std::string& transition,
const xoap::MessageReference& message);
63 bool isInTransition (
void);
64 void setInitialState (toolbox::fsm::State state);
65 void setErrorMessage (
const std::string& errMessage,
bool append =
true);
67 static const std::string FAILED_STATE_NAME, ERROR_TRANSITION_NAME;
68 static const char FAILED_STATE;
70 time_t stateEntranceTime_;
82 toolbox::fsm::State provenanceState_;
83 std::string currentTransition_;
84 std::map<toolbox::fsm::State,
85 std::map<std::string, std::string,
86 std::less<std::string> > > stateTransitionNameTable_;
87 std::map<toolbox::fsm::State,
88 std::map<std::string, std::string,
89 std::less<std::string> > > stateTransitionParameterTable_;
91 xoap::MessageReference theMessage_;
92 std::string theErrorMessage_;
93 std::string stateMachineName_;
volatile bool inTransition_
time_t getTimeInState(void) const