BondSM_sm.h
Go to the documentation of this file.
00001 #ifndef _H_BONDSM_SM
00002 #define _H_BONDSM_SM
00003 
00004 /*
00005  * ex: set ro:
00006  * DO NOT EDIT.
00007  * generated by smc (http://smc.sourceforge.net/)
00008  * from file : BondSM_sm.sm
00009  */
00010 
00011 
00012 #define SMC_USES_IOSTREAMS
00013 
00014 #include <smclib/statemap.h>
00015 
00016 // Forward declarations.
00017 class SM;
00018 class SM_WaitingForSister;
00019 class SM_Alive;
00020 class SM_AwaitSisterDeath;
00021 class SM_Dead;
00022 class SM_Default;
00023 class BondSMState;
00024 class BondSMContext;
00025 class BondSM;
00026 
00027 class BondSMState :
00028     public statemap::State
00029 {
00030 public:
00031 
00032     BondSMState(const char *name, int stateId)
00033     : statemap::State(name, stateId)
00034     {};
00035 
00036     virtual void Entry(BondSMContext&) {};
00037     virtual void Exit(BondSMContext&) {};
00038 
00039     virtual void ConnectTimeout(BondSMContext& context);
00040     virtual void Die(BondSMContext& context);
00041     virtual void DisconnectTimeout(BondSMContext& context);
00042     virtual void HeartbeatTimeout(BondSMContext& context);
00043     virtual void SisterAlive(BondSMContext& context);
00044     virtual void SisterDead(BondSMContext& context);
00045 
00046 protected:
00047 
00048     virtual void Default(BondSMContext& context);
00049 };
00050 
00051 class SM
00052 {
00053 public:
00054 
00055     static SM_WaitingForSister WaitingForSister;
00056     static SM_Alive Alive;
00057     static SM_AwaitSisterDeath AwaitSisterDeath;
00058     static SM_Dead Dead;
00059 };
00060 
00061 class SM_Default :
00062     public BondSMState
00063 {
00064 public:
00065 
00066     SM_Default(const char *name, int stateId)
00067     : BondSMState(name, stateId)
00068     {};
00069 
00070 };
00071 
00072 class SM_WaitingForSister :
00073     public SM_Default
00074 {
00075 public:
00076     SM_WaitingForSister(const char *name, int stateId)
00077     : SM_Default(name, stateId)
00078     {};
00079 
00080     void ConnectTimeout(BondSMContext& context);
00081     void Die(BondSMContext& context);
00082     void SisterAlive(BondSMContext& context);
00083     void SisterDead(BondSMContext& context);
00084 };
00085 
00086 class SM_Alive :
00087     public SM_Default
00088 {
00089 public:
00090     SM_Alive(const char *name, int stateId)
00091     : SM_Default(name, stateId)
00092     {};
00093 
00094     void Die(BondSMContext& context);
00095     void HeartbeatTimeout(BondSMContext& context);
00096     void SisterAlive(BondSMContext& context);
00097     void SisterDead(BondSMContext& context);
00098 };
00099 
00100 class SM_AwaitSisterDeath :
00101     public SM_Default
00102 {
00103 public:
00104     SM_AwaitSisterDeath(const char *name, int stateId)
00105     : SM_Default(name, stateId)
00106     {};
00107 
00108     void Die(BondSMContext& context);
00109     void DisconnectTimeout(BondSMContext& context);
00110     void HeartbeatTimeout(BondSMContext& context);
00111     void SisterAlive(BondSMContext& context);
00112     void SisterDead(BondSMContext& context);
00113 };
00114 
00115 class SM_Dead :
00116     public SM_Default
00117 {
00118 public:
00119     SM_Dead(const char *name, int stateId)
00120     : SM_Default(name, stateId)
00121     {};
00122 
00123     void ConnectTimeout(BondSMContext& context);
00124     void Die(BondSMContext& context);
00125     void DisconnectTimeout(BondSMContext& context);
00126     void HeartbeatTimeout(BondSMContext& context);
00127     void SisterAlive(BondSMContext& context);
00128     void SisterDead(BondSMContext& context);
00129 };
00130 
00131 class BondSMContext :
00132     public statemap::FSMContext
00133 {
00134 public:
00135 
00136     BondSMContext(BondSM& owner)
00137     : FSMContext(SM::WaitingForSister),
00138       _owner(owner)
00139     {};
00140 
00141     BondSMContext(BondSM& owner, const statemap::State& state)
00142     : FSMContext(state),
00143       _owner(owner)
00144     {};
00145 
00146     virtual void enterStartState()
00147     {
00148         getState().Entry(*this);
00149         return;
00150     }
00151 
00152     BondSM& getOwner() const
00153     {
00154         return (_owner);
00155     };
00156 
00157     BondSMState& getState() const
00158     {
00159         if (_state == NULL)
00160         {
00161             throw statemap::StateUndefinedException();
00162         }
00163 
00164         return (dynamic_cast<BondSMState&>(*_state));
00165     };
00166 
00167     void ConnectTimeout()
00168     {
00169         (getState()).ConnectTimeout(*this);
00170     };
00171 
00172     void Die()
00173     {
00174         (getState()).Die(*this);
00175     };
00176 
00177     void DisconnectTimeout()
00178     {
00179         (getState()).DisconnectTimeout(*this);
00180     };
00181 
00182     void HeartbeatTimeout()
00183     {
00184         (getState()).HeartbeatTimeout(*this);
00185     };
00186 
00187     void SisterAlive()
00188     {
00189         (getState()).SisterAlive(*this);
00190     };
00191 
00192     void SisterDead()
00193     {
00194         (getState()).SisterDead(*this);
00195     };
00196 
00197 private:
00198 
00199     BondSM& _owner;
00200 };
00201 
00202 
00203 /*
00204  * Local variables:
00205  *  buffer-read-only: t
00206  * End:
00207  */
00208 
00209 #endif // _H_BONDSM_SM


bondcpp
Author(s): Stuart Glaser
autogenerated on Sun Oct 5 2014 22:32:29