|
|
The Update Queue has is conceptually a single writer multi-reader queue. It is used to store state for triggered updates and may be used unsolicited responses (routing table announcements).
typedef UpdateQueueReader<A> Reader | Reader |
[protected]
typedef ref_ptr<Reader> ReadIterator | ReadIterator |
typedef RouteEntryRef<A> RouteUpdate | RouteUpdate |
UpdateQueue ()
| UpdateQueue |
~UpdateQueue ()
| ~UpdateQueue |
void push_back (const RouteUpdate& ru)
| push_back |
void flush ()
| flush |
Remove all queued entries and reset all read iterators to the front of the queue.
ReadIterator create_reader ()
| create_reader |
Create a read iterator. These are reference counted entities that need to be stored in order to operate. The newly created reader is set to the end of the update queue.
void destroy_reader (ReadIterator& r)
| destroy_reader |
Destroy read iterator. This method detaches the iterator from the update queue. Use of the iterator after this call is unsafe.
bool reader_valid (const ReadIterator& r)
| reader_valid |
Check ReadIterator's validity.
Parameters:
r | reader to be checked. |
Returns: true if r is an active read iterator, false if iterator does not belong to this instance or has been destroyed.
const RouteEntry<A>* next (ReadIterator& r)
| next |
Increment iterator and return pointer to entry if available.
Returns: A pointer to a RouteEntry if available, 0 otherwise.
const RouteEntry<A>* get (ReadIterator& r)
| get |
[const]
Get the RouteEntry associated with the read iterator.
Returns: A pointer to a RouteEntry if available, 0 otherwise.
void ffwd (ReadIterator& r)
| ffwd |
Advance read iterator to end of update queue. Calls to next and get will return 0 until further updates occur.
void rwd (ReadIterator& r)
| rwd |
Move read iterator to first entry of update queue.
uint32_t updates_queued ()
| updates_queued |
[const]
Return number of updates held. Note: this may be more than are available for reading since there is internal buffering and UpdateQueue iterators attach at the end of the UpdateQueue.
Returns: number of updates queued.
UpdateQueueImpl<A>* _impl | _impl |
[protected]