#include <Timer_List_T.h>
Inheritance diagram for ACE_Timer_List_T
Public Types | |
typedef ACE_Timer_List_Iterator_T< TYPE, FUNCTOR, ACE_LOCK> | LIST_ITERATOR |
Type of iterator. | |
typedef ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK> | INHERITED |
Type inherited from. | |
Public Methods | |
ACE_Timer_List_T (FUNCTOR *upcall_functor = 0, ACE_Free_List<ACE_Timer_Node_T <TYPE> > *freelist = 0) | |
virtual | ~ACE_Timer_List_T (void) |
Destructor. | |
virtual int | is_empty (void) const |
True if queue is empty, else false. | |
virtual const ACE_Time_Value& | earliest_time (void) const |
Returns the time of the earlier node in the . Must be called on a non-empty queue. | |
virtual long | schedule (const TYPE &type, const void *act, const ACE_Time_Value &delay, const ACE_Time_Value &interval = ACE_Time_Value::zero) |
virtual int | reset_interval (long timer_id, const ACE_Time_Value &interval) |
virtual int | cancel (const TYPE &type, int dont_call_handle_close = 1) |
virtual int | cancel (long timer_id, const void **act = 0, int dont_call_handle_close = 1) |
virtual ACE_Timer_Queue_Iterator_T< TYPE, FUNCTOR, ACE_LOCK>& | iter (void) |
Returns a pointer to this 's iterator. | |
virtual ACE_Timer_Node_T<TYPE>* | remove_first (void) |
Removes the earliest node from the queue and returns it. | |
virtual void | dump (void) const |
Dump the state of an object. | |
virtual void | reschedule (ACE_Timer_Node_T<TYPE> *) |
Reschedule an "interval" . This should be private but for now it needs to be public for . | |
virtual ACE_Timer_Node_T<TYPE>* | get_first (void) |
Reads the earliest node from the queue and returns it. | |
Private Methods | |
ACE_Timer_List_T (const ACE_Timer_List_T<TYPE, FUNCTOR, ACE_LOCK> &) | |
void | operator= (const ACE_Timer_List_T<TYPE, FUNCTOR, ACE_LOCK> &) |
Private Attributes | |
ACE_Timer_Node_T<TYPE>* | head_ |
Pointer to linked list of . | |
LIST_ITERATOR* | iterator_ |
Iterator used to expire timers. | |
long | timer_id_ |
Friends | |
class | ACE_Timer_List_Iterator_T< TYPE,FUNCTOR,ACE_LOCK > |
This implementation uses a linked list of absolute times. Therefore, in the average case, scheduling and canceling timers is O(N) (where N is the total number of timers) and expiring timers is O(K) (where K is the total number of timers that are < the current time of day). More clever implementations could use a delta-list, a heap, or timing wheels, etc. For instance, is a subclass of that implements a heap-based callout queue. For most applications, the will perform substantially faster than the .
|
Type inherited from.
|
|
Type of iterator.
|
|
Default constructor. <upcall_functor> is the instance of the FUNCTOR to be used by the list. If <upcall_functor> is 0, a default FUNCTOR will be created. <freelist> the freelist of timer nodes. If 0, then a default freelist will be created. |
|
Destructor.
|
|
|
|
Cancel the single timer that matches the <timer_id> value (which was returned from the <schedule> method). If act is non-NULL then it will be set to point to the ``magic cookie'' argument passed in when the timer was registered. This makes it possible to free up the memory and avoid memory leaks. If <dont_call> is 0 then the <functor> will be invoked. Returns 1 if cancellation succeeded and 0 if the <timer_id> wasn't found. Reimplemented from ACE_Timer_Queue_T. |
|
Cancel all timer associated with <type>. If <dont_call> is 0 then the <functor> will be invoked. Returns number of timers cancelled. Reimplemented from ACE_Timer_Queue_T. |
|
Dump the state of an object.
Reimplemented from ACE_Timer_Queue_T. |
|
Returns the time of the earlier node in the . Must be called on a non-empty queue.
Reimplemented from ACE_Timer_Queue_T. |
|
Reads the earliest node from the queue and returns it.
Reimplemented from ACE_Timer_Queue_T. |
|
True if queue is empty, else false.
Reimplemented from ACE_Timer_Queue_T. |
|
Returns a pointer to this 's iterator.
Reimplemented from ACE_Timer_Queue_T. |
|
|
|
Removes the earliest node from the queue and returns it.
Reimplemented from ACE_Timer_Queue_T. |
|
Reschedule an "interval" . This should be private but for now it needs to be public for .
Reimplemented from ACE_Timer_Queue_T. |
|
Resets the interval of the timer represented by <timer_id> to <interval>, which is specified in relative time to the current <gettimeofday>. If <interval> is equal to , the timer will become a non-rescheduling timer. Returns 0 if successful, -1 if not. Reimplemented from ACE_Timer_Queue_T. |
|
Schedule <type> that will expire after <delay> amount of time, which is specified in absolute time. If it expires then is passed in as the value to the <functor>. If <interval> is != to then it is used to reschedule the <type> automatically, using relative time to the current <gettimeofday>. This method returns a <timer_id> that uniquely identifies the the <type> entry in an internal list. This <timer_id> can be used to cancel the timer before it expires. The cancellation ensures that <timer_ids> are unique up to values of greater than 2 billion timers. As long as timers don't stay around longer than this there should be no problems with accidentally deleting the wrong timer. Returns -1 on failure (which is guaranteed never to be a valid <timer_id>). Reimplemented from ACE_Timer_Queue_T. |
|
Iterator is a friend.
|
|
Pointer to linked list of .
|
|
Iterator used to expire timers.
|
|
Keeps track of the timer id that uniquely identifies each timer. This id can be used to cancel a timer via the <cancel (int)> method. |