ACE  6.3.3
Public Types | Public Member Functions | Protected Attributes | Private Member Functions | List of all members
ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY > Class Template Reference

Iterates over an ACE_Timer_Wheel. More...

#include <Timer_Wheel_T.h>

Inheritance diagram for ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >:
Inheritance graph
[legend]
Collaboration diagram for ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >:
Collaboration graph
[legend]

Public Types

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

Public Member Functions

 ACE_Timer_Wheel_Iterator_T (Wheel &)
 Constructor. More...
 
virtual ~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 bool 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...
 
- Public Member Functions inherited from ACE_Timer_Queue_Iterator_T< TYPE >
 ACE_Timer_Queue_Iterator_T (void)
 Constructor. More...
 
virtual ~ACE_Timer_Queue_Iterator_T (void)
 Destructor. 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 Member Functions

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, typename TIME_POLICY = ACE_Default_Time_Policy>
class ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >

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.

Member Typedef Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
typedef ACE_Timer_Node_T<TYPE> ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::Node
template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
typedef ACE_Timer_Wheel_T<TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY> ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::Wheel

Constructor & Destructor Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::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
wheelA reference for a timer queue to iterate over
template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::~ACE_Timer_Wheel_Iterator_T ( void  )
virtual

Destructor.

Destructor, at this level does nothing.

Member Function Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::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< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::goto_next ( u_int  start_spoke)
private

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

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
bool ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::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< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
ACE_Timer_Node_T< TYPE > * ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::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< TYPE >.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY >
void ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::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< TYPE >.

Member Data Documentation

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
ACE_Timer_Node_T<TYPE>* ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::current_node_
protected

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

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
u_int ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::spoke_
protected

Current position in the timing wheel.

template<class TYPE , class FUNCTOR , class ACE_LOCK , typename TIME_POLICY = ACE_Default_Time_Policy>
Wheel& ACE_Timer_Wheel_Iterator_T< TYPE, FUNCTOR, ACE_LOCK, TIME_POLICY >::timer_wheel_
protected

Pointer to the ACE_Timer_List that we are iterating over.


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