26 #ifndef NFD_DAEMON_RIB_RIB_HPP 27 #define NFD_DAEMON_RIB_RIB_HPP 32 #include <ndn-cxx/mgmt/nfd/control-parameters.hpp> 37 using ndn::nfd::ControlParameters;
59 class Rib : noncopyable
63 using RibTable = std::map<Name, shared_ptr<RibEntry>>;
70 find(
const Name& prefix)
const;
73 find(
const Name& prefix,
const Route&
route)
const;
76 findLongestPrefix(
const Name& prefix,
const Route&
route)
const;
103 findParent(
const Name& prefix)
const;
118 beginApplyUpdate(
const RibUpdate& update,
125 beginRemoveFace(uint64_t faceId);
128 beginRemoveFailedFaces(
const std::set<uint64_t>& activeFaceIds);
131 onRouteExpiration(
const Name& prefix,
const Route&
route);
134 insert(
const Name& prefix,
const Route&
route);
145 addUpdateToQueue(
const RibUpdate& update,
152 sendBatchFromQueue();
161 uint32_t code,
const std::string& error);
165 erase(
const Name& prefix,
const Route&
route);
168 using RouteComparePredicate = bool (*)(
const Route&,
const Route&);
169 using RouteSet = std::set<Route, RouteComparePredicate>;
174 std::list<shared_ptr<RibEntry>>
175 findDescendants(
const Name& prefix)
const;
180 std::list<shared_ptr<RibEntry>>
181 findDescendantsForNonInsertedName(
const Name& prefix)
const;
184 eraseEntry(RibTable::iterator it);
203 getAncestorRoutes(
const Name& name)
const;
236 std::multimap<uint64_t, shared_ptr<RibEntry>> m_faceEntries;
240 struct UpdateQueueItem
247 using UpdateQueue = std::list<UpdateQueueItem>;
248 UpdateQueue m_updateBatches;
249 bool m_isUpdateInProgress =
false;
260 #endif // NFD_DAEMON_RIB_RIB_HPP const_iterator end() const
represents the Routing Information Base
signal::Signal< Rib, Name > afterEraseEntry
signals after a RIB entry is erased
computes FibUpdates based on updates to the RIB and sends them to NFD
signal::Signal< Rib, Name > afterInsertEntry
signals after a RIB entry is inserted
std::ostream & operator<<(std::ostream &os, const FibUpdate &update)
RibTable::const_iterator const_iterator
std::function< void(uint32_t code, const std::string &error)> UpdateFailureCallback
const_iterator begin() const
Represents a collection of RibUpdates to be applied to a single FaceId.
signal::Signal< Rib, RibRouteRef > afterAddRoute
signals after a Route is added
std::list< shared_ptr< RibEntry > > RibEntryList
std::list< RibUpdate > RibUpdateList
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
std::map< Name, shared_ptr< RibEntry > > RibTable
represents a route for a name prefix
RouteList::const_iterator const_iterator
RibEntry::const_iterator route
shared_ptr< RibEntry > entry
signal::Signal< Rib, RibRouteRef > beforeRemoveRoute
signals before a route is removed
#define PUBLIC_WITH_TESTS_ELSE_PRIVATE
Represents a RIB entry, which contains one or more Routes with the same prefix.
bool operator<(const ReadvertisedRoute &lhs, const ReadvertisedRoute &rhs)
std::function< void()> UpdateSuccessCallback