00001 /* 00002 * ex: set ro: 00003 * DO NOT EDIT. 00004 * generated by smc (http://smc.sourceforge.net/) 00005 * from file : BondSM_sm.sm 00006 */ 00007 00008 #include "bondcpp/bond.h" 00009 #include "BondSM_sm.h" 00010 00011 using namespace statemap; 00012 00013 // Static class declarations. 00014 SM_WaitingForSister SM::WaitingForSister("SM::WaitingForSister", 0); 00015 SM_Alive SM::Alive("SM::Alive", 1); 00016 SM_AwaitSisterDeath SM::AwaitSisterDeath("SM::AwaitSisterDeath", 2); 00017 SM_Dead SM::Dead("SM::Dead", 3); 00018 00019 void BondSMState::ConnectTimeout(BondSMContext& context) 00020 { 00021 Default(context); 00022 return; 00023 } 00024 00025 void BondSMState::Die(BondSMContext& context) 00026 { 00027 Default(context); 00028 return; 00029 } 00030 00031 void BondSMState::DisconnectTimeout(BondSMContext& context) 00032 { 00033 Default(context); 00034 return; 00035 } 00036 00037 void BondSMState::HeartbeatTimeout(BondSMContext& context) 00038 { 00039 Default(context); 00040 return; 00041 } 00042 00043 void BondSMState::SisterAlive(BondSMContext& context) 00044 { 00045 Default(context); 00046 return; 00047 } 00048 00049 void BondSMState::SisterDead(BondSMContext& context) 00050 { 00051 Default(context); 00052 return; 00053 } 00054 00055 void BondSMState::Default(BondSMContext& context) 00056 { 00057 throw ( 00058 TransitionUndefinedException( 00059 context.getState().getName(), 00060 context.getTransition())); 00061 00062 return; 00063 } 00064 00065 void SM_WaitingForSister::ConnectTimeout(BondSMContext& context) 00066 { 00067 BondSM& ctxt(context.getOwner()); 00068 00069 (context.getState()).Exit(context); 00070 context.clearState(); 00071 try 00072 { 00073 ctxt.Death(); 00074 context.setState(SM::Dead); 00075 } 00076 catch (...) 00077 { 00078 context.setState(SM::Dead); 00079 throw; 00080 } 00081 (context.getState()).Entry(context); 00082 00083 return; 00084 } 00085 00086 void SM_WaitingForSister::Die(BondSMContext& context) 00087 { 00088 BondSM& ctxt(context.getOwner()); 00089 00090 (context.getState()).Exit(context); 00091 context.clearState(); 00092 try 00093 { 00094 ctxt.Death(); 00095 context.setState(SM::Dead); 00096 } 00097 catch (...) 00098 { 00099 context.setState(SM::Dead); 00100 throw; 00101 } 00102 (context.getState()).Entry(context); 00103 00104 return; 00105 } 00106 00107 void SM_WaitingForSister::SisterAlive(BondSMContext& context) 00108 { 00109 BondSM& ctxt(context.getOwner()); 00110 00111 (context.getState()).Exit(context); 00112 context.clearState(); 00113 try 00114 { 00115 ctxt.Connected(); 00116 context.setState(SM::Alive); 00117 } 00118 catch (...) 00119 { 00120 context.setState(SM::Alive); 00121 throw; 00122 } 00123 (context.getState()).Entry(context); 00124 00125 return; 00126 } 00127 00128 void SM_WaitingForSister::SisterDead(BondSMContext& context) 00129 { 00130 BondSM& ctxt(context.getOwner()); 00131 00132 (context.getState()).Exit(context); 00133 context.clearState(); 00134 try 00135 { 00136 ctxt.Connected(); 00137 ctxt.SisterDied(); 00138 ctxt.Death(); 00139 context.setState(SM::Dead); 00140 } 00141 catch (...) 00142 { 00143 context.setState(SM::Dead); 00144 throw; 00145 } 00146 (context.getState()).Entry(context); 00147 00148 return; 00149 } 00150 00151 void SM_Alive::Die(BondSMContext& context) 00152 { 00153 BondSM& ctxt(context.getOwner()); 00154 00155 (context.getState()).Exit(context); 00156 context.clearState(); 00157 try 00158 { 00159 ctxt.StartDying(); 00160 context.setState(SM::AwaitSisterDeath); 00161 } 00162 catch (...) 00163 { 00164 context.setState(SM::AwaitSisterDeath); 00165 throw; 00166 } 00167 (context.getState()).Entry(context); 00168 00169 return; 00170 } 00171 00172 void SM_Alive::HeartbeatTimeout(BondSMContext& context) 00173 { 00174 BondSM& ctxt(context.getOwner()); 00175 00176 (context.getState()).Exit(context); 00177 context.clearState(); 00178 try 00179 { 00180 ctxt.Death(); 00181 context.setState(SM::Dead); 00182 } 00183 catch (...) 00184 { 00185 context.setState(SM::Dead); 00186 throw; 00187 } 00188 (context.getState()).Entry(context); 00189 00190 return; 00191 } 00192 00193 void SM_Alive::SisterAlive(BondSMContext& context) 00194 { 00195 BondSM& ctxt(context.getOwner()); 00196 00197 (context.getState()).Exit(context); 00198 context.clearState(); 00199 try 00200 { 00201 ctxt.Heartbeat(); 00202 context.setState(SM::Alive); 00203 } 00204 catch (...) 00205 { 00206 context.setState(SM::Alive); 00207 throw; 00208 } 00209 (context.getState()).Entry(context); 00210 00211 return; 00212 } 00213 00214 void SM_Alive::SisterDead(BondSMContext& context) 00215 { 00216 BondSM& ctxt(context.getOwner()); 00217 00218 (context.getState()).Exit(context); 00219 context.clearState(); 00220 try 00221 { 00222 ctxt.SisterDied(); 00223 ctxt.Death(); 00224 context.setState(SM::Dead); 00225 } 00226 catch (...) 00227 { 00228 context.setState(SM::Dead); 00229 throw; 00230 } 00231 (context.getState()).Entry(context); 00232 00233 return; 00234 } 00235 00236 void SM_AwaitSisterDeath::Die(BondSMContext& context) 00237 { 00238 00239 (context.getState()).Exit(context); 00240 context.setState(SM::AwaitSisterDeath); 00241 (context.getState()).Entry(context); 00242 00243 return; 00244 } 00245 00246 void SM_AwaitSisterDeath::DisconnectTimeout(BondSMContext& context) 00247 { 00248 BondSM& ctxt(context.getOwner()); 00249 00250 (context.getState()).Exit(context); 00251 context.clearState(); 00252 try 00253 { 00254 ctxt.Death(); 00255 context.setState(SM::Dead); 00256 } 00257 catch (...) 00258 { 00259 context.setState(SM::Dead); 00260 throw; 00261 } 00262 (context.getState()).Entry(context); 00263 00264 return; 00265 } 00266 00267 void SM_AwaitSisterDeath::HeartbeatTimeout(BondSMContext& context) 00268 { 00269 00270 (context.getState()).Exit(context); 00271 context.setState(SM::AwaitSisterDeath); 00272 (context.getState()).Entry(context); 00273 00274 return; 00275 } 00276 00277 void SM_AwaitSisterDeath::SisterAlive(BondSMContext& context) 00278 { 00279 00280 (context.getState()).Exit(context); 00281 context.setState(SM::AwaitSisterDeath); 00282 (context.getState()).Entry(context); 00283 00284 return; 00285 } 00286 00287 void SM_AwaitSisterDeath::SisterDead(BondSMContext& context) 00288 { 00289 BondSM& ctxt(context.getOwner()); 00290 00291 (context.getState()).Exit(context); 00292 context.clearState(); 00293 try 00294 { 00295 ctxt.Death(); 00296 context.setState(SM::Dead); 00297 } 00298 catch (...) 00299 { 00300 context.setState(SM::Dead); 00301 throw; 00302 } 00303 (context.getState()).Entry(context); 00304 00305 return; 00306 } 00307 00308 void SM_Dead::ConnectTimeout(BondSMContext& context) 00309 { 00310 00311 (context.getState()).Exit(context); 00312 context.setState(SM::Dead); 00313 (context.getState()).Entry(context); 00314 00315 return; 00316 } 00317 00318 void SM_Dead::Die(BondSMContext& context) 00319 { 00320 00321 (context.getState()).Exit(context); 00322 context.setState(SM::Dead); 00323 (context.getState()).Entry(context); 00324 00325 return; 00326 } 00327 00328 void SM_Dead::DisconnectTimeout(BondSMContext& context) 00329 { 00330 00331 (context.getState()).Exit(context); 00332 context.setState(SM::Dead); 00333 (context.getState()).Entry(context); 00334 00335 return; 00336 } 00337 00338 void SM_Dead::HeartbeatTimeout(BondSMContext& context) 00339 { 00340 00341 (context.getState()).Exit(context); 00342 context.setState(SM::Dead); 00343 (context.getState()).Entry(context); 00344 00345 return; 00346 } 00347 00348 void SM_Dead::SisterAlive(BondSMContext& context) 00349 { 00350 00351 (context.getState()).Exit(context); 00352 context.setState(SM::Dead); 00353 (context.getState()).Entry(context); 00354 00355 return; 00356 } 00357 00358 void SM_Dead::SisterDead(BondSMContext& context) 00359 { 00360 00361 (context.getState()).Exit(context); 00362 context.setState(SM::Dead); 00363 (context.getState()).Entry(context); 00364 00365 return; 00366 } 00367 00368 /* 00369 * Local variables: 00370 * buffer-read-only: t 00371 * End: 00372 */