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

An Interest table entry. More...

#include <pit-entry.hpp>

Inheritance diagram for nfd::pit::Entry:
Collaboration diagram for nfd::pit::Entry:

Public Member Functions

 Entry (const Interest &interest)
 
const InterestgetInterest () const
 
const NamegetName () const
 
bool canMatch (const Interest &interest, size_t nEqualNameComps=0) const
 
const InRecordCollectiongetInRecords () const
 
bool hasInRecords () const
 
InRecordCollection::iterator in_begin ()
 
InRecordCollection::const_iterator in_begin () const
 
InRecordCollection::iterator in_end ()
 
InRecordCollection::const_iterator in_end () const
 
InRecordCollection::iterator getInRecord (const Face &face)
 get the in-record for face More...
 
InRecordCollection::iterator insertOrUpdateInRecord (Face &face, const Interest &interest)
 insert or update an in-record More...
 
void deleteInRecord (const Face &face)
 delete the in-record for face if it exists More...
 
void clearInRecords ()
 delete all in-records More...
 
const OutRecordCollectiongetOutRecords () const
 
bool hasOutRecords () const
 
OutRecordCollection::iterator out_begin ()
 
OutRecordCollection::const_iterator out_begin () const
 
OutRecordCollection::iterator out_end ()
 
OutRecordCollection::const_iterator out_end () const
 
OutRecordCollection::iterator getOutRecord (const Face &face)
 get the out-record for face More...
 
OutRecordCollection::iterator insertOrUpdateOutRecord (Face &face, const Interest &interest)
 insert or update an out-record More...
 
void deleteOutRecord (const Face &face)
 delete the out-record for face if it exists More...
 
- Public Member Functions inherited from nfd::StrategyInfoHost
template<typename T >
T * getStrategyInfo () const
 Get a StrategyInfo item. More...
 
template<typename T , typename ... A>
std::pair< T *, bool > insertStrategyInfo (A &&... args)
 Insert a StrategyInfo item. More...
 
template<typename T >
size_t eraseStrategyInfo ()
 Erase a StrategyInfo item. More...
 
void clearStrategyInfo ()
 Clear all StrategyInfo items. More...
 

Public Attributes

scheduler::EventId expiryTimer
 Expiry timer. More...
 
bool isSatisfied = false
 Indicates whether this PIT entry is satisfied. More...
 
time::milliseconds dataFreshnessPeriod = 0_ms
 Data freshness period. More...
 

Friends

class name_tree::Entry
 

Detailed Description

An Interest table entry.

An Interest table entry represents either a pending Interest or a recently satisfied Interest. Each entry contains a collection of in-records, a collection of out-records, and two timers used in forwarding pipelines. In addition, the entry, in-records, and out-records are subclasses of StrategyInfoHost, which allows forwarding strategy to store arbitrary information on them.

Definition at line 58 of file pit-entry.hpp.

Constructor & Destructor Documentation

◆ Entry()

nfd::pit::Entry::Entry ( const Interest interest)
explicit

Definition at line 33 of file pit-entry.cpp.

Member Function Documentation

◆ getInterest()

const Interest& nfd::pit::Entry::getInterest ( ) const
inline
Returns
the representative Interest of the PIT entry
Note
Every Interest in in-records and out-records should have same Name and Selectors as the representative Interest.
Todo:
#3162 require Link field to match the representative Interest

Definition at line 70 of file pit-entry.hpp.

Referenced by nfd::fw::Strategy::lookupFib(), and nfd::Forwarder::onNewNextHop().

◆ getName()

◆ canMatch()

bool nfd::pit::Entry::canMatch ( const Interest interest,
size_t  nEqualNameComps = 0 
) const
Returns
whether interest matches this entry
Parameters
interestthe Interest
nEqualNameCompsnumber of initial name components guaranteed to be equal

Definition at line 39 of file pit-entry.cpp.

References ndn::Interest::getCanBePrefix(), ndn::Interest::getMustBeFresh(), ndn::Interest::getName(), and ndn::Name::npos.

Referenced by insertOrUpdateInRecord(), and insertOrUpdateOutRecord().

◆ getInRecords()

const InRecordCollection& nfd::pit::Entry::getInRecords ( ) const
inline

◆ hasInRecords()

bool nfd::pit::Entry::hasInRecords ( ) const
inline
Return values
trueThere is at least one in-record. This implies some downstream is waiting for Data or Nack.
falseThere is no in-record. This implies the entry is new or has been satisfied or Nacked.

Definition at line 105 of file pit-entry.hpp.

◆ in_begin() [1/2]

InRecordCollection::iterator nfd::pit::Entry::in_begin ( )
inline

Definition at line 111 of file pit-entry.hpp.

◆ in_begin() [2/2]

InRecordCollection::const_iterator nfd::pit::Entry::in_begin ( ) const
inline

Definition at line 117 of file pit-entry.hpp.

◆ in_end() [1/2]

InRecordCollection::iterator nfd::pit::Entry::in_end ( )
inline

Definition at line 123 of file pit-entry.hpp.

◆ in_end() [2/2]

InRecordCollection::const_iterator nfd::pit::Entry::in_end ( ) const
inline

Definition at line 129 of file pit-entry.hpp.

References Face.

◆ getInRecord()

InRecordCollection::iterator nfd::pit::Entry::getInRecord ( const Face face)

get the in-record for face

Returns
an iterator to the in-record, or in_end() if it does not exist

Definition at line 52 of file pit-entry.cpp.

◆ insertOrUpdateInRecord()

InRecordCollection::iterator nfd::pit::Entry::insertOrUpdateInRecord ( Face face,
const Interest interest 
)

insert or update an in-record

Returns
an iterator to the new or updated in-record

Definition at line 59 of file pit-entry.cpp.

References canMatch().

◆ deleteInRecord()

void nfd::pit::Entry::deleteInRecord ( const Face face)

delete the in-record for face if it exists

Definition at line 75 of file pit-entry.cpp.

Referenced by nfd::pit::Pit::deleteInOutRecords().

◆ clearInRecords()

void nfd::pit::Entry::clearInRecords ( )

delete all in-records

Definition at line 85 of file pit-entry.cpp.

◆ getOutRecords()

const OutRecordCollection& nfd::pit::Entry::getOutRecords ( ) const
inline

◆ hasOutRecords()

bool nfd::pit::Entry::hasOutRecords ( ) const
inline
Return values
trueThere is at least one out-record. This implies the Interest has been forwarded to some upstream, and they haven't returned Data, but may have returned Nacks.
falseThere is no out-record. This implies the Interest has not been forwarded.

Definition at line 172 of file pit-entry.hpp.

◆ out_begin() [1/2]

OutRecordCollection::iterator nfd::pit::Entry::out_begin ( )
inline

Definition at line 178 of file pit-entry.hpp.

Referenced by nfd::fw::getLastOutgoing(), and nfd::fw::hasPendingOutRecords().

◆ out_begin() [2/2]

OutRecordCollection::const_iterator nfd::pit::Entry::out_begin ( ) const
inline

Definition at line 184 of file pit-entry.hpp.

◆ out_end() [1/2]

OutRecordCollection::iterator nfd::pit::Entry::out_end ( )
inline

◆ out_end() [2/2]

OutRecordCollection::const_iterator nfd::pit::Entry::out_end ( ) const
inline

Definition at line 196 of file pit-entry.hpp.

References Face.

◆ getOutRecord()

OutRecordCollection::iterator nfd::pit::Entry::getOutRecord ( const Face face)

get the out-record for face

Returns
an iterator to the out-record, or out_end() if it does not exist

Definition at line 91 of file pit-entry.cpp.

Referenced by nfd::fw::RetxSuppressionExponential::decidePerUpstream(), and nfd::Forwarder::onNewNextHop().

◆ insertOrUpdateOutRecord()

OutRecordCollection::iterator nfd::pit::Entry::insertOrUpdateOutRecord ( Face face,
const Interest interest 
)

insert or update an out-record

Returns
an iterator to the new or updated out-record

Definition at line 98 of file pit-entry.cpp.

References canMatch().

◆ deleteOutRecord()

void nfd::pit::Entry::deleteOutRecord ( const Face face)

delete the out-record for face if it exists

Definition at line 114 of file pit-entry.cpp.

Referenced by nfd::pit::Pit::deleteInOutRecords().

Friends And Related Function Documentation

◆ name_tree::Entry

friend class name_tree::Entry
friend

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

Member Data Documentation

◆ expiryTimer

scheduler::EventId nfd::pit::Entry::expiryTimer

Expiry timer.

This timer is used in forwarding pipelines to delete the entry

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

◆ isSatisfied

bool nfd::pit::Entry::isSatisfied = false

Indicates whether this PIT entry is satisfied.

Definition at line 227 of file pit-entry.hpp.

Referenced by nfd::Forwarder::onNewNextHop().

◆ dataFreshnessPeriod

time::milliseconds nfd::pit::Entry::dataFreshnessPeriod = 0_ms

Data freshness period.

Note
This field is meaningful only if isSatisfied is true

Definition at line 232 of file pit-entry.hpp.

Referenced by nfd::Forwarder::onNewNextHop().


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