ACE
6.1.3
|
Provides a hash table of BUCKETs as an implementation for a timer queue. More...
#include <Timer_Hash_T.h>
Public Types | |
typedef ACE_Timer_Hash_Iterator_T < TYPE, FUNCTOR, ACE_LOCK, BUCKET, TIME_POLICY > | HASH_ITERATOR |
Type of iterator. | |
typedef ACE_Timer_Queue_T < TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY > | Base_Timer_Queue |
Type inherited from. |
Public Member Functions | |
ACE_Timer_Hash_T (size_t table_size, FUNCTOR *upcall_functor=0, ACE_Free_List< ACE_Timer_Node_T< TYPE > > *freelist=0, TIME_POLICY const &time_policy=TIME_POLICY()) | |
ACE_Timer_Hash_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_Hash_T (void) |
Destructor. | |
virtual bool | is_empty (void) const |
True if queue is empty, else false. | |
virtual const ACE_Time_Value & | earliest_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) |
virtual int | expire (const ACE_Time_Value ¤t_time) |
virtual ACE_Timer_Queue_Iterator_T < TYPE > & | iter (void) |
Returns a pointer to this ACE_Timer_Queue'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 ACE_Timer_Node_T< TYPE > * | get_first (void) |
Reads the earliest node from the queue and returns it. | |
![]() | |
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 ¤t_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. | |
const ACE_Time_Value & | timer_skew (void) const |
Get the timer skew for the Timer_Queue. | |
ACE_LOCK & | mutex (void) |
Synchronization variable used by the queue. | |
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>. | |
void | upcall (ACE_Timer_Node_Dispatch_Info_T< TYPE > &info, const ACE_Time_Value &cur_time) |
This method will call the timeout() on <functor>. | |
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>. | |
virtual int | expire_single (ACE_Command_Base &pre_dispatch_command) |
virtual ACE_Time_Value | gettimeofday (void) |
virtual ACE_Time_Value * | calculate_timeout (ACE_Time_Value *max) |
virtual ACE_Time_Value * | calculate_timeout (ACE_Time_Value *max, ACE_Time_Value *the_timeout) |
virtual ACE_Time_Value | current_time () |
![]() | |
ACE_Timer_Queue_Upcall_Base (FUNCTOR *upcall_functor=0) | |
virtual | ~ACE_Timer_Queue_Upcall_Base (void) |
Destructor. | |
FUNCTOR & | upcall_functor (void) |
Accessor to the upcall functor. | |
![]() | |
virtual | ~ACE_Abstract_Timer_Queue (void)=0 |
Destructor. | |
virtual bool | is_empty (void) const =0 |
True if queue is empty, else false. | |
virtual const ACE_Time_Value & | earliest_time (void) const =0 |
virtual long | schedule (const TYPE &type, const void *act, const ACE_Time_Value &future_time, const ACE_Time_Value &interval=ACE_Time_Value::zero)=0 |
virtual int | expire (const ACE_Time_Value ¤t_time)=0 |
virtual int | expire (void)=0 |
virtual int | expire_single (ACE_Command_Base &pre_dispatch_command)=0 |
virtual int | reset_interval (long timer_id, const ACE_Time_Value &interval)=0 |
virtual int | cancel (const TYPE &type, int dont_call_handle_close=1)=0 |
virtual int | cancel (long timer_id, const void **act=0, int dont_call_handle_close=1)=0 |
virtual int | close (void)=0 |
virtual ACE_Time_Value | gettimeofday (void)=0 |
virtual void | gettimeofday (ACE_Time_Value(*gettimeofday)(void))=0 |
virtual ACE_Time_Value * | calculate_timeout (ACE_Time_Value *max)=0 |
virtual ACE_Time_Value * | calculate_timeout (ACE_Time_Value *max, ACE_Time_Value *the_timeout)=0 |
virtual ACE_Time_Value | current_time ()=0 |
virtual ITERATOR & | iter (void)=0 |
Returns a pointer to this ACE_Timer_Queue's iterator. | |
virtual ACE_Timer_Node_T< TYPE > * | remove_first (void)=0 |
Removes the earliest node from the queue and returns it. | |
virtual ACE_Timer_Node_T< TYPE > * | get_first (void)=0 |
Reads the earliest node from the queue and returns it. | |
virtual void | dump (void) const =0 |
Dump the state of a object. |
Protected Member Functions | |
virtual void | free_node (ACE_Timer_Node_T< TYPE > *) |
Factory method that frees a previously allocated node. | |
![]() | |
virtual long | schedule_i (const TYPE &type, const void *act, const ACE_Time_Value &future_time, const ACE_Time_Value &interval)=0 |
Schedule a timer. | |
virtual void | reschedule (ACE_Timer_Node_T< TYPE > *)=0 |
Reschedule an "interval" ACE_Timer_Node. | |
virtual ACE_Timer_Node_T< TYPE > * | alloc_node (void) |
Factory method that allocates a new node. | |
virtual int | dispatch_info_i (const ACE_Time_Value ¤t_time, ACE_Timer_Node_Dispatch_Info_T< TYPE > &info) |
Non-locking version of dispatch_info () | |
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. |
Private Member Functions | |
virtual long | schedule_i (const TYPE &type, const void *act, const ACE_Time_Value &future_time, const ACE_Time_Value &interval) |
virtual int | dispatch_info_i (const ACE_Time_Value ¤t_time, ACE_Timer_Node_Dispatch_Info_T< TYPE > &info) |
Non-locking version of dispatch_info () | |
virtual void | reschedule (ACE_Timer_Node_T< TYPE > *) |
Reschedule an "interval" ACE_Timer_Node. | |
void | find_new_earliest (void) |
Finds the earliest node. | |
ACE_Timer_Hash_T (const ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > &) | |
void | operator= (const ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > &) |
Private Attributes | |
size_t | size_ |
Keeps track of the size of the queue. | |
BUCKET ** | table_ |
Table of BUCKETS. | |
size_t | table_size_ |
Keeps track of the size of table_. | |
ACE_Timer_Hash_Upcall< TYPE, FUNCTOR, ACE_LOCK > | table_functor_ |
Functor used for the table's timer queues. | |
size_t | earliest_position_ |
Index to the position with the earliest entry. | |
HASH_ITERATOR * | iterator_ |
Iterator used to expire timers. | |
ACE_Locked_Free_List < Hash_Token< TYPE > , ACE_Null_Mutex > | token_list_ |
Friends | |
class | ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET, TIME_POLICY > |
Iterator is a friend. |
Additional Inherited Members | |
![]() | |
ACE_LOCK | mutex_ |
ACE_Free_List < ACE_Timer_Node_T< TYPE > > * | free_list_ |
Class that implements a free list. | |
TIME_POLICY | time_policy_ |
The policy to return the current time of day. | |
bool const | delete_free_list_ |
Flag to delete only if the class created the <free_list_> |
Provides a hash table of BUCKETs as an implementation for a timer queue.
This implementation uses a hash table of BUCKETs. The hash is based on the time_value of the event. Unlike other Timer Queues, ACE_Timer_Hash does not expire events in strict order, i.e., all events are expired after their deadline. But two events may expired out of order as defined by their deadlines.
typedef ACE_Timer_Queue_T<TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY> ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET, TIME_POLICY >::Base_Timer_Queue |
Type inherited from.
typedef ACE_Timer_Hash_Iterator_T<TYPE, FUNCTOR, ACE_LOCK, BUCKET, TIME_POLICY> ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET, TIME_POLICY >::HASH_ITERATOR |
Type of iterator.
ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET, TIME_POLICY >::ACE_Timer_Hash_T | ( | size_t | table_size, |
FUNCTOR * | upcall_functor = 0 , |
||
ACE_Free_List< ACE_Timer_Node_T< TYPE > > * | freelist = 0 , |
||
TIME_POLICY const & | time_policy = TIME_POLICY() |
||
) |
Default constructor. table_size determines the size of the hash table. upcall_functor is the instance of the FUNCTOR to be used by the buckets. If upcall_functor is 0, a default FUNCTOR will be created.
ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET, TIME_POLICY >::ACE_Timer_Hash_T | ( | FUNCTOR * | upcall_functor = 0 , |
ACE_Free_List< ACE_Timer_Node_T< TYPE > > * | freelist = 0 , |
||
TIME_POLICY const & | time_policy = TIME_POLICY() |
||
) |
Default constructor. upcall_functor is the instance of the FUNCTOR to be used by the queue. If upcall_functor is 0, Timer Hash will create a default FUNCTOR. freelist the freelist of timer nodes. If 0, then a default freelist will be created. The default size will be ACE_DEFAULT_TIMERS and there will be no preallocation.
|
virtual |
Destructor.
|
private |
|
virtual |
Cancel all timer associated with type. If <dont_call> is 0 then the <functor> will be invoked. Returns number of timers cancelled. If any valid timer is not cancelled before destruction of this instance of ACE_Timer_Hash_T then user will get a memory leak.
|
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. If any valid timer is not cancelled before destruction of this instance of ACE_Timer_Hash_T then user will get a memory leak.
|
virtual |
Destroy timer queue. Cancels all timers.
|
privatevirtual |
Non-locking version of dispatch_info ()
|
virtual |
Dump the state of an object.
Reimplemented from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.
|
virtual |
Returns the time of the earlier node in the <ACE_Timer_Hash>. Must be called on a non-empty queue.
|
virtual |
Run the <functor> for all timers whose values are <= gettimeofday. Also accounts for <timer_skew>. Returns the number of timers canceled.
Reimplemented from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.
|
virtual |
Run the <functor> for all timers whose values are <= current_time. This does not account for <timer_skew>. Returns the number of timers canceled.
Reimplemented from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.
|
private |
Finds the earliest node.
|
protectedvirtual |
Factory method that frees a previously allocated node.
Reimplemented from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.
|
virtual |
Reads the earliest node from the queue and returns it.
|
virtual |
True if queue is empty, else false.
|
virtual |
Returns a pointer to this ACE_Timer_Queue's iterator.
|
private |
|
virtual |
Removes the earliest node from the queue and returns it.
|
privatevirtual |
Reschedule an "interval" ACE_Timer_Node.
|
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.
|
privatevirtual |
Schedule type that will expire at future_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 is a pointer to a token which stores information about the event. This <timer_id> can be used to cancel the timer before it expires. Returns -1 on failure.
|
friend |
Iterator is a friend.
|
private |
Index to the position with the earliest entry.
|
private |
Iterator used to expire timers.
|
private |
Keeps track of the size of the queue.
|
private |
Table of BUCKETS.
|
private |
Functor used for the table's timer queues.
|
private |
Keeps track of the size of table_.
|
private |
Hash_Token is usually allocated in schedule but its deallocation is problematic and token_list_ helps with this.