ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > Class Template Reference

Iterates over an . More...

#include <Timer_Hash_T.h>

Inheritance diagram for ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >:

Inheritance graph
[legend]
Collaboration diagram for ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ACE_Timer_Hash_Iterator_T (ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > &)
 Constructor.

virtual void first (void)
 Positions the iterator at the earliest node in the Timer Queue.

virtual void next (void)
 Positions the iterator at the next node in the Timer Queue.

virtual int isdone (void) const
 Returns true when there are no more nodes in the sequence.

virtual ACE_Timer_Node_T<
TYPE > * 
item (void)
 Returns the node at the current position in the sequence.


Protected Attributes

ACE_Timer_Hash_T< TYPE, FUNCTOR,
ACE_LOCK, BUCKET > & 
timer_hash_
 Pointer to the ACE_Timer_Hash that we are iterating over.

size_t position_
 Current position in 's table.

ACE_Timer_Queue_Iterator_T<
TYPE, ACE_Timer_Hash_Upcall<
TYPE, FUNCTOR, ACE_LOCK >,
ACE_Null_Mutex > * 
iter_
 Current iterator used on 's bucket.


Detailed Description

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
class ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >

Iterates over an .

This is a generic iterator that can be used to visit every node of a timer queue. Be aware that it doesn't transverse in the order of timeout values.

Definition at line 120 of file Timer_Hash_T.h.


Constructor & Destructor Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::ACE_Timer_Hash_Iterator_T ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET > &   ) 
 

Constructor.

Definition at line 153 of file Timer_Hash_T.cpp.

References ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::first().

00154   : timer_hash_ (hash)
00155 {
00156   this->first ();
00157   // Nothing
00158 }


Member Function Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
void ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::first void   )  [virtual]
 

Positions the iterator at the earliest node in the Timer Queue.

Implements ACE_Timer_Queue_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >.

Definition at line 163 of file Timer_Hash_T.cpp.

References ACE_Timer_Queue_Iterator_T< TYPE, ACE_Timer_Hash_Upcall< TYPE, FUNCTOR, ACE_LOCK >, ACE_Null_Mutex >::first(), ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::iter_, and ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::position_.

Referenced by ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::ACE_Timer_Hash_Iterator_T(), and ACE_Timer_Hash_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::iter().

00164 {
00165   for (this->position_ = 0;
00166        this->position_ < this->timer_hash_.table_size_;
00167        ++this->position_)
00168     {
00169       // Check for an empty entry
00170       if (!this->timer_hash_.table_[this->position_]->is_empty ())
00171         {
00172           this->iter_ = &this->timer_hash_.table_[this->position_]->iter ();
00173           this->iter_->first ();
00174           return;
00175         }
00176     }
00177 
00178   // Didn't find any
00179   this->iter_ = 0;
00180 }

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
int ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::isdone void   )  const [virtual]
 

Returns true when there are no more nodes in the sequence.

Implements ACE_Timer_Queue_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >.

Definition at line 217 of file Timer_Hash_T.cpp.

References ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::iter_.

Referenced by ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::item(), and ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::next().

00218 {
00219   return this->iter_ == 0;
00220 }

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Node_T< TYPE > * ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::item void   )  [virtual]
 

Returns the node at the current position in the sequence.

Implements ACE_Timer_Queue_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >.

Definition at line 225 of file Timer_Hash_T.cpp.

References ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::isdone(), ACE_Timer_Queue_Iterator_T< TYPE, ACE_Timer_Hash_Upcall< TYPE, FUNCTOR, ACE_LOCK >, ACE_Null_Mutex >::item(), and ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::iter_.

00226 {
00227   if (this->isdone ())
00228     return 0;
00229 
00230   return this->iter_->item ();
00231 }

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
void ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::next void   )  [virtual]
 

Positions the iterator at the next node in the Timer Queue.

Implements ACE_Timer_Queue_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >.

Definition at line 186 of file Timer_Hash_T.cpp.

References ACE_Timer_Queue_Iterator_T< TYPE, ACE_Timer_Hash_Upcall< TYPE, FUNCTOR, ACE_LOCK >, ACE_Null_Mutex >::first(), ACE_Timer_Queue_Iterator_T< TYPE, ACE_Timer_Hash_Upcall< TYPE, FUNCTOR, ACE_LOCK >, ACE_Null_Mutex >::isdone(), ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::isdone(), ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::iter_, ACE_Timer_Queue_Iterator_T< TYPE, ACE_Timer_Hash_Upcall< TYPE, FUNCTOR, ACE_LOCK >, ACE_Null_Mutex >::next(), and ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::position_.

00187 {
00188   if (this->isdone ())
00189     return;
00190 
00191   // If there is no more in the current bucket, go to the next
00192   if (this->iter_->isdone ())
00193     {
00194       for (++this->position_;
00195            this->position_ < this->timer_hash_.table_size_;
00196            ++this->position_)
00197         {
00198           // Check for an empty entry
00199           if (!this->timer_hash_.table_[this->position_]->is_empty ())
00200             {
00201               this->iter_ = &this->timer_hash_.table_[this->position_]->iter ();
00202               this->iter_->first ();
00203               return;
00204             }
00205         }
00206 
00207       // Didn't find any.
00208       this->iter_ = 0;
00209     }
00210   else
00211     this->iter_->next ();
00212 }


Member Data Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Queue_Iterator_T<TYPE, ACE_Timer_Hash_Upcall<TYPE, FUNCTOR, ACE_LOCK>, ACE_Null_Mutex>* ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::iter_ [protected]
 

Current iterator used on 's bucket.

Definition at line 146 of file Timer_Hash_T.h.

Referenced by ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::first(), ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::isdone(), ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::item(), and ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::next().

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
size_t ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::position_ [protected]
 

Current position in 's table.

Definition at line 143 of file Timer_Hash_T.h.

Referenced by ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::first(), and ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::next().

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
ACE_Timer_Hash_T<TYPE, FUNCTOR, ACE_LOCK, BUCKET>& ACE_Timer_Hash_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, BUCKET >::timer_hash_ [protected]
 

Pointer to the ACE_Timer_Hash that we are iterating over.

Definition at line 140 of file Timer_Hash_T.h.


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:31:13 2006 for ACE by doxygen 1.3.6