NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
nfd::fw::BestRouteStrategyBase Class Reference

#include <best-route-strategy.hpp>

Inheritance diagram for nfd::fw::BestRouteStrategyBase:
Collaboration diagram for nfd::fw::BestRouteStrategyBase:

Public Member Functions

void afterReceiveInterest (const Face &inFace, const Interest &interest, const shared_ptr< pit::Entry > &pitEntry) override
 trigger after Interest is received More...
- Public Member Functions inherited from nfd::fw::Strategy
 Strategy (Forwarder &forwarder)
 construct a strategy instance More...
virtual ~Strategy ()
const NamegetInstanceName () const
virtual void beforeSatisfyInterest (const shared_ptr< pit::Entry > &pitEntry, const Face &inFace, const Data &data)
 trigger before PIT entry is satisfied More...
virtual void afterContentStoreHit (const shared_ptr< pit::Entry > &pitEntry, const Face &inFace, const Data &data)
 trigger after a Data is matched in CS More...
virtual void afterReceiveData (const shared_ptr< pit::Entry > &pitEntry, const Face &inFace, const Data &data)
 trigger after Data is received More...
virtual void afterReceiveNack (const Face &inFace, const lp::Nack &nack, const shared_ptr< pit::Entry > &pitEntry)
 trigger after Nack is received More...
virtual void onDroppedInterest (const Face &outFace, const Interest &interest)
 trigger after Interest dropped for exceeding allowed retransmissions More...

Protected Member Functions

 BestRouteStrategyBase (Forwarder &forwarder)
- Protected Member Functions inherited from nfd::fw::Strategy
void sendInterest (const shared_ptr< pit::Entry > &pitEntry, Face &outFace, const Interest &interest)
 send Interest to outFace More...
void sendData (const shared_ptr< pit::Entry > &pitEntry, const Data &data, const Face &outFace)
 send data to outFace More...
void sendDataToAll (const shared_ptr< pit::Entry > &pitEntry, const Face &inFace, const Data &data)
 send data to all matched and qualified faces More...
void rejectPendingInterest (const shared_ptr< pit::Entry > &pitEntry)
 schedule the PIT entry for immediate deletion More...
void sendNack (const shared_ptr< pit::Entry > &pitEntry, const Face &outFace, const lp::NackHeader &header)
 send Nack to outFace More...
void sendNacks (const shared_ptr< pit::Entry > &pitEntry, const lp::NackHeader &header, std::initializer_list< const Face * > exceptFaces=std::initializer_list< const Face * >())
 send Nack to every face that has an in-record, except those in exceptFaces More...
void setExpiryTimer (const shared_ptr< pit::Entry > &pitEntry, time::milliseconds duration)
 Schedule the PIT entry to be erased after duration. More...
const fib::EntrylookupFib (const pit::Entry &pitEntry) const
 performs a FIB lookup, considering Link object if present More...
MeasurementsAccessorgetMeasurements ()
FacegetFace (FaceId id) const
const FaceTablegetFaceTable () const
void setInstanceName (const Name &name)
 set strategy instance name More...

Additional Inherited Members

- Static Public Member Functions inherited from nfd::fw::Strategy
template<typename S >
static void registerType (const Name &strategyName=S::getStrategyName())
 register a strategy type More...
static bool canCreate (const Name &instanceName)
static unique_ptr< Strategycreate (const Name &instanceName, Forwarder &forwarder)
static bool areSameType (const Name &instanceNameA, const Name &instanceNameB)
static std::set< NamelistRegistered ()
static const NamegetStrategyName ()
- Static Protected Member Functions inherited from nfd::fw::Strategy
static ParsedInstanceName parseInstanceName (const Name &input)
 parse a strategy instance name More...
static Name makeInstanceName (const Name &input, const Name &strategyName)
 construct a strategy instance name More...
- Protected Attributes inherited from nfd::fw::Strategy
signal::Signal< FaceTable, Face & > & afterAddFace
signal::Signal< FaceTable, Face & > & beforeRemoveFace

Detailed Description

Definition at line 34 of file best-route-strategy.hpp.

Constructor & Destructor Documentation

◆ BestRouteStrategyBase()

nfd::fw::BestRouteStrategyBase::BestRouteStrategyBase ( Forwarder forwarder)

Definition at line 32 of file best-route-strategy.cpp.

Member Function Documentation

◆ afterReceiveInterest()

void nfd::fw::BestRouteStrategyBase::afterReceiveInterest ( const Face inFace,
const Interest interest,
const shared_ptr< pit::Entry > &  pitEntry 

trigger after Interest is received

The Interest:

  • does not violate Scope
  • is not looped
  • cannot be satisfied by ContentStore
  • is under a namespace managed by this strategy

The PIT entry is set to expire after InterestLifetime has elapsed at each downstream.

The strategy should decide whether and where to forward this Interest.

  • If the strategy decides to forward this Interest, invoke sendInterest for each upstream, either now or shortly after via a scheduler event, but before PIT entry expires. Optionally, the strategy can invoke setExpiryTimer to adjust how long it would wait for a response.
  • If the strategy has already forwarded this Interest previously and decides to continue waiting, do nothing. Optionally, the strategy can invoke setExpiryTimer to adjust how long it would wait for a response.
  • If the strategy concludes that this Interest cannot be satisfied, invoke rejectPendingInterest to erase the PIT entry.
The strategy must not retain shared_ptr<pit::Entry>, otherwise undefined behavior may occur. However, the strategy is allowed to store weak_ptr<pit::Entry>.

Implements nfd::fw::Strategy.

Definition at line 38 of file best-route-strategy.cpp.

References nfd::fw::canForwardToLegacy(), nfd::fib::Entry::getNextHops(), nfd::fw::hasPendingOutRecords(), nfd::fw::Strategy::lookupFib(), nfd::fw::Strategy::rejectPendingInterest(), nfd::fw::Strategy::sendInterest(), and nfd::fw::wouldViolateScope().

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