IntervalTimer.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __ccxx_IntervalTimer_hxx
00024 #define __ccxx_IntervalTimer_hxx
00025
00026 #include <commonc++/Common.h++>
00027 #include <commonc++/SystemException.h++>
00028
00029 #ifdef CCXX_OS_POSIX
00030 #include <signal.h>
00031 #include <time.h>
00032 #endif
00033
00034 namespace ccxx {
00035
00046 class COMMONCPP_API IntervalTimer
00047 {
00048 public:
00049
00051 virtual ~IntervalTimer() throw();
00052
00057 void start() throw(SystemException);
00058
00060 void stop() throw();
00061
00063 inline uint_t getInitialDelay() const throw()
00064 { return(_initialDelay); }
00065
00069 inline void setInitialDelay(uint_t initialDelay) throw()
00070 { _initialDelay = initialDelay; }
00071
00073 inline uint_t getInterval() const throw()
00074 { return(_interval); }
00075
00079 inline void setInterval(uint_t interval) throw()
00080 { _interval = interval; }
00081
00083 inline bool isRunning() const throw()
00084 { return(_running); }
00085
00086 protected:
00087
00096 IntervalTimer(uint_t initialDelay, uint_t interval = 0);
00097
00099 virtual void fired() = 0;
00100
00101 private:
00102
00103 #ifdef CCXX_OS_WINDOWS
00104 static void CALLBACK _callback(LPVOID arg, DWORD timerLowValue,
00105 DWORD timerHighValue);
00106 #else
00107 static void _callback(union sigval data);
00108 #endif
00109
00110 uint_t _initialDelay;
00111 uint_t _interval;
00112 bool _running;
00113
00114 #if defined(CCXX_OS_WINDOWS)
00115 HANDLE _timer;
00116 #elif ! defined(CCXX_OS_MACOSX)
00117 timer_t _timer;
00118 struct sigevent _event;
00119 #endif
00120 };
00121
00122 };
00123
00124 #endif // __ccxx_IntervalTimer_hxx
00125
00126