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

ACE_Timer_Wheel_Iterator_T Class Template Reference

Iterates over an <ACE_Timer_Wheel>. More...

#include <Timer_Wheel_T.h>

Inheritance diagram for ACE_Timer_Wheel_Iterator_T:

Inheritance graph
[legend]
Collaboration diagram for ACE_Timer_Wheel_Iterator_T:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_Timer_Wheel_T<
TYPE, FUNCTOR, ACE_LOCK > 
Wheel
typedef ACE_Timer_Node_T<
TYPE > 
Node

Public Methods

 ACE_Timer_Wheel_Iterator_T (Wheel &)
 Constructor. More...

 ~ACE_Timer_Wheel_Iterator_T (void)
 Destructor. More...

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

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

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

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


Protected Attributes

Wheeltimer_wheel_
 Pointer to the <ACE_Timer_List> that we are iterating over. More...

u_int spoke_
 Current position in the timing wheel. More...

ACE_Timer_Node_T< TYPE > * current_node_
 Pointer to the position in the the <pos_>th list. More...


Private Methods

void goto_next (u_int start_spoke)
 Helper class for common functionality of next() and first(). More...


Detailed Description

template<class TYPE, class FUNCTOR, class ACE_LOCK>
class ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >

Iterates over an <ACE_Timer_Wheel>.

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

Definition at line 37 of file Timer_Wheel_T.h.


Member Typedef Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
typedef ACE_Timer_Node_T<TYPE> ACE_Timer_Wheel_Iterator_T::Node
 

Definition at line 42 of file Timer_Wheel_T.h.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
typedef ACE_Timer_Wheel_T<TYPE, FUNCTOR, ACE_LOCK> ACE_Timer_Wheel_Iterator_T::Wheel
 

Definition at line 41 of file Timer_Wheel_T.h.


Constructor & Destructor Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >::ACE_Timer_Wheel_Iterator_T Wheel   wheel
 

Constructor.

Just initializes the iterator with a ACE_Timer_Wheel_T and then calls first() to initialize the rest of itself.

Parameters:
wheel  A reference for a timer queue to iterate over

Definition at line 814 of file Timer_Wheel_T.cpp.

00815 : timer_wheel_ (wheel)
00816 {
00817   this->first();
00818 }

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >::~ACE_Timer_Wheel_Iterator_T void   
 

Destructor.

Destructor, at this level does nothing.

Definition at line 827 of file Timer_Wheel_T.cpp.

00828 {
00829 }


Member Function Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
void ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >::first void    [virtual]
 

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

Positions the iterator at the first position in the timing wheel that contains something. spoke_ will be set to the spoke position of this entry and current_node_ will point to the first entry in that spoke.

If the wheel is empty, spoke_ will be equal timer_wheel_.spoke_count_ and current_node_ would be 0.

Implements ACE_Timer_Queue_Iterator_T.

Definition at line 841 of file Timer_Wheel_T.cpp.

References goto_next.

Referenced by ACE_Timer_Wheel_T::iter.

00842 {
00843   this->goto_next(0);
00844 }

template<class TYPE, class FUNCTOR, class ACE_LOCK>
void ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >::goto_next u_int    start_spoke [private]
 

Helper class for common functionality of next() and first().

Definition at line 866 of file Timer_Wheel_T.cpp.

References current_node_, ACE_Timer_Node_T::get_next, spoke_, ACE_Timer_Wheel_T::spoke_count_, ACE_Timer_Wheel_T::spokes_, and timer_wheel_.

Referenced by first, and next.

00867 {
00868   // Find the first non-empty entry.
00869   u_int sc = this->timer_wheel_.spoke_count_;
00870   for (u_int i = start_spoke; i < sc; ++i)
00871   {
00872     ACE_Timer_Node_T<TYPE>* root = this->timer_wheel_.spokes_[i];
00873     ACE_Timer_Node_T<TYPE>* n = root->get_next ();
00874     if (n != root)
00875       {
00876         this->spoke_ = i;
00877         this->current_node_ = n;
00878         return;
00879       }
00880   }
00881   // empty
00882   this->spoke_ = sc;
00883   this->current_node_ = 0;
00884 }

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

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

Returns:
True when we there aren't any more items (when current_node_ == 0)

Implements ACE_Timer_Queue_Iterator_T.

Definition at line 891 of file Timer_Wheel_T.cpp.

References current_node_.

Referenced by next.

00892 {
00893   return this->current_node_ == 0;
00894 }

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

Returns the node at the current position in the sequence.

Returns:
The node at the current spokeition in the sequence or 0 if the wheel is empty

Implements ACE_Timer_Queue_Iterator_T.

Definition at line 902 of file Timer_Wheel_T.cpp.

References current_node_.

00903 {
00904   return this->current_node_;
00905 }

template<class TYPE, class FUNCTOR, class ACE_LOCK>
void ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK >::next void    [virtual]
 

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

Positions the iterator at the next node.

Implements ACE_Timer_Queue_Iterator_T.

Definition at line 851 of file Timer_Wheel_T.cpp.

References current_node_, goto_next, isdone, spoke_, ACE_Timer_Wheel_T::spokes_, and timer_wheel_.

00852 {
00853   if (this->isdone())
00854     return;
00855 
00856   ACE_Timer_Node_T<TYPE>* n = this->current_node_->get_next ();
00857   ACE_Timer_Node_T<TYPE>* root = this->timer_wheel_.spokes_[this->spoke_];
00858   if (n == root)
00859     this->goto_next (this->spoke_ + 1);
00860   else
00861     this->current_node_ = n;
00862 }


Member Data Documentation

template<class TYPE, class FUNCTOR, class ACE_LOCK>
ACE_Timer_Node_T<TYPE>* ACE_Timer_Wheel_Iterator_T::current_node_ [protected]
 

Pointer to the position in the the <pos_>th list.

Definition at line 70 of file Timer_Wheel_T.h.

Referenced by goto_next, isdone, item, and next.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
u_int ACE_Timer_Wheel_Iterator_T::spoke_ [protected]
 

Current position in the timing wheel.

Definition at line 67 of file Timer_Wheel_T.h.

Referenced by goto_next, and next.

template<class TYPE, class FUNCTOR, class ACE_LOCK>
Wheel& ACE_Timer_Wheel_Iterator_T::timer_wheel_ [protected]
 

Pointer to the <ACE_Timer_List> that we are iterating over.

Definition at line 64 of file Timer_Wheel_T.h.

Referenced by goto_next, and next.


The documentation for this class was generated from the following files:
Generated on Mon Jun 16 12:58:09 2003 for ACE by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002