Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Timer_List_T Class Template Reference

Provides a simple implementation of timers. More...

#include <Timer_List_T.h>

Inheritance diagram for ACE_Timer_List_T:

Inheritance graph
[legend]
Collaboration diagram for ACE_Timer_List_T:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_Timer_List_Iterator_T<
TYPE, FUNCTOR, ACE_LOCK > 
LIST_ITERATOR
 Type of iterator. More...

typedef ACE_Timer_Queue_T<
TYPE, FUNCTOR, ACE_LOCK > 
INHERITED
 Type inherited from. More...


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. More...

virtual int is_empty (void) const
 True if queue is empty, else false. More...

virtual const ACE_Time_Valueearliest_time (void) const
 Returns the time of the earlier node in the <ACE_Timer_List>. Must be called on a non-empty queue. More...

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 <ACE_Timer_Queue>'s iterator. More...

virtual ACE_Timer_Node_T<
TYPE > * 
remove_first (void)
 Removes the earliest node from the queue and returns it. More...

virtual void dump (void) const
 Dump the state of an object. More...

virtual void reschedule (ACE_Timer_Node_T< TYPE > *)
 Reschedule an "interval" <ACE_Timer_Node>. This should be private but for now it needs to be public for <ACE_Timer_Hash_T>. More...

virtual ACE_Timer_Node_T<
TYPE > * 
get_first (void)
 Reads the earliest node from the queue and returns it. More...


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 <ACE_Timer_Handles>. More...

LIST_ITERATORiterator_
 Iterator used to expire timers. More...

long timer_id_

Friends

class ACE_Timer_List_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >
 Iterator is a friend. More...


Detailed Description

template<class TYPE, class FUNCTOR, class ACE_LOCK>
class ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >

Provides a simple implementation of timers.

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, <ACE_Timer_Heap> is a subclass of <ACE_Timer_List> that implements a heap-based callout queue. For most applications, the <ACE_Timer_Heap> will perform substantially faster than the <ACE_Timer_List>.


Member Typedef Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
typedef ACE_Timer_Queue_T<TYPE, FUNCTOR, ACE_LOCK> ACE_Timer_List_T::INHERITED
 

Type inherited from.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
typedef ACE_Timer_List_Iterator_T<TYPE, FUNCTOR, ACE_LOCK> ACE_Timer_List_T::LIST_ITERATOR
 

Type of iterator.


Constructor & Destructor Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::ACE_Timer_List_T FUNCTOR *    upcall_functor = 0,
ACE_Free_List< ACE_Timer_Node_T< TYPE > > *    freelist = 0
 

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.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::~ACE_Timer_List_T void    [virtual]
 

Destructor.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::ACE_Timer_List_T const ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK > &    [private]
 


Member Function Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
int ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::cancel long    timer_id,
const void **    act = 0,
int    dont_call = 1
[virtual]
 

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.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
int ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::cancel const TYPE &    type,
int    dont_call = 1
[virtual]
 

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.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
void ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::dump void    const [virtual]
 

Dump the state of an object.

Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
const ACE_Time_Value & ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::earliest_time void    const [virtual]
 

Returns the time of the earlier node in the <ACE_Timer_List>. Must be called on a non-empty queue.

Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_Node_T< TYPE > * ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::get_first void    [virtual]
 

Reads the earliest node from the queue and returns it.

Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
int ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::is_empty void    const [virtual]
 

True if queue is empty, else false.

Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_Queue_Iterator_T< TYPE, FUNCTOR, ACE_LOCK > & ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::iter void    [virtual]
 

Returns a pointer to this <ACE_Timer_Queue>'s iterator.

Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
void ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::operator= const ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK > &    [private]
 

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_Node_T< TYPE > * ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::remove_first void    [virtual]
 

Removes the earliest node from the queue and returns it.

Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
void ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::reschedule ACE_Timer_Node_T< TYPE > *    expired [virtual]
 

Reschedule an "interval" <ACE_Timer_Node>. This should be private but for now it needs to be public for <ACE_Timer_Hash_T>.

Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
int ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::reset_interval long    timer_id,
const ACE_Time_Value   interval
[virtual]
 

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 <ACE_Time_Value::zero>, the timer will become a non-rescheduling timer. Returns 0 if successful, -1 if not.

Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
long ACE_Timer_List_T< TYPE, FUNCTOR, ACE_LOCK >::schedule const TYPE &    type,
const void *    act,
const ACE_Time_Value   future_time,
const ACE_Time_Value   interval = ACE_Time_Value::zero
[virtual]
 

Schedule <type> that will expire after <delay> amount of time, which is specified in absolute time. If it expires then <act> is passed in as the value to the <functor>. If <interval> is != to <ACE_Time_Value::zero> 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.


Friends And Related Function Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
friend class ACE_Timer_List_Iterator_T< TYPE, FUNCTOR, ACE_LOCK > [friend]
 

Iterator is a friend.


Member Data Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_Node_T<TYPE>* ACE_Timer_List_T::head_ [private]
 

Pointer to linked list of <ACE_Timer_Handles>.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
LIST_ITERATOR* ACE_Timer_List_T::iterator_ [private]
 

Iterator used to expire timers.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
long ACE_Timer_List_T::timer_id_ [private]
 

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.


The documentation for this class was generated from the following files:
Generated on Sun Feb 17 17:44:17 2002 for ACE by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001