00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef _PTIMER
00035 #define _PTIMER
00036
00037 #ifdef P_USE_PRAGMA
00038 #pragma interface
00039 #endif
00040
00041 class PThread;
00042
00043 #include <ptlib/notifier.h>
00044
00073 class PTimer : public PTimeInterval
00074 {
00075 PCLASSINFO(PTimer, PTimeInterval);
00076
00077 public:
00085 PTimer(
00086 long milliseconds = 0,
00087 int seconds = 0,
00088 int minutes = 0,
00089 int hours = 0,
00090 int days = 0
00091 );
00092 PTimer(
00093 const PTimeInterval & time
00094 );
00095
00102 PTimer & operator=(
00103 DWORD milliseconds
00104 );
00105 PTimer & operator=(
00106 const PTimeInterval & time
00107 );
00108
00112 virtual ~PTimer();
00114
00128 virtual void SetInterval(
00129 PInt64 milliseconds = 0,
00130 long seconds = 0,
00131 long minutes = 0,
00132 long hours = 0,
00133 int days = 0
00134 );
00135
00140 void RunContinuous(
00141 const PTimeInterval & time
00142 );
00143
00148 void Stop();
00149
00156 PBoolean IsRunning() const;
00157
00162 void Pause();
00163
00168 void Resume();
00169
00175 PBoolean IsPaused() const;
00176
00179 void Reset();
00180
00183 const PTimeInterval & GetResetTime() const;
00185
00200 virtual void OnTimeout();
00201
00208 const PNotifier & GetNotifier() const;
00209
00213 void SetNotifier(
00214 const PNotifier & func
00215 );
00217
00232 static PTimeInterval Tick();
00233
00242 static unsigned Resolution();
00244
00245 private:
00246 void Construct();
00247
00248
00249
00250
00251 void StartRunning(
00252 PBoolean once
00253 );
00254
00255
00256
00257
00258
00259 void Process(
00260 const PTimeInterval & delta,
00261 PTimeInterval & minTimeLeft
00262 );
00263
00264
00265 PNotifier callback;
00266
00267
00268 PTimeInterval resetTime;
00269
00270
00271 PBoolean oneshot;
00272
00273
00274 enum { Stopped, Starting, Running, Paused } state;
00275
00276
00277
00278 friend class PTimerList;
00279 class PTimerList * timerList;
00280
00281
00282
00283 #ifdef _WIN32
00284 #include "msos/ptlib/timer.h"
00285 #else
00286 #include "unix/ptlib/timer.h"
00287 #endif
00288 };
00289
00290 #endif
00291
00292
00293