nfd::rib::Rib Class Reference

represents the Routing Information Base More...

#include <rib/rib.hpp>

+ Inheritance diagram for nfd::rib::Rib:
+ Collaboration diagram for nfd::rib::Rib:

Public Types

typedef RibTable::const_iterator const_iterator
 
typedef std::map< uint64_t, std::list< shared_ptr< RibEntry > > > FaceLookupTable
 
typedef std::list< shared_ptr< RibEntry > > RibEntryList
 
typedef std::map< Name, shared_ptr< RibEntry > > RibTable
 
typedef bool(* RouteComparePredicate) (const Route &, const Route &)
 
typedef std::set< Route, RouteComparePredicateRouteSet
 
using UpdateFailureCallback = std::function< void(uint32_t code, const std::string &error)>
 
using UpdateSuccessCallback = std::function< void()>
 

Public Member Functions

 Rib ()
 
const_iterator begin () const
 
void beginApplyUpdate (const RibUpdate &update, const UpdateSuccessCallback &onSuccess, const UpdateFailureCallback &onFailure)
 passes the provided RibUpdateBatch to FibUpdater to calculate and send FibUpdates. More...
 
void beginRemoveFace (uint64_t faceId)
 starts the FIB update process when a face has been destroyed More...
 
bool empty () const
 
const_iterator end () const
 
const_iterator find (const Name &prefix) const
 
Routefind (const Name &prefix, const Route &route) const
 
std::list< shared_ptr< RibEntry > > findDescendants (const Name &prefix) const
 finds namespaces under the passed prefix More...
 
std::list< shared_ptr< RibEntry > > findDescendantsForNonInsertedName (const Name &prefix) const
 finds namespaces under the passed prefix More...
 
RoutefindLongestPrefix (const Name &prefix, const Route &route) const
 
shared_ptr< RibEntryfindParent (const Name &prefix) const
 
void insert (const Name &prefix, const Route &route)
 
void onFibUpdateFailure (const Rib::UpdateFailureCallback &onFailure, uint32_t code, const std::string &error)
 
void onFibUpdateSuccess (const RibUpdateBatch &batch, const RibUpdateList &inheritedRoutes, const Rib::UpdateSuccessCallback &onSuccess)
 
void onRouteExpiration (const Name &prefix, const Route &route)
 
void setFibUpdater (FibUpdater *updater)
 
size_t size () const
 

Public Attributes

ndn::util::signal::Signal< Rib, RibRouteRefafterAddRoute
 signals after a Route is added More...
 
ndn::util::signal::Signal< Rib, Name > afterEraseEntry
 signals after a RIB entry is erased More...
 
ndn::util::signal::Signal< Rib, Name > afterInsertEntry
 signals after a RIB entry is inserted More...
 
ndn::util::signal::Signal< Rib, RibRouteRefbeforeRemoveRoute
 signals before a route is removed More...
 

Friends

class FibUpdater
 

Detailed Description

represents the Routing Information Base

The Routing Information Base contains a collection of Routes, each represents a piece of static or dynamic routing information registered by applications, operators, or NFD itself. Routes associated with the same namespace are collected into a RIB entry.

Definition at line 59 of file rib.hpp.

Member Typedef Documentation

typedef RibTable::const_iterator nfd::rib::Rib::const_iterator

Definition at line 64 of file rib.hpp.

typedef std::map<uint64_t, std::list<shared_ptr<RibEntry> > > nfd::rib::Rib::FaceLookupTable

Definition at line 65 of file rib.hpp.

typedef std::list<shared_ptr<RibEntry> > nfd::rib::Rib::RibEntryList

Definition at line 62 of file rib.hpp.

typedef std::map<Name, shared_ptr<RibEntry> > nfd::rib::Rib::RibTable

Definition at line 63 of file rib.hpp.

typedef bool(* nfd::rib::Rib::RouteComparePredicate) (const Route &, const Route &)

Definition at line 66 of file rib.hpp.

Definition at line 67 of file rib.hpp.

using nfd::rib::Rib::UpdateFailureCallback = std::function<void(uint32_t code, const std::string& error)>

Definition at line 117 of file rib.hpp.

using nfd::rib::Rib::UpdateSuccessCallback = std::function<void()>

Definition at line 116 of file rib.hpp.

Constructor & Destructor Documentation

nfd::rib::Rib::Rib ( )

Definition at line 48 of file rib.cpp.

Member Function Documentation

Rib::const_iterator nfd::rib::Rib::begin ( ) const
inline

Definition at line 278 of file rib.hpp.

void nfd::rib::Rib::beginApplyUpdate ( const RibUpdate update,
const UpdateSuccessCallback onSuccess,
const UpdateFailureCallback onFailure 
)

passes the provided RibUpdateBatch to FibUpdater to calculate and send FibUpdates.

If the FIB is updated successfully, onFibUpdateSuccess() will be called, and the RIB will be updated

If the FIB update fails, onFibUpdateFailure() will be called, and the RIB will not be updated.

Definition at line 350 of file rib.cpp.

void nfd::rib::Rib::beginRemoveFace ( uint64_t  faceId)

starts the FIB update process when a face has been destroyed

Definition at line 362 of file rib.cpp.

bool nfd::rib::Rib::empty ( ) const
inline

Definition at line 296 of file rib.hpp.

Rib::const_iterator nfd::rib::Rib::end ( ) const
inline

Definition at line 284 of file rib.hpp.

Rib::const_iterator nfd::rib::Rib::find ( const Name &  prefix) const

Definition at line 61 of file rib.cpp.

Route * nfd::rib::Rib::find ( const Name &  prefix,
const Route route 
) const

Definition at line 67 of file rib.cpp.

std::list< shared_ptr< RibEntry > > nfd::rib::Rib::findDescendants ( const Name &  prefix) const

finds namespaces under the passed prefix

Returns
{ a list of entries which are under the passed prefix }

Definition at line 227 of file rib.cpp.

std::list< shared_ptr< RibEntry > > nfd::rib::Rib::findDescendantsForNonInsertedName ( const Name &  prefix) const

finds namespaces under the passed prefix

Note
Unlike findDescendants, needs to find where prefix would fit in tree before collecting list of descendant prefixes
Returns
{ a list of entries which would be under the passed prefix if the prefix existed in the RIB }

Definition at line 248 of file rib.cpp.

Route * nfd::rib::Rib::findLongestPrefix ( const Name &  prefix,
const Route route 
) const

Definition at line 84 of file rib.cpp.

shared_ptr< RibEntry > nfd::rib::Rib::findParent ( const Name &  prefix) const

Definition at line 214 of file rib.cpp.

void nfd::rib::Rib::insert ( const Name &  prefix,
const Route route 
)

Definition at line 98 of file rib.cpp.

void nfd::rib::Rib::onFibUpdateFailure ( const Rib::UpdateFailureCallback onFailure,
uint32_t  code,
const std::string &  error 
)

Definition at line 459 of file rib.cpp.

void nfd::rib::Rib::onFibUpdateSuccess ( const RibUpdateBatch batch,
const RibUpdateList inheritedRoutes,
const Rib::UpdateSuccessCallback onSuccess 
)

Definition at line 429 of file rib.cpp.

void nfd::rib::Rib::onRouteExpiration ( const Name &  prefix,
const Route route 
)

Definition at line 201 of file rib.cpp.

void nfd::rib::Rib::setFibUpdater ( FibUpdater updater)

Definition at line 55 of file rib.cpp.

size_t nfd::rib::Rib::size ( ) const
inline

Definition at line 290 of file rib.hpp.

Friends And Related Function Documentation

friend class FibUpdater
friend

Definition at line 259 of file rib.hpp.

Member Data Documentation

ndn::util::signal::Signal<Rib, RibRouteRef> nfd::rib::Rib::afterAddRoute

signals after a Route is added

Definition at line 246 of file rib.hpp.

ndn::util::signal::Signal<Rib, Name> nfd::rib::Rib::afterEraseEntry

signals after a RIB entry is erased

A RIB entry is erased when the last route associated with a certain namespace is removed.

Definition at line 242 of file rib.hpp.

ndn::util::signal::Signal<Rib, Name> nfd::rib::Rib::afterInsertEntry

signals after a RIB entry is inserted

A RIB entry is inserted when the first route associated with a certain namespace is added.

Definition at line 234 of file rib.hpp.

ndn::util::signal::Signal<Rib, RibRouteRef> nfd::rib::Rib::beforeRemoveRoute

signals before a route is removed

Definition at line 250 of file rib.hpp.