sipxmedialib
Version 3.3
|
High-precision periodic timer (MultiMedia timer) base class. More...
#include <MpMMTimer.h>
Public Types | |
enum | MMTimerType { Linear = 0, Notification = 1 } |
Public Member Functions | |
Manipulators | |
virtual OsStatus | setNotification (OsNotification *notification) |
Set notification for the OsNotification timer type. More... | |
virtual OsStatus | run (unsigned usecPeriodic)=0 |
Start periodical firing. More... | |
virtual OsStatus | stop ()=0 |
Stop periodical firing. More... | |
virtual OsStatus | waitForNextTick () |
Accessors | |
virtual OsStatus | getResolution (unsigned &resolution) |
Get resolution of timer in microseconds. More... | |
virtual OsStatus | getPeriodRange (unsigned *pMinUSecs, unsigned *pMaxUSecs=NULL) |
Get the range of timer periods that can be generated. More... | |
MMTimerType | getTimerType () const |
Get the type of timer fire. More... | |
Protected Member Functions | |
MpMMTimer (MMTimerType type) | |
protected constructor, as this is an abstract class. More... | |
Protected Attributes | |
MMTimerType | mTimerType |
Creators | |
static MpMMTimer * | create (MMTimerType type, const UtlString &name="") |
Factory method to create timer class instance of the given type. More... | |
virtual | ~MpMMTimer () |
Destructor. More... | |
High-precision periodic timer (MultiMedia timer) base class.
This class is not supposed to be a generic purpose timer. You MUST read documentation for specific implementation of the timer and clearly understand what you're doing before using this. Media timers are very sensitive to incorrect usage and may cause deadlocks and crashes easily when used incorrectly. Main purpose of these timers is to provide ticks for MpMediaTask when there are no enabled sound card.
Use create() static method to get an instantiate of a timer.
enum MMTimerType |
Enumerator | |
---|---|
Linear |
For use with waitForNextTick() |
Notification |
For use with setNotification() |
|
virtual |
Destructor.
|
inlineprotected |
protected constructor, as this is an abstract class.
|
static |
Factory method to create timer class instance of the given type.
[in] | type | = Do we want linear timer or notifications timer? |
[in] | name | - type of a timer to create. Empty string means default timer for this platform. To date we support "Windows Multimedia" timers on Windows and "Posix" timers on Linux. |
|
virtual |
Set notification for the OsNotification timer type.
Signals will be sent to this notification when the timer ticks. Pointer to this timer instance will be set in eventData
member.
[in] | notification | - object to notify when timer fires/ticks. |
OS_SUCCESS | Returned when notification is set. |
OS_INVALID_STATE | Returned when calling this function for non-Notification timer type. |
OS_FAILED | Returned when mandatory initialization failed (maybe in the constructor) and later calls will fail for this instance also. |
Reimplemented in MpMMTimerPosix, and MpMMTimerWnt.
|
pure virtual |
Start periodical firing.
Start periodical firing with given period and fire type.
[in] | usecPeriodic | timer period in microseconds. |
OS_SUCCESS | Returns when timer has been created and ran. |
OS_INVALID_ARGUMENT | Returns when either value of uAlgorithm doesn't support in current realization or running OS couldn't create timer with specified usecPeriodic , but with another value of it, it could. |
OS_INVALID_STATE | Returns when timer has already been started or if the timer type is not supported. |
OS_LIMIT_REACHED | Returns when timer couldn't run due the resource limitation. |
OS_FAILED | Returns when mandatories initializations failed (maybe in constructor) and later calls will also fail for this instance. |
Implemented in MpMMTimerPosix, and MpMMTimerWnt.
|
pure virtual |
Stop periodical firing.
Stop periodical timer.
OS_SUCCESS | Returns when timer has been stopped. |
OS_FAILED | Returns when mandatory initialization failed (maybe in constructor) and later calls for this instance will fail. |
OS_INVALID_STATE | Returns when timer has not been started. |
Implemented in MpMMTimerPosix, and MpMMTimerWnt.
|
virtual |
Block this thread until the next tick occurs
OS_SUCCESS | Returns when next tick period occurs. |
OS_INVALID_STATE | Returns when calling this function for non-Linear timer type. |
OS_FAILED | Returns when mandatory initialization failed (maybe in constructor) and later calls for this instance will fail too. |
Reimplemented in MpMMTimerPosix, and MpMMTimerWnt.
|
virtual |
Get resolution of timer in microseconds.
[out] | resolution | - set to the finest resolution timer we can generate. |
OS_SUCCESS | - the resolution was able to be retrieved. |
OS_FAILED | - the resolution wasn't able to be retrieved. |
Reimplemented in MpMMTimerPosix, and MpMMTimerWnt.
|
virtual |
Get the range of timer periods that can be generated.
[out] | pMinUSecs | - set to the smallest period we can generate. |
[out] | pMaxUSecs | - set to the largest period we can generate. |
OS_SUCCESS | - the min and max periods were able to be retrieved. |
OS_FAILED | - the min and max periods weren't able to be retrieved. |
Reimplemented in MpMMTimerPosix, and MpMMTimerWnt.
|
inline |
Get the type of timer fire.
|
protected |