sipxmedialib  Version 3.3
Static Public Attributes | Static Protected Member Functions | Protected Attributes | List of all members
MpMMTimerWnt Class Reference

Windows implementation of High-precision periodic timer (MultiMedia timer). More...

#include <MpMMTimerWnt.h>

Inheritance diagram for MpMMTimerWnt:
Inheritance graph
[legend]
Collaboration diagram for MpMMTimerWnt:
Collaboration graph
[legend]

Public Member Functions

Creators
 MpMMTimerWnt (MpMMTimer::MMTimerType type)
 
virtual ~MpMMTimerWnt ()
 
Manipulators
OsStatus setNotification (OsNotification *notification)
 Set notification for the OsNotification timer type. More...
 
OsStatus run (unsigned usecPeriodic)
 Start periodical firing. More...
 
OsStatus stop ()
 Stop periodical firing. More...
 
OsStatus waitForNextTick ()
 
Accessors
OsStatus getResolution (unsigned &resolution)
 Get resolution of timer in microseconds. More...
 
OsStatus getPeriodRange (unsigned *pMinUSecs, unsigned *pMaxUSecs=NULL)
 Get the range of timer periods that can be generated. More...
 
- Public Member Functions inherited from MpMMTimer
MMTimerType getTimerType () const
 Get the type of timer fire. More...
 
virtual ~MpMMTimer ()
 Destructor. More...
 

Static Public Attributes

static const char *const TYPE = "Windows Multimedia"
 

Static Protected Member Functions

static void CALLBACK timeProcCallback (UINT uID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2)
 Callback used by Windows Multimedia Timers. More...
 

Protected Attributes

BOOL mbInitialized
 Whether we're fully initialized or not, or are in some failure state. More...
 
BOOL mbTimerStarted
 Indicator of timer started or not. More...
 
unsigned mPeriodMSec
 The current millisecond period being used. 0 when no timer. More...
 
unsigned mResolution
 Cached timer resolution in ms, queried for and stored at startup. More...
 
HANDLE mEventHandle
 Only valid in Linear mode, holds handle to an event. More...
 
OsNotification * mpNotification
 Notification object used to signal a tick of the timer. More...
 
MMRESULT mTimerId
 The ID of the MM timer we're using. More...
 
- Protected Attributes inherited from MpMMTimer
MMTimerType mTimerType
 

Additional Inherited Members

- Public Types inherited from MpMMTimer
enum  MMTimerType { Linear = 0, Notification = 1 }
 
- Static Public Member Functions inherited from MpMMTimer
static MpMMTimercreate (MMTimerType type, const UtlString &name="")
 Factory method to create timer class instance of the given type. More...
 
- Protected Member Functions inherited from MpMMTimer
 MpMMTimer (MMTimerType type)
 protected constructor, as this is an abstract class. More...
 

Detailed Description

Windows implementation of High-precision periodic timer (MultiMedia timer).

This timer is implemented using Microsoft Multimedia timers (W95+, CE). Other possible choices, which have yet to be implemented: 1) Microsoft Waitable Timers (W98/NT+) 2) Microsoft Queue Timers (W2k+) Queue timers would be good to support though! They have less overhead, and similar high resolution. See http://www.codeproject.com/system/timers_intro.asp

Constructor & Destructor Documentation

~MpMMTimerWnt ( )
virtual

Member Function Documentation

OsStatus setNotification ( OsNotification *  notification)
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.

Parameters
[in]notification- object to notify when timer fires/ticks.
Return values
OS_SUCCESSReturned when notification is set.
OS_INVALID_STATEReturned when calling this function for non-Notification timer type.
OS_FAILEDReturned when mandatory initialization failed (maybe in the constructor) and later calls will fail for this instance also.

Reimplemented from MpMMTimer.

OsStatus run ( unsigned  usecPeriodic)
virtual

Start periodical firing.

Start periodical firing with given period and fire type.

Parameters
[in]usecPeriodictimer period in microseconds.
Return values
OS_SUCCESSReturns when timer has been created and ran.
OS_INVALID_ARGUMENTReturns 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_STATEReturns when timer has already been started or if the timer type is not supported.
OS_LIMIT_REACHEDReturns when timer couldn't run due the resource limitation.
OS_FAILEDReturns when mandatories initializations failed (maybe in constructor) and later calls will also fail for this instance.

Implements MpMMTimer.

OsStatus stop ( void  )
virtual

Stop periodical firing.

Stop periodical timer.

Return values
OS_SUCCESSReturns when timer has been stopped.
OS_FAILEDReturns when mandatory initialization failed (maybe in constructor) and later calls for this instance will fail.
OS_INVALID_STATEReturns when timer has not been started.

Implements MpMMTimer.

OsStatus waitForNextTick ( )
virtual

Block this thread until the next tick occurs

Return values
OS_SUCCESSReturns when next tick period occurs.
OS_INVALID_STATEReturns when calling this function for non-Linear timer type.
OS_FAILEDReturns when mandatory initialization failed (maybe in constructor) and later calls for this instance will fail too.

Reimplemented from MpMMTimer.

OsStatus getResolution ( unsigned &  resolution)
virtual

Get resolution of timer in microseconds.

Parameters
[out]resolution- set to the finest resolution timer we can generate.
Return values
OS_SUCCESS- the resolution was able to be retrieved.
OS_FAILED- the resolution wasn't able to be retrieved.

Reimplemented from MpMMTimer.

OsStatus getPeriodRange ( unsigned *  pMinUSecs,
unsigned *  pMaxUSecs = NULL 
)
virtual

Get the range of timer periods that can be generated.

Parameters
[out]pMinUSecs- set to the smallest period we can generate.
[out]pMaxUSecs- set to the largest period we can generate.
Return values
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 from MpMMTimer.

void CALLBACK timeProcCallback ( UINT  uID,
UINT  uMsg,
DWORD_PTR  dwUser,
DWORD_PTR  dw1,
DWORD_PTR  dw2 
)
staticprotected

Callback used by Windows Multimedia Timers.

Member Data Documentation

const char *const TYPE = "Windows Multimedia"
static
BOOL mbInitialized
protected

Whether we're fully initialized or not, or are in some failure state.

BOOL mbTimerStarted
protected

Indicator of timer started or not.

unsigned mPeriodMSec
protected

The current millisecond period being used. 0 when no timer.

unsigned mResolution
protected

Cached timer resolution in ms, queried for and stored at startup.

HANDLE mEventHandle
protected

Only valid in Linear mode, holds handle to an event.

OsNotification* mpNotification
protected

Notification object used to signal a tick of the timer.

MMRESULT mTimerId
protected

The ID of the MM timer we're using.