3 #ifndef SZA_UTIL_ABSOLUTETIMER_H
4 #define SZA_UTIL_ABSOLUTETIMER_H
21 #include "carma/szautil/Time.h"
23 #define ABSOLUTE_TIMER_HANDLER(fn) void (fn)(void* args)
32 class AbsoluteTimerMsg :
public GenericTaskMsg {
46 unsigned delayInSeconds;
47 unsigned delayInNanoSeconds;
49 unsigned offsetInNanoSeconds;
51 unsigned intervalInSeconds;
52 unsigned intervalInNanoSeconds;
57 ABSOLUTE_TIMER_HANDLER(*fn);
62 ABSOLUTE_TIMER_HANDLER(*fn);
77 public SpawnableTask<AbsoluteTimerMsg> {
86 ABSOLUTE_TIMER_HANDLER(*fn_);
98 virtual ~AbsoluteTimer();
102 void addHandler(ABSOLUTE_TIMER_HANDLER(*handler),
void* args=0);
106 void removeHandler(ABSOLUTE_TIMER_HANDLER(*handler));
111 unsigned delayInSeconds=0,
unsigned delayInNanoSeconds=0,
112 unsigned offsetInNanoSeconds=0,
113 unsigned intervalInSeconds=0,
unsigned intervalInNanoSeconds=0);
120 bool firstTimeoutSinceReconfiguration_;
121 double firstTimeToFireInSeconds_;
127 std::vector<Handler> handlers_;
133 void executeEnableTimer(
bool enable,
134 unsigned delayInSeconds,
unsigned delayInNanoSeconds,
135 unsigned offsetInNanoSeconds,
136 unsigned intervalInSeconds,
unsigned intervalInNanoSeconds);
137 void executeAddHandler(ABSOLUTE_TIMER_HANDLER(*handler),
void* args=0);
138 void executeRemoveHandler(ABSOLUTE_TIMER_HANDLER(*handler));
145 void processMsg(AbsoluteTimerMsg* msg);
149 void registerTimeOut();
153 void computeNextTimeout();
162 #endif // End #ifndef SZA_UTIL_ABSOLUTETIMER_H
Tagged: Fri Nov 14 12:39:33 UTC 2003.
virtual void addHandler(AbsoluteTimerMsg *msg)
Respond to a message to add/remove a handler.
virtual void enableTimer(AbsoluteTimerMsg *msg)
Respond to a message to enable/disable a timer.
Tagged: Fri Nov 14 12:39:34 UTC 2003.
Tagged: Tue May 2 16:31:46 PDT 2006.
Tagged: Fri Jan 26 16:49:57 NZDT 2007.