PTLib  Version 2.10.10
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PAdaptiveDelay Class Reference

Class for implementing an "adaptive" delay. More...

#include <delaychan.h>

Inheritance diagram for PAdaptiveDelay:
PObject

Public Member Functions

Construction
 PAdaptiveDelay (unsigned maximumSlip=0, unsigned minimumDelay=0)
 Create a new adaptive delay with the specified parameters. More...
 
Operating Parameters
void SetMaximumSlip (PTimeInterval maximumSlip)
 Set the number of milliseconds that the delay may "catch up" by using zero delays. More...
 
PTimeInterval GetMaximumSlip () const
 Get the current slip time. More...
 
Functionality
PBoolean Delay (int time)
 Wait until the specified number of milliseconds have elapsed from the previous call (on average). More...
 
void Restart ()
 Invalidate the timer. More...
 
- Public Member Functions inherited from PObject
virtual ~PObject ()
 
virtual PObjectClone () const
 Create a copy of the class on the heap. More...
 
virtual PINDEX HashFunction () const
 This function yields a hash value required by the PDictionary class. More...
 
virtual Comparison Compare (const PObject &obj) const
 Compare the two objects and return their relative rank. More...
 
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects. More...
 
bool operator== (const PObject &obj) const
 Compare the two objects. More...
 
bool operator!= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator< (const PObject &obj) const
 Compare the two objects. More...
 
bool operator> (const PObject &obj) const
 Compare the two objects. More...
 
bool operator<= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator>= (const PObject &obj) const
 Compare the two objects. More...
 
virtual const char * GetClass (unsigned ancestor=0) const
 Get the current dynamic type of the object instance. More...
 
PBoolean IsClass (const char *cls) const
 
virtual PBoolean InternalIsDescendant (const char *clsName) const
 Determine if the dynamic type of the current instance is a descendent of the specified class. More...
 
virtual void PrintOn (ostream &strm) const
 Output the contents of the object to the stream. More...
 
virtual void ReadFrom (istream &strm)
 Input the contents of the object from the stream. More...
 

Protected Attributes

PBoolean firstTime
 
PTime targetTime
 
PTimeInterval jitterLimit
 
PTimeInterval minimumDelay
 

Additional Inherited Members

- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 
- Static Public Member Functions inherited from PObject
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 
static const char * Class ()
 Get the name of the class as a C string. More...
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 

Detailed Description

Class for implementing an "adaptive" delay.

This class will cause the the caller to, on average, delay the specified number of milliseconds between calls. This can be used to simulate hardware timing for a sofwtare only device

Constructor & Destructor Documentation

PAdaptiveDelay::PAdaptiveDelay ( unsigned  maximumSlip = 0,
unsigned  minimumDelay = 0 
)

Create a new adaptive delay with the specified parameters.

The maximum slip time can also be set later using SetMaximumSlip.

Parameters
maximumSlipMaximum slip time in milliseconds
minimumDelayMinimum delay (usually OS time slice)

Member Function Documentation

PBoolean PAdaptiveDelay::Delay ( int  time)

Wait until the specified number of milliseconds have elapsed from the previous call (on average).

The first time the function is called, no delay occurs. If the maximum slip time is set and the caller is "too late", the timer is restarted automatically and no delay occurs.

If the calculated delay is less than the OS timer resolution specified on costruction, no delay occurs now ("better sooner than later" strategy).

Returns
true if we are "too late" of time milliseconds (unrelated to the maximum slip time).
PTimeInterval PAdaptiveDelay::GetMaximumSlip ( ) const
inline

Get the current slip time.

References jitterLimit.

void PAdaptiveDelay::Restart ( )

Invalidate the timer.

The timing of this function call is not important, the timer will restart at the next call to Delay().

void PAdaptiveDelay::SetMaximumSlip ( PTimeInterval  maximumSlip)
inline

Set the number of milliseconds that the delay may "catch up" by using zero delays.

This is caused by the Delay() function not being called for a time by external factors.

If maximumSlip is 0, this feature is disabled.

References jitterLimit.

Member Data Documentation

PBoolean PAdaptiveDelay::firstTime
protected
PTimeInterval PAdaptiveDelay::jitterLimit
protected

Referenced by GetMaximumSlip(), and SetMaximumSlip().

PTimeInterval PAdaptiveDelay::minimumDelay
protected
PTime PAdaptiveDelay::targetTime
protected

The documentation for this class was generated from the following file: