ACE  6.3.3
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY > Class Template Reference

Provides a Timing Wheel version of ACE_Timer_Queue. More...

#include <Timer_Wheel_T.h>

Inheritance diagram for ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >:
Inheritance graph
[legend]
Collaboration diagram for ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >:
Collaboration graph
[legend]

Public Types

typedef ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY > Iterator
 Type of iterator. More...
 
typedef ACE_Timer_Node_T< TYPE > Node
 
typedef ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY > Base_Timer_Queue
 Type inherited from. More...
 
typedef ACE_Free_List< NodeFreeList
 
- Public Types inherited from ACE_Abstract_Timer_Queue< TYPE >
typedef ACE_Timer_Queue_Iterator_T< TYPE > ITERATOR
 Type of Iterator. More...
 

Public Member Functions

 ACE_Timer_Wheel_T (FUNCTOR *upcall_functor=0, FreeList *freelist=0, TIME_POLICY const &time_policy=TIME_POLICY())
 Default constructor. More...
 
 ACE_Timer_Wheel_T (u_int spoke_count, u_int resolution, size_t prealloc=0, FUNCTOR *upcall_functor=0, FreeList *freelist=0, TIME_POLICY const &time_policy=TIME_POLICY())
 Constructor with opportunities to set the wheelsize and resolution. More...
 
virtual ~ACE_Timer_Wheel_T (void)
 Destructor. More...
 
virtual bool is_empty (void) const
 True if queue is empty, else false. More...
 
virtual const ACE_Time_Valueearliest_time (void) const
 
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 int close (void)
 
virtual int expire (void)
 
int expire (const ACE_Time_Value &current_time)
 
virtual ACE_Timer_Queue_Iterator_T< TYPE > & iter (void)
 Returns a pointer to this <ACE_Timer_Queue_T>'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 ACE_Timer_Node_T< TYPE > * get_first (void)
 Reads the earliest node from the queue and returns it. More...
 
- Public Member Functions inherited from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >
 ACE_Timer_Queue_T (FUNCTOR *upcall_functor=0, ACE_Free_List< ACE_Timer_Node_T< TYPE > > *freelist=0, TIME_POLICY const &time_policy=TIME_POLICY())
 
virtual ~ACE_Timer_Queue_T (void)
 
virtual long schedule (const TYPE &type, const void *act, const ACE_Time_Value &future_time, const ACE_Time_Value &interval=ACE_Time_Value::zero)
 
virtual int dispatch_info (const ACE_Time_Value &current_time, ACE_Timer_Node_Dispatch_Info_T< TYPE > &info)
 
virtual void gettimeofday (ACE_Time_Value(*gettimeofday)(void))
 
ACE_Time_Value gettimeofday_static ()
 
void set_time_policy (TIME_POLICY const &time_policy)
 
void timer_skew (const ACE_Time_Value &skew)
 Set the timer skew for the Timer_Queue. More...
 
const ACE_Time_Valuetimer_skew (void) const
 Get the timer skew for the Timer_Queue. More...
 
ACE_LOCK & mutex (void)
 Synchronization variable used by the queue. More...
 
virtual void return_node (ACE_Timer_Node_T< TYPE > *)
 
void preinvoke (ACE_Timer_Node_Dispatch_Info_T< TYPE > &info, const ACE_Time_Value &cur_time, const void *&upcall_act)
 This method will call the preinvoke() on <functor>. More...
 
void upcall (ACE_Timer_Node_Dispatch_Info_T< TYPE > &info, const ACE_Time_Value &cur_time)
 This method will call the timeout() on <functor>. More...
 
void postinvoke (ACE_Timer_Node_Dispatch_Info_T< TYPE > &info, const ACE_Time_Value &cur_time, const void *upcall_act)
 This method will call the postinvoke() on <functor>. More...
 
virtual int expire_single (ACE_Command_Base &pre_dispatch_command)
 
virtual ACE_Time_Value gettimeofday (void)
 
virtual ACE_Time_Valuecalculate_timeout (ACE_Time_Value *max)
 
virtual ACE_Time_Valuecalculate_timeout (ACE_Time_Value *max, ACE_Time_Value *the_timeout)
 
virtual ACE_Time_Value current_time ()
 
- Public Member Functions inherited from ACE_Timer_Queue_Upcall_Base< TYPE, FUNCTOR >
 ACE_Timer_Queue_Upcall_Base (FUNCTOR *upcall_functor=0)
 
virtual ~ACE_Timer_Queue_Upcall_Base (void)
 Destructor. More...
 
FUNCTOR & upcall_functor (void)
 Accessor to the upcall functor. More...
 
- Public Member Functions inherited from ACE_Abstract_Timer_Queue< TYPE >
virtual ~ACE_Abstract_Timer_Queue (void)=0
 Destructor. More...
 

Protected Member Functions

virtual long schedule_i (const TYPE &type, const void *act, const ACE_Time_Value &future_time, const ACE_Time_Value &interval)
 Schedules a timer. More...
 
- Protected Member Functions inherited from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >
virtual ACE_Timer_Node_T< TYPE > * alloc_node (void)
 Factory method that allocates a new node. More...
 
virtual void free_node (ACE_Timer_Node_T< TYPE > *)
 Factory method that frees a previously allocated node. More...
 
virtual int dispatch_info_i (const ACE_Time_Value &current_time, ACE_Timer_Node_Dispatch_Info_T< TYPE > &info)
 Non-locking version of dispatch_info () More...
 
void recompute_next_abs_interval_time (ACE_Timer_Node_T< TYPE > *expired, const ACE_Time_Value &cur_time)
 Recompute when the next time is that this interval timer should fire. More...
 

Private Member Functions

ACE_Timer_Node_T< TYPE > * get_first_i (void) const
 
ACE_Timer_Node_T< TYPE > * remove_first_expired (const ACE_Time_Value &now)
 
void open_i (size_t prealloc, u_int spokes, u_int res)
 
virtual void reschedule (ACE_Timer_Node_T< TYPE > *)
 
ACE_Timer_Node_T< TYPE > * find_spoke_node (u_int spoke, long timer_id) const
 Searches for a node by timer_id within one spoke. More...
 
ACE_Timer_Node_T< TYPE > * find_node (long timer_id) const
 
u_int calculate_spoke (const ACE_Time_Value &expire) const
 
long generate_timer_id (u_int spoke)
 
void schedule_i (ACE_Timer_Node_T< TYPE > *n, u_int spoke, const ACE_Time_Value &expire)
 The shared scheduling functionality between schedule() and reschedule() More...
 
void cancel_i (ACE_Timer_Node_T< TYPE > *n)
 Shared subset of the two cancel() methods. More...
 
void unlink (ACE_Timer_Node_T< TYPE > *n)
 
void recalc_earliest (const ACE_Time_Value &last)
 
int power2bits (int n, int min_bits, int max_bits)
 

Private Attributes

ACE_Timer_Node_T< TYPE > ** spokes_
 Timing Wheel. More...
 
u_int spoke_count_
 Size of the timing wheel. More...
 
int spoke_bits_
 Number of timer_id bits used for the spoke. More...
 
u_int max_per_spoke_
 Maximum number of timers per spoke. More...
 
int res_bits_
 Resolution (in microsoconds) of the timing wheel. More...
 
u_int earliest_spoke_
 Index of the list with the earliest time. More...
 
Iteratoriterator_
 Iterator used to expire timers. More...
 
ACE_Time_Value wheel_time_
 The total amount of time in one iteration of the wheel. (resolution * spoke_count) More...
 
u_int timer_count_
 The total number of timers currently scheduled. More...
 

Friends

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

Additional Inherited Members

- Protected Attributes inherited from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >
ACE_LOCK mutex_
 
ACE_Free_List< ACE_Timer_Node_T< TYPE > > * free_list_
 Class that implements a free list. More...
 
TIME_POLICY time_policy_
 The policy to return the current time of day. More...
 
bool const delete_free_list_
 Flag to delete only if the class created the <free_list_> More...
 
- Protected Attributes inherited from ACE_Timer_Queue_Upcall_Base< TYPE, FUNCTOR >
FUNCTOR * upcall_functor_
 Upcall functor. More...
 
bool const delete_upcall_functor_
 To delete or not to delete is the question? More...
 

Detailed Description

template<class TYPE, class FUNCTOR, class ACE_LOCK, typename TIME_POLICY = ACE_Default_Time_Policy>
class ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >

Provides a Timing Wheel version of ACE_Timer_Queue.

This implementation uses a hash table of ordered doubly- linked lists of absolute times. The enhancements over the ACE_Timer_List include adding a free list and the ability to preallocate nodes. Timer Wheel is based on the timing wheel implementation used in Adam M. Costello and George Varghese's paper "Redesigning the BSD Callout and Timer Facilities" (http://dworkin.wustl.edu/~varghese/PAPERS/newbsd.ps.Z)

Member Typedef Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
typedef ACE_Timer_Queue_T<TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY> ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::Base_Timer_Queue

Type inherited from.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
typedef ACE_Free_List<Node> ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::FreeList
template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
typedef ACE_Timer_Wheel_Iterator_T<TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY> ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::Iterator

Type of iterator.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
typedef ACE_Timer_Node_T<TYPE> ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::Node

Constructor & Destructor Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::ACE_Timer_Wheel_T ( FUNCTOR *  upcall_functor = 0,
FreeList freelist = 0,
TIME_POLICY const &  time_policy = TIME_POLICY() 
)

Default constructor.

Default Constructor that sets defaults for spoke_count_ and resolution_ and doesn't do any preallocation.

Parameters
upcall_functorA pointer to a functor to use instead of the default
freelistA pointer to a freelist to use instead of the default
template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::ACE_Timer_Wheel_T ( u_int  spoke_count,
u_int  resolution,
size_t  prealloc = 0,
FUNCTOR *  upcall_functor = 0,
FreeList freelist = 0,
TIME_POLICY const &  time_policy = TIME_POLICY() 
)

Constructor with opportunities to set the wheelsize and resolution.

Constructor that sets up the timing wheel and also may preallocate some nodes on the free list

Parameters
spoke_countThe number of lists in the timer wheel
resolutionThe time resolution in milliseconds used by the hashing function
preallocThe number of entries to prealloc in the free_list
upcall_functorA pointer to a functor to use instead of the default
freelistA pointer to a freelist to use instead of the default
template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::~ACE_Timer_Wheel_T ( void  )
virtual

Destructor.

Destructor just cleans up its memory.

Member Function Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
u_int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::calculate_spoke ( const ACE_Time_Value t) const
private

Uses a simple hash to find which spoke to use based on when the timer is due to expire. Hopefully the 64bit int operations avoid any overflow problems.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::cancel ( const TYPE &  type,
int  skip_close = 1 
)
virtual

Cancel all timer associated with type. If dont_call_handle_close is 0 then the <functor> will be invoked. Returns number of timers cancelled.

Goes through every list in the wheel and whenever we find one with the correct type value, we remove it and continue. At the end make sure we reset the earliest time value in case the earliest timers were removed.

Parameters
typeThe value to search for.
skip_closeIf this non-zero, the cancellation method of the functor will not be called for each cancelled timer.
Returns
Number of timers cancelled

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::cancel ( long  timer_id,
const void **  act = 0,
int  skip_close = 1 
)
virtual

Cancels the single timer that is specified by the timer_id. In this case the timer_id is actually a pointer to the node, so we cast it to the node. This can be dangerous if the timer_id is made up (or deleted twice) so we do a little sanity check. Finally we update the earliest time in case the earliest timer was removed.

Parameters
timer_idTimer Identifier
actAsychronous Completion Token (AKA magic cookie): If this is non-zero, stores the magic cookie of the cancelled timer here.
skip_closeIf this non-zero, the cancellation method of the functor will not be called.
Returns
1 for sucess and 0 if the timer_id wasn't found (or was found to be invalid)

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::cancel_i ( ACE_Timer_Node_T< TYPE > *  n)
private

Shared subset of the two cancel() methods.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::close ( void  )
virtual

Destroy timer queue. Cancels all timers.

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::dump ( void  ) const
virtual

Dump the state of an object.

Dumps out the size of the wheel, the resolution, and the contents of the wheel.

Reimplemented from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
const ACE_Time_Value & ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::earliest_time ( void  ) const
virtual

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

Returns
First (earliest) node in the wheel_'s earliest_spoke_ list

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::expire ( void  )
virtual

Run the <functor> for all timers whose values are <= <ACE_OS::gettimeofday>. Also accounts for <timer_skew>. Returns the number of timers canceled.

Reimplemented from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::expire ( const ACE_Time_Value cur_time)
virtual

This is a specialized version of expire that is more suited for the internal data representation.

Parameters
cur_timeThe time to expire timers up to.
Returns
Number of timers expired

Reimplemented from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Node_T< TYPE > * ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::find_node ( long  timer_id) const
private

Searches all spokes for a node matching the specified timer_id Uses the spoke encoded in the timer_id as a starting place.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Node_T< TYPE > * ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::find_spoke_node ( u_int  spoke,
long  timer_id 
) const
private

Searches for a node by timer_id within one spoke.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
long ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::generate_timer_id ( u_int  spoke)
private

Generates a unique timer_id for the given spoke. It should be pretty fast until the point where the counter overflows. At that time you have to do exhaustive searches within the spoke to ensure that a particular timer id is not already in use. Some optimizations are in place so that this hopefully doesn't have to happen often.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Node_T< TYPE > * ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::get_first ( void  )
virtual

Reads the earliest node from the queue and returns it.

Returns the earliest node without removing it

Returns
The earliest timer node.

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Node_T< TYPE > * ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::get_first_i ( void  ) const
private
template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
bool ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::is_empty ( void  ) const
virtual

True if queue is empty, else false.

Check to see if the wheel is empty

Returns
True if empty

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Queue_Iterator_T< TYPE > & ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::iter ( void  )
virtual

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

Returns
The iterator

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::open_i ( size_t  prealloc,
u_int  spokes,
u_int  res 
)
private

Initialize the queue. Uses the established members for all needed information.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::power2bits ( int  n,
int  min_bits,
int  max_bits 
)
private
template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::recalc_earliest ( const ACE_Time_Value last)
private

There are a few places where we have to figure out which timer will expire next. This method makes the assumption that spokes are always sorted, and that timers are always in the correct spoke determined from their expiration time. The last time is always passed in, even though you can often calculate it as get_first()->get_timer_value().

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Node_T< TYPE > * ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::remove_first ( void  )
virtual

Removes the earliest node from the queue and returns it.

Removes the earliest node and then find the new <earliest_spoke_>

Returns
The earliest timer node.

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Node_T< TYPE > * ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::remove_first_expired ( const ACE_Time_Value now)
private
template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::reschedule ( ACE_Timer_Node_T< TYPE > *  n)
privatevirtual

Takes an ACE_Timer_Node and inserts it into the correct position in the correct list. Also makes sure to update the earliest time.

Parameters
nThe timer node to reschedule

Implements ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::reset_interval ( long  timer_id,
const ACE_Time_Value interval 
)
virtual

Changes the interval of a timer (and can make it periodic or non periodic by setting it to ACE_Time_Value::zero or not).

Find the timer node by using the id as a pointer. Then use set_interval() on the node to update the interval.

Parameters
timer_idThe timer identifier
intervalThe new interval
Returns
0 if successful, -1 if no.

Implements ACE_Abstract_Timer_Queue< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
long ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::schedule_i ( const TYPE &  type,
const void *  act,
const ACE_Time_Value future_time,
const ACE_Time_Value interval 
)
protectedvirtual

Schedules a timer.

Creates a ACE_Timer_Node_T based on the input parameters. Then inserts the node into the wheel using reschedule (). Then returns a timer_id.

Parameters
typeThe data of the timer node
actAsynchronous Completion Token (AKA magic cookie)
future_timeThe time the timer is scheduled for (absolute time)
intervalIf not ACE_Time_Value::zero, then this is a periodic timer and interval is the time period
Returns
Unique identifier (can be used to cancel the timer). -1 on failure.

Implements ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::schedule_i ( ACE_Timer_Node_T< TYPE > *  n,
u_int  spoke,
const ACE_Time_Value expire 
)
private

The shared scheduling functionality between schedule() and reschedule()

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::unlink ( ACE_Timer_Node_T< TYPE > *  n)
private

Friends And Related Function Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
friend class ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >
friend

Iterator is a friend.

Member Data Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
u_int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::earliest_spoke_
private

Index of the list with the earliest time.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
Iterator* ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::iterator_
private

Iterator used to expire timers.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
u_int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::max_per_spoke_
private

Maximum number of timers per spoke.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::res_bits_
private

Resolution (in microsoconds) of the timing wheel.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::spoke_bits_
private

Number of timer_id bits used for the spoke.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
u_int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::spoke_count_
private

Size of the timing wheel.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
ACE_Timer_Node_T<TYPE>** ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::spokes_
private

Timing Wheel.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
u_int ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::timer_count_
private

The total number of timers currently scheduled.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
ACE_Time_Value ACE_Timer_Wheel_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::wheel_time_
private

The total amount of time in one iteration of the wheel. (resolution * spoke_count)


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