RTP Trace System  1.0
timedthread.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines