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

Iterates over an ACE_Timer_Hash_T. 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 bool 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 <timer_hash_>'s table.
ACE_Timer_Queue_Iterator_T<
TYPE, ACE_Timer_Hash_Upcall<
TYPE, FUNCTOR, ACE_LOCK >,
ACE_Null_Mutex > * 
iter_
 Current iterator used on <position>'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 ACE_Timer_Hash_T.

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 122 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 179 of file Timer_Hash_T.cpp.

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

00180   : timer_hash_ (hash)
00181 {
00182   this->first ();
00183   // Nothing
00184 }


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 189 of file Timer_Hash_T.cpp.

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

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

00190 {
00191   for (this->position_ = 0;
00192        this->position_ < this->timer_hash_.table_size_;
00193        ++this->position_)
00194     {
00195       // Check for an empty entry
00196       if (!this->timer_hash_.table_[this->position_]->is_empty ())
00197         {
00198           this->iter_ = &this->timer_hash_.table_[this->position_]->iter ();
00199           this->iter_->first ();
00200           return;
00201         }
00202     }
00203 
00204   // Didn't find any
00205   this->iter_ = 0;
00206 }

template<class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET>
bool 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 243 of file Timer_Hash_T.cpp.

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

00244 {
00245   return this->iter_ == 0;
00246 }

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 252 of file Timer_Hash_T.cpp.

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

00253 {
00254   if (this->isdone ())
00255     return 0;
00256 
00257   return this->iter_->item ();
00258 }

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 212 of file Timer_Hash_T.cpp.

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

00213 {
00214   if (this->isdone ())
00215     return;
00216 
00217   // If there is no more in the current bucket, go to the next
00218   if (this->iter_->isdone ())
00219     {
00220       for (++this->position_;
00221            this->position_ < this->timer_hash_.table_size_;
00222            ++this->position_)
00223         {
00224           // Check for an empty entry
00225           if (!this->timer_hash_.table_[this->position_]->is_empty ())
00226             {
00227               this->iter_ = &this->timer_hash_.table_[this->position_]->iter ();
00228               this->iter_->first ();
00229               return;
00230             }
00231         }
00232 
00233       // Didn't find any.
00234       this->iter_ = 0;
00235     }
00236   else
00237     this->iter_->next ();
00238 }


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 <position>'s bucket.

Definition at line 148 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 <timer_hash_>'s table.

Definition at line 145 of file Timer_Hash_T.h.

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 142 of file Timer_Hash_T.h.


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:35:47 2010 for ACE by  doxygen 1.4.7