RTP Trace System
1.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### Timed Thread #### 00007 // #### #### 00008 // #### Version 1.00 -- February 16, 2001 #### 00009 // #### #### 00010 // #### Copyright (C) 1999 Thomas Dreibholz #### 00011 // #### 2000 Universität Bonn, Abt. IV #### 00012 // #### 2001 EMail: dreibh@iem.uni-due.de #### 00013 // #### WWW: https://www.uni-due.de/~be0001 #### 00014 // #### #### 00015 // ########################################################################## 00016 00017 00018 #ifndef TIMEDTHREAD_H 00019 #define TIMEDTHREAD_H 00020 00021 00022 #include "system.h" 00023 #include "thread.h" 00024 00025 00026 #include <signal.h> 00027 00028 00029 #if _NSIG <= 31 00030 #error Your Kernel does not support more than 32 signals => SIGUSR1 reserved! Kernel update required! 00031 #endif 00032 00033 00034 namespace Coral { 00035 00036 00053 class TimedThread : public Thread 00054 { 00055 // ====== Constructor/Destructor ========================================= 00056 public: 00077 TimedThread(const card64 usec, const cardinal flags = ThreadCancelAsynchronous); 00078 00082 ~TimedThread(); 00083 00084 00085 // ====== Interval functions ============================================= 00091 inline card64 getInterval() const; 00092 00098 void setInterval(const card64 usec); 00099 00107 inline cardinal getTimerCorrection() const; 00108 00120 inline void setTimerCorrection(const cardinal maxCorrection = 0); 00121 00127 inline void leaveCorrectionLoop(); 00128 00136 inline void setFastStart(const bool on); 00137 00144 inline bool getFastStart() const; 00145 00149 void stop(); 00150 00156 inline bool pendingTimerEvent() const; 00157 00158 00159 // ====== timerEvent() to be implemented by subclass ===================== 00160 protected: 00167 virtual void timerEvent() = 0; 00168 00169 00170 // ====== Private data =================================================== 00171 private: 00172 void run(); 00173 00174 00175 card64 Interval; 00176 cardinal TimerCorrection; 00177 bool AlarmHandlerInitialized; 00178 bool FastStart; 00179 bool NewInterval; 00180 bool LeaveCorrectionLoop; 00181 }; 00182 00183 00184 } 00185 00186 00187 #include "timedthread.icc" 00188 00189 00190 #endif