OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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

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.

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.

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::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::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 ( )
virtual

Definition at line 81 of file peer_close_manager.cc.

Here is the call graph for this function:

Member Function Documentation

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

Definition at line 372 of file peer_close_manager.cc.

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

Definition at line 390 of file peer_close_manager.cc.

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

Definition at line 383 of file peer_close_manager.cc.

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

Definition at line 365 of file peer_close_manager.cc.

bool PeerCloseManager::CanUseMembershipManager ( ) const
privatevirtual

Definition at line 420 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::Close ( bool  graceful)

Definition at line 185 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::Close ( Event event)
private

Definition at line 189 of file peer_close_manager.cc.

Here is the call graph for this function:

bool PeerCloseManager::close_again ( ) const
inlineprivate

Definition at line 199 of file peer_close_manager.h.

void PeerCloseManager::CloseComplete ( )
private

Definition at line 352 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::CloseInternal ( )
private

Definition at line 197 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::EnqueueEvent ( Event event)
private

Definition at line 140 of file peer_close_manager.cc.

Here is the call graph for this function:

bool PeerCloseManager::EventCallback ( Event event)
private

Definition at line 761 of file peer_close_manager.cc.

Here is the call graph for this function:

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

Definition at line 52 of file peer_close_manager.h.

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

Definition at line 625 of file peer_close_manager.cc.

Here is the call graph for this function:

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:

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

Definition at line 121 of file peer_close_manager.cc.

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

Definition at line 107 of file peer_close_manager.cc.

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:

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

Definition at line 86 of file peer_close_manager.cc.

bool PeerCloseManager::IsCloseInProgress ( ) const
inline

Definition at line 54 of file peer_close_manager.h.

bool PeerCloseManager::IsInDeleteState ( ) const
inline

Definition at line 55 of file peer_close_manager.h.

bool PeerCloseManager::IsInGRTimerWaitState ( ) const
inline

Definition at line 56 of file peer_close_manager.h.

bool PeerCloseManager::IsInLlgrTimerWaitState ( ) const
inline

Definition at line 59 of file peer_close_manager.h.

bool PeerCloseManager::IsMembershipInUse ( ) const
inline

Definition at line 45 of file peer_close_manager.h.

bool PeerCloseManager::IsMembershipInWait ( ) const
inline

Definition at line 48 of file peer_close_manager.h.

bool PeerCloseManager::IsQueueEmpty ( ) const
inline

Definition at line 60 of file peer_close_manager.h.

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:

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:

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:

void PeerCloseManager::MembershipRequest ( )

Definition at line 459 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::MembershipRequest ( Event event)
private

Definition at line 473 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::MembershipRequestCallback ( )

Definition at line 519 of file peer_close_manager.cc.

Here is the call graph for this function:

bool PeerCloseManager::MembershipRequestCallback ( Event event)
private

Definition at line 527 of file peer_close_manager.cc.

Here is the call graph for this function:

IPeerClose* PeerCloseManager::peer_close ( ) const
inline

Definition at line 51 of file peer_close_manager.h.

void PeerCloseManager::ProcessClosure ( )
private

Definition at line 294 of file peer_close_manager.cc.

Here is the call graph for this function:

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

Definition at line 239 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::ProcessEORMarkerReceived ( Event event)
private

Definition at line 243 of file peer_close_manager.cc.

Here is the call graph for this function:

bool PeerCloseManager::RestartTimerCallback ( )
private

Definition at line 266 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::RestartTimerCallback ( Event event)
private

Definition at line 272 of file peer_close_manager.cc.

Here is the call graph for this function:

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:

void PeerCloseManager::StaleNotify ( )
private

Definition at line 411 of file peer_close_manager.cc.

Here is the call graph for this function:

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 PeerCloseManager::state ( ) const
inlineprivate

Definition at line 179 of file peer_close_manager.h.

const Stats& PeerCloseManager::stats ( ) const
inlineprivate

Definition at line 180 of file peer_close_manager.h.

void PeerCloseManager::TriggerSweepStateActions ( )
private

Definition at line 397 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::Unregister ( BgpTable table)
privatevirtual

Definition at line 434 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::UnregisterRibIn ( BgpTable table)
privatevirtual

Definition at line 454 of file peer_close_manager.cc.

Here is the call graph for this function:

void PeerCloseManager::UnregisterRibOut ( BgpTable table)
privatevirtual

Definition at line 444 of file peer_close_manager.cc.

Here is the call graph for this function:

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:

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

friend class BgpServerUnitTest
friend

Definition at line 73 of file peer_close_manager.h.

friend class GracefulRestartTest
friend

Definition at line 76 of file peer_close_manager.h.

friend class PeerCloseManagerTest
friend

Definition at line 75 of file peer_close_manager.h.

friend class PeerCloseTest
friend

Definition at line 74 of file peer_close_manager.h.

Member Data Documentation

bool PeerCloseManager::close_again_
private

Definition at line 221 of file peer_close_manager.h.

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

Definition at line 219 of file peer_close_manager.h.

IPeerClose::Families PeerCloseManager::families_
private

Definition at line 226 of file peer_close_manager.h.

int PeerCloseManager::gr_elapsed_
private

Definition at line 223 of file peer_close_manager.h.

Timer* PeerCloseManager::gr_timer_
private

Definition at line 218 of file peer_close_manager.h.

bool PeerCloseManager::graceful_
private

Definition at line 222 of file peer_close_manager.h.

int PeerCloseManager::llgr_elapsed_
private

Definition at line 224 of file peer_close_manager.h.

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

Definition at line 228 of file peer_close_manager.h.

MembershipState PeerCloseManager::membership_state_
private

Definition at line 225 of file peer_close_manager.h.

IPeerClose* PeerCloseManager::peer_close_
private

Definition at line 217 of file peer_close_manager.h.

State PeerCloseManager::state_
private

Definition at line 220 of file peer_close_manager.h.

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: