|
ACE 8.0.0
|
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 Types inherited from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY > | |
| typedef TIME_POLICY | time_policy_t |
| Type of time policy. | |
Public Types inherited from ACE_Abstract_Timer_Queue< TYPE > | |
| typedef ACE_Timer_Queue_Iterator_T< TYPE > | ITERATOR |
| Type of Iterator. | |
Protected Member Functions | |
| virtual void | free_node (ACE_Timer_Node_T< TYPE > *) |
| Factory method that frees a previously allocated node. | |
Protected Member Functions inherited from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY > | |
| virtual ACE_Timer_Node_T< TYPE > * | alloc_node () |
| Factory method that allocates a new node. | |
| 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 () |
| Finds the earliest node. | |
| ACE_Timer_Hash_T (const ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > &)=delete | |
| void | operator= (const ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > &)=delete |
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 | |
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. | |
| 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_> | |
Protected Attributes inherited from ACE_Timer_Queue_Upcall_Base< TYPE, FUNCTOR > | |
| FUNCTOR * | upcall_functor_ |
| Upcall functor. | |
| bool const | delete_upcall_functor_ |
| To delete or not to delete is the question? | |
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.
|
privatedelete |
|
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.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
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_handle_close 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.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
virtual |
Destroy timer queue. Cancels all timers.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
privatevirtual |
Non-locking version of dispatch_info ()
Reimplemented from ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.
|
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.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
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.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
virtual |
True if queue is empty, else false.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
virtual |
Returns a pointer to this ACE_Timer_Queue's iterator.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
privatedelete |
|
virtual |
Removes the earliest node from the queue and returns it.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
privatevirtual |
Reschedule an "interval" ACE_Timer_Node.
Implements ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.
|
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.
Implements ACE_Abstract_Timer_Queue< TYPE >.
|
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.
Implements ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >.
|
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.