#include <Timer_Wheel_T.h>
Inheritance diagram for ACE_Timer_Wheel_Iterator_T:


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 | |
| Wheel & | timer_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... | |
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.
|
|||||
|
Definition at line 42 of file Timer_Wheel_T.h. |
|
|||||
|
Definition at line 41 of file Timer_Wheel_T.h. |
|
||||||||||
|
Constructor. Just initializes the iterator with a ACE_Timer_Wheel_T and then calls first() to initialize the rest of itself.
Definition at line 814 of file Timer_Wheel_T.cpp.
00815 : timer_wheel_ (wheel) 00816 { 00817 this->first(); 00818 } |
|
||||||||||
|
Destructor. Destructor, at this level does nothing. Definition at line 827 of file Timer_Wheel_T.cpp.
00828 {
00829 }
|
|
||||||||||
|
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 }
|
|
||||||||||
|
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 }
|
|
||||||||||
|
Returns true when there are no more nodes in the sequence.
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 }
|
|
||||||||||
|
Returns the node at the current position in the sequence.
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 }
|
|
||||||||||
|
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 }
|
|
|||||
|
Pointer to the position in the the <pos_>th list.
Definition at line 70 of file Timer_Wheel_T.h. |
|
|||||
|
Current position in the timing wheel.
Definition at line 67 of file Timer_Wheel_T.h. |
|
|||||
|
Pointer to the <ACE_Timer_List> that we are iterating over.
Definition at line 64 of file Timer_Wheel_T.h. |
1.2.14 written by Dimitri van Heesch,
© 1997-2002