1 #ifndef _ots_FiniteStateMachine_h
2 #define _ots_FiniteStateMachine_h
4 #include <toolbox/fsm/FiniteStateMachine.h>
5 #include <xoap/MessageReference.h>
17 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) )
25 throw (toolbox::fsm::exception::Exception)
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) )
39 throw (toolbox::fsm::exception::Exception)
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)
throw (toolbox::fsm::exception::Exception);
48 std::string getProvenanceStateName (
void);
49 std::string getCurrentStateName (
void);
50 time_t getTimeInState (
void);
51 std::string getCurrentTransitionName (
const std::string &transition)
throw (toolbox::fsm::exception::Exception);
52 std::string getTransitionName (
const toolbox::fsm::State from,
const std::string &transition)
throw (toolbox::fsm::exception::Exception);
53 std::string getTransitionParameter (
const toolbox::fsm::State from,
const std::string &transition)
throw (toolbox::fsm::exception::Exception);
54 std::string getTransitionFinalStateName(
const std::string &transition)
throw (toolbox::fsm::exception::Exception);
55 const std::string &getErrorMessage()
const;
57 const xoap::MessageReference& getCurrentMessage(
void);
59 bool execTransition (
const std::string &transition)
throw (toolbox::fsm::exception::Exception);
60 bool execTransition (
const std::string &transition,
const xoap::MessageReference& message)
throw (toolbox::fsm::exception::Exception);
61 bool isInTransition (
void);
62 void setInitialState(toolbox::fsm::State state);
63 void setErrorMessage(
const std::string &errMessage);
67 time_t stateEntranceTime_;
76 volatile bool inTransition_;
77 toolbox::fsm::State provenanceState_;
78 std::map<toolbox::fsm::State, std::map<std::string, std::string, std::less<std::string> > > stateTransitionNameTable_;
79 std::map<toolbox::fsm::State, std::map<std::string, std::string, std::less<std::string> > > stateTransitionParameterTable_;
81 xoap::MessageReference theMessage_;
82 std::string theErrorMessage_;