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 m_unsatisfyTimer
 unsatisfy timer More...
 
scheduler::EventId m_stragglerTimer
 straggler timer 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 57 of file pit-entry.hpp.

Constructor & Destructor Documentation

◆ Entry()

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

Definition at line 32 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 69 of file pit-entry.hpp.

Referenced by nfd::fw::Strategy::lookupFib().

◆ 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::getName(), ndn::Interest::getSelectors(), 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 104 of file pit-entry.hpp.

◆ in_begin() [1/2]

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

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

Referenced by nfd::fw::canForwardToLegacy().

◆ in_begin() [2/2]

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

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

◆ in_end() [1/2]

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

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

Referenced by nfd::fw::canForwardToLegacy().

◆ in_end() [2/2]

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

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

◆ 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 51 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 58 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 74 of file pit-entry.cpp.

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

◆ clearInRecords()

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

delete all in-records

Definition at line 84 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 171 of file pit-entry.hpp.

◆ out_begin() [1/2]

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

◆ out_begin() [2/2]

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

Definition at line 183 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 195 of file pit-entry.hpp.

◆ 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 90 of file pit-entry.cpp.

Referenced by nfd::fw::RetxSuppressionExponential::decidePerUpstream().

◆ 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 97 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 113 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 246 of file pit-entry.hpp.

Member Data Documentation

◆ m_unsatisfyTimer

scheduler::EventId nfd::pit::Entry::m_unsatisfyTimer

unsatisfy timer

This timer is used in forwarding pipelines to delete the entry when it expires without being satisfied. It fires when the last InterestLifetime among in-records expires.

Either this or the straggler timer should be set at all times, except when this entry is being processed in a pipeline.

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

◆ m_stragglerTimer

scheduler::EventId nfd::pit::Entry::m_stragglerTimer

straggler timer

This timer is used in forwarding pipelines to delete the entry when it has been satisfied and is no longer needed for measurement collection purpose.

Either this or the unsatisfy timer should be set at all times, except when this entry is being processed in a pipeline.

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


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