00001
00002 #ifndef INCLUDED_TimeOutTrans_h_
00003 #define INCLUDED_TimeOutTrans_h_
00004
00005 #include "Behaviors/Transition.h"
00006 #include "Events/EventRouter.h"
00007
00008
00009 class TimeOutTrans : public Transition {
00010 public:
00011
00012 TimeOutTrans(StateNode* destination, unsigned int delay) : Transition("TimeOutTrans",destination), d(delay) {}
00013
00014
00015 TimeOutTrans(const std::string& name, StateNode* destination, unsigned int delay) : Transition("TimeOutTrans",name,destination), d(delay) {}
00016
00017
00018 virtual void DoStart() {
00019 Transition::DoStart();
00020 resetTimer();
00021 }
00022
00023
00024 virtual void DoStop() { erouter->removeListener(this); Transition::DoStop(); }
00025
00026
00027 void resetTimer() {
00028
00029 erouter->addTimer(this,0,d,false);
00030 }
00031
00032
00033 virtual void processEvent(const EventBase&) {
00034
00035 fire();
00036 }
00037
00038 protected:
00039
00040 TimeOutTrans(const std::string& classname, const std::string& instancename, StateNode* destination, unsigned int delay) : Transition(classname,instancename,destination), d(delay) {}
00041
00042
00043 unsigned int d;
00044 };
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 #endif