OpenSDN source code
PeerCloseManager Class Reference

#include <peer_close_manager.h>

Collaboration diagram for PeerCloseManager:

Classes

struct  Event
 
struct  Stats
 

Public Member Functions

 PeerCloseManager (IPeerClose *peer_close, boost::asio::io_context *io_service)
 
 PeerCloseManager (IPeerClose *peer_close)
 
virtual ~PeerCloseManager ()
 
bool IsMembershipInUse () const
 
bool IsMembershipInWait () const
 
IPeerClosepeer_close () const
 
IPeerClose::Familiesfamilies ()
 
bool IsCloseInProgress () const
 
bool IsInDeleteState () const
 
bool IsInGRTimerWaitState () const
 
bool IsInLlgrTimerWaitState () const
 
bool IsQueueEmpty () const
 
void Close (bool graceful)
 
void ProcessEORMarkerReceived (Address::Family family)
 
void MembershipRequest ()
 
void MembershipRequestCallback ()
 
BgpNeighborResp * FillCloseInfo (BgpNeighborResp *resp) const
 
bool MembershipPathCallback (DBTablePartBase *root, BgpRoute *rt, BgpPath *path)
 
void UpdateRouteStats (Address::Family family, const BgpPath *old_path, uint32_t path_flags) const
 

Private Types

enum  State {
  BEGIN_STATE , NONE = BEGIN_STATE , STALE , GR_TIMER ,
  LLGR_STALE , LLGR_TIMER , SWEEP , DELETE ,
  END_STATE = DELETE
}
 
enum  MembershipState {
  BEGIN_MEMBERSHIP_STATE , MEMBERSHIP_NONE = BEGIN_MEMBERSHIP_STATE , MEMBERSHIP_IN_USE , MEMBERSHIP_IN_WAIT ,
  END_MEMBERSHIP_STATE = MEMBERSHIP_IN_WAIT
}
 
enum  EventType {
  BEGIN_EVENT , EVENT_NONE = BEGIN_EVENT , CLOSE , EOR_RECEIVED ,
  MEMBERSHIP_REQUEST , MEMBERSHIP_REQUEST_COMPLETE_CALLBACK , TIMER_CALLBACK , END_EVENT = TIMER_CALLBACK
}
 

Private Member Functions

State state () const
 
const Statsstats () const
 
void Close (Event *event)
 
void ProcessEORMarkerReceived (Event *event)
 
virtual void StartRestartTimer (int time)
 
bool RestartTimerCallback ()
 
void RestartTimerCallback (Event *event)
 
void ProcessClosure ()
 
void CloseComplete ()
 
void TriggerSweepStateActions ()
 
std::string GetStateName (State state) const
 
std::string GetMembershipStateName (MembershipState state) const
 
void FillRouteCloseInfo (PeerCloseInfo *close_info) const
 
void CloseInternal ()
 
void MembershipRequest (Event *event)
 
bool MembershipRequestCallback (Event *event)
 
void StaleNotify ()
 
bool EventCallback (Event *event)
 
std::string GetEventName (EventType eventType) const
 
void EnqueueEvent (Event *event)
 
bool close_again () const
 
virtual bool AssertMembershipState (bool do_assert=true)
 
virtual bool AssertMembershipReqCount (bool do_assert=true)
 
virtual bool AssertSweepState (bool do_assert=true)
 
virtual bool AssertMembershipManagerInUse (bool do_assert=true)
 
void set_membership_state (MembershipState state)
 
virtual bool CanUseMembershipManager () const
 
virtual void GetRegisteredRibs (std::list< BgpTable * > *tables)
 
virtual bool IsRegistered (BgpTable *table) const
 
virtual void Unregister (BgpTable *table)
 
virtual void WalkRibIn (BgpTable *table)
 
virtual void UnregisterRibOut (BgpTable *table)
 
virtual bool IsRibInRegistered (BgpTable *table) const
 
virtual void UnregisterRibIn (BgpTable *table)
 

Private Attributes

IPeerClosepeer_close_
 
Timergr_timer_
 
boost::scoped_ptr< WorkQueue< Event * > > event_queue_
 
State state_
 
bool close_again_
 
bool graceful_
 
int gr_elapsed_
 
int llgr_elapsed_
 
MembershipState membership_state_
 
IPeerClose::Families families_
 
Stats stats_
 
tbb::atomic< int > membership_req_pending_
 

Friends

class BgpServerUnitTest
 
class PeerCloseTest
 
class PeerCloseManagerTest
 
class GracefulRestartTest
 

Detailed Description

Definition at line 38 of file peer_close_manager.h.

Member Enumeration Documentation

◆ EventType

Enumerator
BEGIN_EVENT 
EVENT_NONE 
CLOSE 
EOR_RECEIVED 
MEMBERSHIP_REQUEST 
MEMBERSHIP_REQUEST_COMPLETE_CALLBACK 
TIMER_CALLBACK 
END_EVENT 

Definition at line 98 of file peer_close_manager.h.

◆ MembershipState

Enumerator
BEGIN_MEMBERSHIP_STATE 
MEMBERSHIP_NONE 
MEMBERSHIP_IN_USE 
MEMBERSHIP_IN_WAIT 
END_MEMBERSHIP_STATE 

Definition at line 90 of file peer_close_manager.h.

◆ State

Enumerator
BEGIN_STATE 
NONE 
STALE 
GR_TIMER 
LLGR_STALE 
LLGR_TIMER 
SWEEP 
DELETE 
END_STATE 

Definition at line 78 of file peer_close_manager.h.

Constructor & Destructor Documentation

◆ PeerCloseManager() [1/2]

PeerCloseManager::PeerCloseManager ( IPeerClose peer_close,
boost::asio::io_context *  io_service 
)

Definition at line 46 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ PeerCloseManager() [2/2]

PeerCloseManager::PeerCloseManager ( IPeerClose peer_close)
explicit

Definition at line 63 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ ~PeerCloseManager()

PeerCloseManager::~PeerCloseManager ( )
virtual

Definition at line 81 of file peer_close_manager.cc.

Here is the call graph for this function:

Member Function Documentation

◆ AssertMembershipManagerInUse()

bool PeerCloseManager::AssertMembershipManagerInUse ( bool  do_assert = true)
privatevirtual

Definition at line 372 of file peer_close_manager.cc.

◆ AssertMembershipReqCount()

bool PeerCloseManager::AssertMembershipReqCount ( bool  do_assert = true)
privatevirtual

Definition at line 390 of file peer_close_manager.cc.

◆ AssertMembershipState()

bool PeerCloseManager::AssertMembershipState ( bool  do_assert = true)
privatevirtual

Definition at line 383 of file peer_close_manager.cc.

◆ AssertSweepState()

bool PeerCloseManager::AssertSweepState ( bool  do_assert = true)
privatevirtual

Definition at line 365 of file peer_close_manager.cc.

◆ CanUseMembershipManager()

bool PeerCloseManager::CanUseMembershipManager ( ) const
privatevirtual

Definition at line 420 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ Close() [1/2]

void PeerCloseManager::Close ( bool  graceful)

Definition at line 185 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ Close() [2/2]

void PeerCloseManager::Close ( Event event)
private

Definition at line 189 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ close_again()

bool PeerCloseManager::close_again ( ) const
inlineprivate

Definition at line 199 of file peer_close_manager.h.

◆ CloseComplete()

void PeerCloseManager::CloseComplete ( )
private

Definition at line 352 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ CloseInternal()

void PeerCloseManager::CloseInternal ( )
private

Definition at line 197 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ EnqueueEvent()

void PeerCloseManager::EnqueueEvent ( Event event)
private

Definition at line 140 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ EventCallback()

bool PeerCloseManager::EventCallback ( Event event)
private

Definition at line 761 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ families()

IPeerClose::Families* PeerCloseManager::families ( )
inline

Definition at line 52 of file peer_close_manager.h.

◆ FillCloseInfo()

BgpNeighborResp * PeerCloseManager::FillCloseInfo ( BgpNeighborResp *  resp) const

Definition at line 625 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ FillRouteCloseInfo()

void PeerCloseManager::FillRouteCloseInfo ( PeerCloseInfo *  close_info) const
private

Definition at line 605 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ GetEventName()

std::string PeerCloseManager::GetEventName ( EventType  eventType) const
private

Definition at line 121 of file peer_close_manager.cc.

◆ GetMembershipStateName()

std::string PeerCloseManager::GetMembershipStateName ( MembershipState  state) const
private

Definition at line 107 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ GetRegisteredRibs()

void PeerCloseManager::GetRegisteredRibs ( std::list< BgpTable * > *  tables)
privatevirtual

Definition at line 424 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ GetStateName()

std::string PeerCloseManager::GetStateName ( State  state) const
private

Definition at line 86 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ IsCloseInProgress()

bool PeerCloseManager::IsCloseInProgress ( ) const
inline

Definition at line 54 of file peer_close_manager.h.

◆ IsInDeleteState()

bool PeerCloseManager::IsInDeleteState ( ) const
inline

Definition at line 55 of file peer_close_manager.h.

◆ IsInGRTimerWaitState()

bool PeerCloseManager::IsInGRTimerWaitState ( ) const
inline

Definition at line 56 of file peer_close_manager.h.

◆ IsInLlgrTimerWaitState()

bool PeerCloseManager::IsInLlgrTimerWaitState ( ) const
inline

Definition at line 59 of file peer_close_manager.h.

◆ IsMembershipInUse()

bool PeerCloseManager::IsMembershipInUse ( ) const
inline

Definition at line 45 of file peer_close_manager.h.

◆ IsMembershipInWait()

bool PeerCloseManager::IsMembershipInWait ( ) const
inline

Definition at line 48 of file peer_close_manager.h.

◆ IsQueueEmpty()

bool PeerCloseManager::IsQueueEmpty ( ) const
inline

Definition at line 60 of file peer_close_manager.h.

◆ IsRegistered()

bool PeerCloseManager::IsRegistered ( BgpTable table) const
privatevirtual

Definition at line 429 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ IsRibInRegistered()

bool PeerCloseManager::IsRibInRegistered ( BgpTable table) const
privatevirtual

Definition at line 449 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ MembershipPathCallback()

bool PeerCloseManager::MembershipPathCallback ( DBTablePartBase root,
BgpRoute rt,
BgpPath path 
)

Definition at line 659 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ MembershipRequest() [1/2]

void PeerCloseManager::MembershipRequest ( )

Definition at line 459 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ MembershipRequest() [2/2]

void PeerCloseManager::MembershipRequest ( Event event)
private

Definition at line 473 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ MembershipRequestCallback() [1/2]

void PeerCloseManager::MembershipRequestCallback ( )

Definition at line 519 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ MembershipRequestCallback() [2/2]

bool PeerCloseManager::MembershipRequestCallback ( Event event)
private

Definition at line 527 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ peer_close()

IPeerClose* PeerCloseManager::peer_close ( ) const
inline

Definition at line 51 of file peer_close_manager.h.

◆ ProcessClosure()

void PeerCloseManager::ProcessClosure ( )
private

Definition at line 294 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ ProcessEORMarkerReceived() [1/2]

void PeerCloseManager::ProcessEORMarkerReceived ( Address::Family  family)

Definition at line 239 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ ProcessEORMarkerReceived() [2/2]

void PeerCloseManager::ProcessEORMarkerReceived ( Event event)
private

Definition at line 243 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ RestartTimerCallback() [1/2]

bool PeerCloseManager::RestartTimerCallback ( )
private

Definition at line 266 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ RestartTimerCallback() [2/2]

void PeerCloseManager::RestartTimerCallback ( Event event)
private

Definition at line 272 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ set_membership_state()

void PeerCloseManager::set_membership_state ( MembershipState  state)
inlineprivate

Definition at line 204 of file peer_close_manager.h.

Here is the call graph for this function:

◆ StaleNotify()

void PeerCloseManager::StaleNotify ( )
private

Definition at line 411 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ StartRestartTimer()

void PeerCloseManager::StartRestartTimer ( int  time)
privatevirtual

Definition at line 258 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ state()

State PeerCloseManager::state ( ) const
inlineprivate

Definition at line 179 of file peer_close_manager.h.

◆ stats()

const Stats& PeerCloseManager::stats ( ) const
inlineprivate

Definition at line 180 of file peer_close_manager.h.

◆ TriggerSweepStateActions()

void PeerCloseManager::TriggerSweepStateActions ( )
private

Definition at line 397 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ Unregister()

void PeerCloseManager::Unregister ( BgpTable table)
privatevirtual

Definition at line 434 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ UnregisterRibIn()

void PeerCloseManager::UnregisterRibIn ( BgpTable table)
privatevirtual

Definition at line 454 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ UnregisterRibOut()

void PeerCloseManager::UnregisterRibOut ( BgpTable table)
privatevirtual

Definition at line 444 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ UpdateRouteStats()

void PeerCloseManager::UpdateRouteStats ( Address::Family  family,
const BgpPath old_path,
uint32_t  path_flags 
) const

Definition at line 648 of file peer_close_manager.cc.

Here is the call graph for this function:

◆ WalkRibIn()

void PeerCloseManager::WalkRibIn ( BgpTable table)
privatevirtual

Definition at line 439 of file peer_close_manager.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

◆ BgpServerUnitTest

friend class BgpServerUnitTest
friend

Definition at line 73 of file peer_close_manager.h.

◆ GracefulRestartTest

friend class GracefulRestartTest
friend

Definition at line 76 of file peer_close_manager.h.

◆ PeerCloseManagerTest

friend class PeerCloseManagerTest
friend

Definition at line 75 of file peer_close_manager.h.

◆ PeerCloseTest

friend class PeerCloseTest
friend

Definition at line 74 of file peer_close_manager.h.

Member Data Documentation

◆ close_again_

bool PeerCloseManager::close_again_
private

Definition at line 221 of file peer_close_manager.h.

◆ event_queue_

boost::scoped_ptr<WorkQueue<Event *> > PeerCloseManager::event_queue_
private

Definition at line 219 of file peer_close_manager.h.

◆ families_

IPeerClose::Families PeerCloseManager::families_
private

Definition at line 226 of file peer_close_manager.h.

◆ gr_elapsed_

int PeerCloseManager::gr_elapsed_
private

Definition at line 223 of file peer_close_manager.h.

◆ gr_timer_

Timer* PeerCloseManager::gr_timer_
private

Definition at line 218 of file peer_close_manager.h.

◆ graceful_

bool PeerCloseManager::graceful_
private

Definition at line 222 of file peer_close_manager.h.

◆ llgr_elapsed_

int PeerCloseManager::llgr_elapsed_
private

Definition at line 224 of file peer_close_manager.h.

◆ membership_req_pending_

tbb::atomic<int> PeerCloseManager::membership_req_pending_
private

Definition at line 228 of file peer_close_manager.h.

◆ membership_state_

MembershipState PeerCloseManager::membership_state_
private

Definition at line 225 of file peer_close_manager.h.

◆ peer_close_

IPeerClose* PeerCloseManager::peer_close_
private

Definition at line 217 of file peer_close_manager.h.

◆ state_

State PeerCloseManager::state_
private

Definition at line 220 of file peer_close_manager.h.

◆ stats_

Stats PeerCloseManager::stats_
private

Definition at line 227 of file peer_close_manager.h.


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