sipxportlib  Version 3.3
OsTimer.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2005-2006 SIPez LLC.
3 // Licensed to SIPfoundry under a Contributor Agreement.
4 //
5 // Copyright (C) 2004-2006 SIPfoundry Inc.
6 // Licensed by SIPfoundry under the LGPL license.
7 //
8 // Copyright (C) 2004-2006 Pingtel Corp. All rights reserved.
9 // Licensed to SIPfoundry under a Contributor Agreement.
10 //
11 // $$
13 
14 
15 #ifndef _OsTimer_h_
16 #define _OsTimer_h_
17 
18 // SYSTEM INCLUDES
19 
20 // APPLICATION INCLUDES
21 #include <os/OsDefs.h>
22 #include <os/OsMsgQ.h>
23 #include <os/OsDateTime.h>
24 #include <os/OsNotification.h>
25 #include <os/OsStatus.h>
26 #include <os/OsTime.h>
27 #include <utl/UtlContainable.h>
28 #include <os/OsBSem.h>
29 
30 
31 // DEFINES
32 
36 #define CHECK_VALIDITY(x) \
37  assert((x)->getContainableType() == OsTimer::TYPE)
38 
39 // MACROS
40 // EXTERNAL FUNCTIONS
41 // EXTERNAL VARIABLES
42 // CONSTANTS
43 // STRUCTS
44 // TYPEDEFS
45 // FORWARD DECLARATIONS
46 
105 class OsTimer : public UtlContainable
106 {
107  friend class OsTimerTask;
108  friend class OsTimerTest;
109 
110 /* //////////////////////////// PUBLIC //////////////////////////////////// */
111 public:
112 
115  {
117  STARTED
119  };
120 
121  static const UtlContainableType TYPE;
123 /* ============================ CREATORS ================================== */
124 
140  OsTimer(OsNotification& rNotifier
141  );
142 
148  OsTimer(OsMsgQ* pQueue,
149  intptr_t userData
150  );
151 
153 
155  virtual ~OsTimer();
156 
158  virtual void deleteAsync();
165 /* ============================ MANIPULATORS ============================== */
166 
178  virtual OsStatus oneshotAt(const OsDateTime& when);
180 
182  virtual OsStatus oneshotAfter(const OsTime& offset);
183 
185  virtual OsStatus periodicAt(const OsDateTime& when, const OsTime &period);
186 
188  virtual OsStatus periodicEvery(const OsTime &offset, const OsTime &period);
189 
191 
193  virtual OsStatus stop(UtlBoolean synchronous = TRUE);
215 /* ============================ ACCESSORS ================================= */
216 
218  virtual OsNotification* getNotifier(void) const;
224  virtual unsigned hash() const;
231  virtual UtlContainableType getContainableType() const;
233 
242 /* ============================ INQUIRY =================================== */
243 
245  virtual int compareTo(UtlContainable const *) const;
252  virtual OsTimerState getState();
254 
255 /* //////////////////////////// PROTECTED ///////////////////////////////// */
256 protected:
257 
258  OsBSem mBSem;
259 
260  unsigned int mApplicationState;
262  unsigned int mTaskState;
265 
268 
273 
274  // Copies of time values for use by timer task.
278 
280 
283 
285  OsStatus startTimer(OsTime start,
286  UtlBoolean periodic,
287  OsTime period);
288 
289 /* //////////////////////////// PRIVATE /////////////////////////////////// */
290  private:
291 
293  OsTimer(const OsTimer& rOsTimer);
294 
296  OsTimer& operator=(const OsTimer& rhs);
297 
298 /* ============================ INLINE METHODS ============================ */
299  protected:
300 
302  inline static UtlBoolean isStarted(int status)
303  {
304  return (status & 1) == 1;
305  }
306 
308  inline static UtlBoolean isStopped(int status)
309  {
310  return (status & 1) == 0;
311  }
312 
313 };
314 
315 #endif // _OsTimer_h_
unsigned int mApplicationState
Definition: OsTimer.h:260
Timer has not been started, or has fired < or been stopped.
Definition: OsTimer.h:116
static const UtlContainableType TYPE
Definition: OsTimer.h:121
static UtlBoolean isStopped(int status)
Test whether a status indicates the timer has been stopped.
Definition: OsTimer.h:308
OsTime mExpiresAt
Expire time of timer.
Definition: OsTimer.h:270
UtlBoolean mWasFired
TRUE if timer is stopped because it was fired < state as seen by application methods.
Definition: OsTimer.h:261
OsBSem mBSem
Semaphore to lock access to members.
Definition: OsTimer.h:258
virtual OsNotification * getNotifier(void) const
Return the OsNotification object for this timer.
Definition: OsTimer.cpp:266
UtlBoolean mbManagedNotifier
TRUE if OsTimer destructor should < delete *mpNotifier.
Definition: OsTimer.h:267
int mOutstandingMessages
Number of messages for this timer < in the timer task&#39;s queue.
Definition: OsTimer.h:279
UtlBoolean mDeleting
TRUE if timer is being deleted.
Definition: OsTimer.h:264
OsStatus startTimer(OsTime start, UtlBoolean periodic, OsTime period)
Start a timer.
Definition: OsTimer.cpp:325
virtual OsStatus periodicEvery(const OsTime &offset, const OsTime &period)
Start the timer to fire periodically starting at current time + offset.
Definition: OsTimer.cpp:195
virtual int compareTo(UtlContainable const *) const
Compare the this object to another like-objects.
Definition: OsTimer.cpp:298
OsTime mQueuedPeriod
Repetition time (copy).
Definition: OsTimer.h:277
Definition: OsTimerTask.h:41
Definition: OsNotification.h:35
OsStatus
Definition: OsStatus.h:27
const char *const UtlContainableType
Definition: UtlDefs.h:70
UtlBoolean mQueuedPeriodic
TRUE if timer fires repetitively (copy).
Definition: OsTimer.h:276
OsNotification * mpNotifier
Used to signal timer expiration event.
Definition: OsTimer.h:266
Definition: UtlContainable.h:37
UtlBoolean mPeriodic
TRUE if timer fires repetitively.
Definition: OsTimer.h:271
virtual unsigned hash() const
Calculate a unique hash code for this object.
Definition: OsTimer.cpp:271
OsTimer(OsNotification &rNotifier)
Definition: OsTimer.cpp:66
OsTimerState
The states a timer can be in.
Definition: OsTimer.h:114
Timer is running and will fire.
Definition: OsTimer.h:118
virtual OsTimerState getState()
Return the state value for this OsTimer object.
Definition: OsTimer.cpp:292
virtual OsStatus oneshotAfter(const OsTime &offset)
Start the timer to fire once at the current time + offset.
Definition: OsTimer.cpp:179
virtual void deleteAsync()
Non-blocking asynchronous delete operation.
Definition: OsTimer.cpp:136
OsTime mPeriod
Repetition time.
Definition: OsTimer.h:272
friend class OsTimerTest
Definition: OsTimer.h:108
Definition: OsTime.h:37
static UtlBoolean isStarted(int status)
Test whether a status indicates the timer has been started.
Definition: OsTimer.h:302
virtual OsStatus stop(UtlBoolean synchronous=TRUE)
Stop the timer if it has been started.
Definition: OsTimer.cpp:203
Definition: OsTimer.h:105
virtual UtlContainableType getContainableType() const
Get the ContainableType for a UtlContainable derived class.
Definition: OsTimer.cpp:277
int UtlBoolean
Definition: UtlDefs.h:41
UtlBoolean getWasFired()
Returns TRUE if timer was fired.
Definition: OsTimer.cpp:283
virtual ~OsTimer()
Destructor.
Definition: OsTimer.cpp:86
#define TRUE
Definition: UtlDefs.h:25
virtual OsStatus periodicAt(const OsDateTime &when, const OsTime &period)
Start the timer to fire periodically starting at the indicated date/time.
Definition: OsTimer.cpp:187
OsTimer * mTimerQueueLink
To chain together timers.
Definition: OsTimer.h:282
OsTime mQueuedExpiresAt
Expire time of timer (copy).
Definition: OsTimer.h:275
virtual OsStatus oneshotAt(const OsDateTime &when)
Start the timer to fire once at the indicated date/time.
Definition: OsTimer.cpp:171
unsigned int mTaskState
State as seen by the timer task.
Definition: OsTimer.h:263
_W64 signed int intptr_t
Definition: stdint.h:118