OpenSDN source code
UpdateQueue Class Reference

#include <bgp_update_queue.h>

Collaboration diagram for UpdateQueue:

Public Types

typedef boost::intrusive::member_hook< UpdateEntry, boost::intrusive::list_member_hook<>, &UpdateEntry::list_nodeUpdateEntryNode
 
typedef boost::intrusive::list< UpdateEntry, UpdateEntryNodeUpdatesByOrder
 
typedef boost::intrusive::member_hook< UpdateInfo, boost::intrusive::set_member_hook<>, &UpdateInfo::update_nodeUpdateSetNode
 
typedef boost::intrusive::set< UpdateInfo, UpdateSetNode, boost::intrusive::compare< UpdateByAttrCmp > > UpdatesByAttr
 
typedef std::vector< UpdateMarker * > MarkerList
 

Public Member Functions

 UpdateQueue (const RibOut *ribout, int queue_id)
 
 ~UpdateQueue ()
 
bool Enqueue (RouteUpdate *rt_update)
 
void Dequeue (RouteUpdate *rt_update)
 
RouteUpdateNextUpdate (UpdateEntry *upentry)
 
UpdateEntryNextEntry (UpdateEntry *upentry)
 
void AttrDequeue (UpdateInfo *current_uinfo)
 
UpdateInfoAttrNext (UpdateInfo *current_uinfo)
 
void AddMarker (UpdateMarker *marker, RouteUpdate *rt_update)
 
void MoveMarker (UpdateMarker *marker, RouteUpdate *rt_update)
 
void MarkerSplit (UpdateMarker *marker, const RibPeerSet &msplit)
 
void MarkerMerge (UpdateMarker *dst_marker, UpdateMarker *src_marker, const RibPeerSet &bitset)
 
UpdateMarkerGetMarker (int bit)
 
bool Join (int bit)
 
void Leave (int bit)
 
bool CheckInvariants () const
 
UpdateMarkertail_marker ()
 
bool empty () const
 
size_t size () const
 
size_t marker_count () const
 

Private Member Functions

 DISALLOW_COPY_AND_ASSIGN (UpdateQueue)
 

Private Attributes

int queue_id_
 
bool encoding_is_xmpp_
 
uint64_t tstamp_
 
size_t marker_count_
 
UpdatesByOrder queue_
 
UpdatesByAttr attr_set_
 
MarkerList markers_
 
UpdateMarker tail_marker_
 

Friends

class BgpExportTest
 
class RibOutUpdatesTest
 

Detailed Description

Definition at line 96 of file bgp_update_queue.h.

Member Typedef Documentation

◆ MarkerList

typedef std::vector<UpdateMarker *> UpdateQueue::MarkerList

Definition at line 117 of file bgp_update_queue.h.

◆ UpdateEntryNode

typedef boost::intrusive::member_hook< UpdateEntry, boost::intrusive::list_member_hook<>, &UpdateEntry::list_node > UpdateQueue::UpdateEntryNode

Definition at line 103 of file bgp_update_queue.h.

◆ UpdatesByAttr

◆ UpdatesByOrder

typedef boost::intrusive::list<UpdateEntry, UpdateEntryNode> UpdateQueue::UpdatesByOrder

Definition at line 105 of file bgp_update_queue.h.

◆ UpdateSetNode

typedef boost::intrusive::member_hook<UpdateInfo, boost::intrusive::set_member_hook<>, &UpdateInfo::update_node > UpdateQueue::UpdateSetNode

Definition at line 111 of file bgp_update_queue.h.

Constructor & Destructor Documentation

◆ UpdateQueue()

UpdateQueue::UpdateQueue ( const RibOut ribout,
int  queue_id 
)

Definition at line 14 of file bgp_update_queue.cc.

◆ ~UpdateQueue()

UpdateQueue::~UpdateQueue ( )

Definition at line 25 of file bgp_update_queue.cc.

Member Function Documentation

◆ AddMarker()

void UpdateQueue::AddMarker ( UpdateMarker marker,
RouteUpdate rt_update 
)

Definition at line 160 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ AttrDequeue()

void UpdateQueue::AttrDequeue ( UpdateInfo current_uinfo)

Definition at line 110 of file bgp_update_queue.cc.

◆ AttrNext()

UpdateInfo * UpdateQueue::AttrNext ( UpdateInfo current_uinfo)

Definition at line 130 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ CheckInvariants()

bool UpdateQueue::CheckInvariants ( ) const

Definition at line 302 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ Dequeue()

void UpdateQueue::Dequeue ( RouteUpdate rt_update)

Definition at line 65 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ DISALLOW_COPY_AND_ASSIGN()

UpdateQueue::DISALLOW_COPY_AND_ASSIGN ( UpdateQueue  )
private

◆ empty()

bool UpdateQueue::empty ( ) const

Definition at line 317 of file bgp_update_queue.cc.

◆ Enqueue()

bool UpdateQueue::Enqueue ( RouteUpdate rt_update)

Definition at line 37 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ GetMarker()

UpdateMarker * UpdateQueue::GetMarker ( int  bit)

Definition at line 256 of file bgp_update_queue.cc.

◆ Join()

bool UpdateQueue::Join ( int  bit)

Definition at line 273 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ Leave()

void UpdateQueue::Leave ( int  bit)

Definition at line 291 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ marker_count()

size_t UpdateQueue::marker_count ( ) const

Definition at line 325 of file bgp_update_queue.cc.

◆ MarkerMerge()

void UpdateQueue::MarkerMerge ( UpdateMarker dst_marker,
UpdateMarker src_marker,
const RibPeerSet bitset 
)

Definition at line 230 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ MarkerSplit()

void UpdateQueue::MarkerSplit ( UpdateMarker marker,
const RibPeerSet msplit 
)

Definition at line 206 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ MoveMarker()

void UpdateQueue::MoveMarker ( UpdateMarker marker,
RouteUpdate rt_update 
)

Definition at line 184 of file bgp_update_queue.cc.

◆ NextEntry()

UpdateEntry * UpdateQueue::NextEntry ( UpdateEntry upentry)

Definition at line 99 of file bgp_update_queue.cc.

◆ NextUpdate()

RouteUpdate * UpdateQueue::NextUpdate ( UpdateEntry upentry)

Definition at line 81 of file bgp_update_queue.cc.

Here is the call graph for this function:

◆ size()

size_t UpdateQueue::size ( ) const

Definition at line 321 of file bgp_update_queue.cc.

◆ tail_marker()

UpdateMarker* UpdateQueue::tail_marker ( )
inline

Definition at line 143 of file bgp_update_queue.h.

Friends And Related Function Documentation

◆ BgpExportTest

friend class BgpExportTest
friend

Definition at line 150 of file bgp_update_queue.h.

◆ RibOutUpdatesTest

friend class RibOutUpdatesTest
friend

Definition at line 151 of file bgp_update_queue.h.

Member Data Documentation

◆ attr_set_

UpdatesByAttr UpdateQueue::attr_set_
private

Definition at line 158 of file bgp_update_queue.h.

◆ encoding_is_xmpp_

bool UpdateQueue::encoding_is_xmpp_
private

Definition at line 154 of file bgp_update_queue.h.

◆ marker_count_

size_t UpdateQueue::marker_count_
private

Definition at line 156 of file bgp_update_queue.h.

◆ markers_

MarkerList UpdateQueue::markers_
private

Definition at line 159 of file bgp_update_queue.h.

◆ queue_

UpdatesByOrder UpdateQueue::queue_
private

Definition at line 157 of file bgp_update_queue.h.

◆ queue_id_

int UpdateQueue::queue_id_
private

Definition at line 153 of file bgp_update_queue.h.

◆ tail_marker_

UpdateMarker UpdateQueue::tail_marker_
private

Definition at line 160 of file bgp_update_queue.h.

◆ tstamp_

uint64_t UpdateQueue::tstamp_
private

Definition at line 155 of file bgp_update_queue.h.


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