nfd::rib::RibEntry Class Reference

Represents a RIB entry, which contains one or more Routes with the same prefix. More...

#include <daemon/rib/rib-entry.hpp>

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

Public Types

typedef RouteList::const_iterator const_iterator
 
typedef RouteList::iterator iterator
 
typedef std::list< RouteRouteList
 

Public Member Functions

 RibEntry ()
 
void addChild (shared_ptr< RibEntry > child)
 
void addInheritedRoute (const Route &route)
 
const_iterator begin () const
 
iterator begin ()
 
const_iterator end () const
 
iterator end ()
 
void eraseRoute (const Route &route)
 erases a Route with the same faceId and origin More...
 
iterator eraseRoute (RouteList::iterator route)
 erases a Route with the passed iterator More...
 
RouteList::const_iterator findInheritedRoute (const Route &route) const
 Finds an inherited route with a matching face ID. More...
 
iterator findRoute (const Route &route)
 
const_iterator findRoute (const Route &route) const
 
const std::list< shared_ptr< RibEntry > > & getChildren () const
 
const RouteListgetInheritedRoutes () const
 Returns the routes this namespace has inherited. More...
 
const Name & getName () const
 
size_t getNRoutes () const
 
shared_ptr< RibEntrygetParent () const
 
ndn::PrefixAnnouncement getPrefixAnnouncement (time::milliseconds minExpiration=15_s, time::milliseconds maxExpiration=1_h) const
 Retrieve a prefix announcement suitable for readvertising this route. More...
 
const RouteListgetRoutes () const
 
const RoutegetRouteWithLowestCostAndChildInheritByFaceId (uint64_t faceId) const
 Returns the route with the lowest cost that has the passed face ID and its child inherit flag set. More...
 
const RoutegetRouteWithLowestCostByFaceId (uint64_t faceId) const
 Returns the route with the lowest cost that has the passed face ID. More...
 
const RoutegetRouteWithSecondLowestCostByFaceId (uint64_t faceId) const
 
bool hasCapture () const
 
bool hasChildInheritOnFaceId (uint64_t faceId) const
 Determines if the entry has an inherited route with the passed face ID and its child inherit flag set. More...
 
bool hasChildren () const
 
bool hasFaceId (const uint64_t faceId) const
 
bool hasInheritedRoute (const Route &route) const
 Determines if the entry has an inherited route with a matching face ID. More...
 
bool hasParent () const
 
bool hasRoute (const Route &route)
 
std::pair< RibEntry::iterator, bool > insertRoute (const Route &route)
 inserts a new route into the entry's route list If another route already exists with the same faceId and origin, the new route is not inserted. More...
 
void removeChild (shared_ptr< RibEntry > child)
 
void removeInheritedRoute (const Route &route)
 
void setName (const Name &prefix)
 

Detailed Description

Represents a RIB entry, which contains one or more Routes with the same prefix.

Definition at line 38 of file rib-entry.hpp.

Member Typedef Documentation

◆ const_iterator

typedef RouteList::const_iterator nfd::rib::RibEntry::const_iterator

Definition at line 43 of file rib-entry.hpp.

◆ iterator

typedef RouteList::iterator nfd::rib::RibEntry::iterator

Definition at line 42 of file rib-entry.hpp.

◆ RouteList

Definition at line 41 of file rib-entry.hpp.

Constructor & Destructor Documentation

◆ RibEntry()

nfd::rib::RibEntry::RibEntry ( )
inline

Definition at line 45 of file rib-entry.hpp.

Member Function Documentation

◆ addChild()

void nfd::rib::RibEntry::addChild ( shared_ptr< RibEntry child)

Definition at line 95 of file rib-entry.cpp.

◆ addInheritedRoute()

void nfd::rib::RibEntry::addInheritedRoute ( const Route route)

Definition at line 129 of file rib-entry.cpp.

◆ begin() [1/2]

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

Definition at line 259 of file rib-entry.hpp.

◆ begin() [2/2]

RibEntry::iterator nfd::rib::RibEntry::begin ( )
inline

Definition at line 271 of file rib-entry.hpp.

◆ end() [1/2]

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

Definition at line 265 of file rib-entry.hpp.

◆ end() [2/2]

RibEntry::iterator nfd::rib::RibEntry::end ( )
inline

Definition at line 277 of file rib-entry.hpp.

◆ eraseRoute() [1/2]

void nfd::rib::RibEntry::eraseRoute ( const Route route)

erases a Route with the same faceId and origin

Definition at line 66 of file rib-entry.cpp.

◆ eraseRoute() [2/2]

RibEntry::RouteList::iterator nfd::rib::RibEntry::eraseRoute ( RouteList::iterator  route)

erases a Route with the passed iterator

Returns
{ an iterator to the element that followed the erased iterator }

Definition at line 111 of file rib-entry.cpp.

◆ findInheritedRoute()

RibEntry::RouteList::const_iterator nfd::rib::RibEntry::findInheritedRoute ( const Route route) const

Finds an inherited route with a matching face ID.

Returns
{ An iterator to the matching route if one is found; otherwise, an iterator to the end of the entry's inherited route list }

Definition at line 141 of file rib-entry.cpp.

◆ findRoute() [1/2]

RibEntry::RouteList::iterator nfd::rib::RibEntry::findRoute ( const Route route)

Definition at line 37 of file rib-entry.cpp.

◆ findRoute() [2/2]

RibEntry::RouteList::const_iterator nfd::rib::RibEntry::findRoute ( const Route route) const

Definition at line 43 of file rib-entry.cpp.

◆ getChildren()

const std::list< shared_ptr< RibEntry > > & nfd::rib::RibEntry::getChildren ( ) const
inline

Definition at line 241 of file rib-entry.hpp.

◆ getInheritedRoutes()

const RibEntry::RouteList & nfd::rib::RibEntry::getInheritedRoutes ( ) const
inline

Returns the routes this namespace has inherited.

The inherited routes returned represent inherited routes this namespace has in the FIB.

Returns
{ routes inherited by this namespace }

Definition at line 253 of file rib-entry.hpp.

◆ getName()

const Name & nfd::rib::RibEntry::getName ( ) const
inline

Definition at line 223 of file rib-entry.hpp.

◆ getNRoutes()

size_t nfd::rib::RibEntry::getNRoutes ( ) const

Definition at line 89 of file rib-entry.cpp.

◆ getParent()

shared_ptr< RibEntry > nfd::rib::RibEntry::getParent ( ) const
inline

Definition at line 235 of file rib-entry.hpp.

◆ getPrefixAnnouncement()

ndn::PrefixAnnouncement nfd::rib::RibEntry::getPrefixAnnouncement ( time::milliseconds  minExpiration = 15_s,
time::milliseconds  maxExpiration = 1_h 
) const

Retrieve a prefix announcement suitable for readvertising this route.

If one or more routes in this RIB entry contains a prefix announcement, this method returns the announcement from the route that expires last.

If this RIB entry does not have a route containing a prefix announcement, this method creates a new announcement. Its expiration period reflects the remaining lifetime of this RIB entry, confined within [minExpiration, maxExpiration] range. The caller is expected to sign this announcement.

Warning
(minExpiration > maxExpiration) triggers undefined behavior.

Definition at line 242 of file rib-entry.cpp.

◆ getRoutes()

const RibEntry::RouteList & nfd::rib::RibEntry::getRoutes ( ) const
inline

Definition at line 247 of file rib-entry.hpp.

◆ getRouteWithLowestCostAndChildInheritByFaceId()

const Route * nfd::rib::RibEntry::getRouteWithLowestCostAndChildInheritByFaceId ( uint64_t  faceId) const

Returns the route with the lowest cost that has the passed face ID and its child inherit flag set.

Returns
{ The route with the lowest cost that has the passed face ID and its child inherit flag set }

Definition at line 218 of file rib-entry.cpp.

◆ getRouteWithLowestCostByFaceId()

const Route * nfd::rib::RibEntry::getRouteWithLowestCostByFaceId ( uint64_t  faceId) const

Returns the route with the lowest cost that has the passed face ID.

Returns
{ The route with the lowest cost that has the passed face ID}

Definition at line 172 of file rib-entry.cpp.

◆ getRouteWithSecondLowestCostByFaceId()

const Route * nfd::rib::RibEntry::getRouteWithSecondLowestCostByFaceId ( uint64_t  faceId) const

Definition at line 194 of file rib-entry.cpp.

◆ hasCapture()

bool nfd::rib::RibEntry::hasCapture ( ) const

Definition at line 154 of file rib-entry.cpp.

◆ hasChildInheritOnFaceId()

bool nfd::rib::RibEntry::hasChildInheritOnFaceId ( uint64_t  faceId) const

Determines if the entry has an inherited route with the passed face ID and its child inherit flag set.

Returns
{ True, if a matching inherited route is found; otherwise, false. }

Definition at line 160 of file rib-entry.cpp.

◆ hasChildren()

bool nfd::rib::RibEntry::hasChildren ( ) const

◆ hasFaceId()

bool nfd::rib::RibEntry::hasFaceId ( const uint64_t  faceId) const

Definition at line 81 of file rib-entry.cpp.

◆ hasInheritedRoute()

bool nfd::rib::RibEntry::hasInheritedRoute ( const Route route) const

Determines if the entry has an inherited route with a matching face ID.

Returns
{ True, if a matching inherited route is found; otherwise, false. }

Definition at line 148 of file rib-entry.cpp.

◆ hasParent()

bool nfd::rib::RibEntry::hasParent ( ) const

◆ hasRoute()

bool nfd::rib::RibEntry::hasRoute ( const Route route)

Definition at line 73 of file rib-entry.cpp.

◆ insertRoute()

std::pair< RibEntry::iterator, bool > nfd::rib::RibEntry::insertRoute ( const Route route)

inserts a new route into the entry's route list If another route already exists with the same faceId and origin, the new route is not inserted.

Returns
a pair, whose first element is the iterator to the newly inserted element if the insert succeeds and to the previously-existing element otherwise, and whose second element is true if the insert succeeds and false otherwise.

Definition at line 49 of file rib-entry.cpp.

◆ removeChild()

void nfd::rib::RibEntry::removeChild ( shared_ptr< RibEntry child)

Definition at line 103 of file rib-entry.cpp.

◆ removeInheritedRoute()

void nfd::rib::RibEntry::removeInheritedRoute ( const Route route)

Definition at line 135 of file rib-entry.cpp.

◆ setName()

void nfd::rib::RibEntry::setName ( const Name &  prefix)
inline

Definition at line 217 of file rib-entry.hpp.