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

# ACE_Timer_Hash_T Class Template Reference

Provides a hash table of <BUCKET>s as an implementation for a timer queue. More...

`#include <Timer_Hash_T.h>`

Inheritance diagram for ACE_Timer_Hash_T:

[legend]
Collaboration diagram for ACE_Timer_Hash_T:

[legend]
List of all members.

## Public Types
typedef ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > | HASH_ITERATOR
| Type of iterator. More...
typedef ACE_Timer_Queue_T< TYPE, FUNCTOR, ACE_LOCK > | INHERITED
| Type inherited from. More...
## Public Methods
| ACE_Timer_Hash_T (size_t table_size, FUNCTOR *upcall_functor=0, ACE_Free_List< ACE_Timer_Node_T< TYPE > > *freelist=0)
| ACE_Timer_Hash_T (FUNCTOR *upcall_functor=0, ACE_Free_List< ACE_Timer_Node_T< TYPE > > *freelist=0)
virtual | ~ACE_Timer_Hash_T (void)
| Destructor. More...
virtual int | is_empty (void) const
| True if queue is empty, else false. More...
virtual const ACE_Time_Value & | earliest_time (void) const
| Returns the time of the earlier node in the <ACE_Timer_Hash>. 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 int | expire (void)
virtual int | expire (const ACE_Time_Value &current_time)
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 ACE_Timer_Node_T< TYPE > * | get_first (void)
| Reads the earliest node from the queue and returns it. More...
## Private Methods
virtual void | reschedule (ACE_Timer_Node_T< TYPE > *)
| Reschedule an "interval" <ACE_Timer_Node>. More...
void | find_new_earliest (void)
| Finds the earliest node. More...
| 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. More...
BUCKET ** | table_
| Table of BUCKETS. More...
size_t | table_size_
| Keeps track of the size of table_. More...
ACE_Timer_Hash_Upcall< TYPE, FUNCTOR, ACE_LOCK > | table_functor_
| Functor used for the table's timer queues. More...
size_t | earliest_position_
| Index to the position with the earliest entry. More...
HASH_ITERATOR * | iterator_
| Iterator used to expire timers. More...
## Friends
class | ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >
| Iterator is a friend. More...

## Detailed Description

### template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
class ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >

Provides a hash table of <BUCKET>s 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 order.

## Member Typedef Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
typedef ACE_Timer_Hash_Iterator_T<TYPE, FUNCTOR, ACE_LOCK, BUCKET> ACE_Timer_Hash_T::HASH_ITERATOR

| Type of iterator.

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

| Type inherited from.

## Constructor & Destructor Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::ACE_Timer_Hash_T | ( | size_t | table_size,
|  | FUNCTOR * | upcall_functor = 0,
|  | ACE_Free_List< ACE_Timer_Node_T< TYPE > > * | freelist = 0
| ) |

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

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::ACE_Timer_Hash_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 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.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::~ACE_Timer_Hash_T | ( | void |  | ) | `[virtual]`

| Destructor.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::ACE_Timer_Hash_T | ( | const ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > & |  | ) | `[private]`

## Member Function Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
int ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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, class BUCKET>
int ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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, class BUCKET>
void ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::dump | ( | void |  | ) | const`[virtual]`

| Dump the state of an object. Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
const ACE_Time_Value & ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::earliest_time | ( | void |  | ) | const`[virtual]`

| Returns the time of the earlier node in the <ACE_Timer_Hash>. Must be called on a non-empty queue. Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
int ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::expire | ( | const ACE_Time_Value & | cur_time | ) | `[virtual]`

| Run the <functor> for all timers whose values are <= <cur_time>. This does not account for <timer_skew>. Returns the number of timers canceled. Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
int ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
void ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::find_new_earliest | ( | void |  | ) | `[private]`

| Finds the earliest node.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Node_T< TYPE > * ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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, class BUCKET>
int ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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, class BUCKET>
ACE_Timer_Queue_Iterator_T< TYPE, FUNCTOR, ACE_LOCK > & ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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, class BUCKET>
void ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::operator= | ( | const ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > & |  | ) | `[private]`

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Node_T< TYPE > * ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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, class BUCKET>
void ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::reschedule | ( | ACE_Timer_Node_T< TYPE > * | expired | ) | `[private, virtual]`

| Reschedule an "interval" <ACE_Timer_Node>. Reimplemented from ACE_Timer_Queue_T.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
int ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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, class BUCKET>
long ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::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 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. Reimplemented from ACE_Timer_Queue_T.

## Friends And Related Function Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
friend class ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >`[friend]`

| Iterator is a friend.

## Member Data Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
size_t ACE_Timer_Hash_T::earliest_position_`[private]`

| Index to the position with the earliest entry.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
HASH_ITERATOR* ACE_Timer_Hash_T::iterator_`[private]`

| Iterator used to expire timers.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
size_t ACE_Timer_Hash_T::size_`[private]`

| Keeps track of the size of the queue.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
BUCKET** ACE_Timer_Hash_T::table_`[private]`

| Table of BUCKETS.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Hash_Upcall<TYPE, FUNCTOR, ACE_LOCK> ACE_Timer_Hash_T::table_functor_`[private]`

| Functor used for the table's timer queues.

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
size_t ACE_Timer_Hash_T::table_size_`[private]`

| Keeps track of the size of table_.

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

- Timer_Hash_T.h
- Timer_Hash_T.cpp