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