/home/ltracy/workspace/NSUAN/uan/uan-tools.h

00001 #ifndef TOOLS_H_
00002 #define TOOLS_H_
00003 #undef NDEBUG
00004 
00013 #include "scheduler.h"
00014 
00015 typedef void (*pfEventHandler) (void *);
00016 
00017 void prnerr(char *fmt, ...);
00018 
00019 
00020 class UanTimer : public Handler {
00021 protected:
00023         void *object;
00024         
00026         bool busy;
00028         double stime;
00030         double rtime;
00032         Event intr;
00033                 
00034 public:
00036         UanTimer(void *obj) : Handler(), object(obj), busy(false) {     }
00037         
00039         virtual void start(double time);
00041         virtual void restart(double time);
00043         virtual void stop(void);
00045         virtual void handle(Event *e)=0;
00047         inline bool isBusy(void) {
00048                 return busy;
00049         }
00051         inline double expire(void) {
00052                 return ((stime + rtime) - Scheduler::instance().clock());
00053         }
00054         
00055 };
00056 
00068 class UanEventTimer : public UanTimer {
00069 protected:
00071         pfEventHandler handler;
00072 public:
00074         
00075         UanEventTimer(void *obj, pfEventHandler h) : UanTimer(obj), handler(h) {}
00076         
00078         virtual void handle(Event *e) {
00079                 handler(object);
00080                 busy = false;
00081         }
00082 };
00083 
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 
00093 #endif /*TOOLS_H_*/

Generated on Mon Oct 1 12:12:44 2007 for UANModule by  doxygen 1.5.1