nfd::pit::Entry Class Reference

Represents an entry in the Interest table (PIT). More...

#include <daemon/table/pit-entry.hpp>

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

Public Member Functions

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

Public Attributes

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

Detailed Description

Represents an entry in the Interest table (PIT).

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.

See also
Pit

Definition at line 61 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

◆ 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
Todo:
#3162 match ForwardingHint field

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

◆ clearInRecords()

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

Delete all in-records.

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

◆ clearStrategyInfo()

void nfd::StrategyInfoHost::clearStrategyInfo ( )
inlineinherited

Clear all StrategyInfo items.

Definition at line 92 of file strategy-info-host.hpp.

◆ 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.

◆ 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.

◆ eraseStrategyInfo()

template<typename T >
size_t nfd::StrategyInfoHost::eraseStrategyInfo ( )
inlineinherited

Erase a StrategyInfo item.

Template Parameters
Ttype of StrategyInfo, must be a subclass of fw::StrategyInfo
Returns
number of items erased

Definition at line 82 of file strategy-info-host.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.

◆ getInRecords()

const InRecordCollection& nfd::pit::Entry::getInRecords ( ) const
inline
Returns
collection of in-records

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

◆ 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 73 of file pit-entry.hpp.

◆ getName()

const Name& nfd::pit::Entry::getName ( ) const
inline
Returns
Interest Name

Definition at line 81 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.

◆ getOutRecords()

const OutRecordCollection& nfd::pit::Entry::getOutRecords ( ) const
inline
Returns
collection of in-records

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

◆ getStrategyInfo()

template<typename T >
T* nfd::StrategyInfoHost::getStrategyInfo ( ) const
inlineinherited

Get a StrategyInfo item.

Template Parameters
Ttype of StrategyInfo, must be a subclass of fw::StrategyInfo
Returns
an existing StrategyInfo item of type T, or nullptr if it does not exist

Definition at line 46 of file strategy-info-host.hpp.

◆ 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 108 of file pit-entry.hpp.

◆ 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 175 of file pit-entry.hpp.

◆ in_begin() [1/2]

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

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

◆ in_begin() [2/2]

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

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

◆ in_end() [1/2]

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

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

◆ in_end() [2/2]

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

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

◆ 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.

◆ 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.

◆ insertStrategyInfo()

template<typename T , typename ... A>
std::pair<T*, bool> nfd::StrategyInfoHost::insertStrategyInfo ( A &&...  args)
inlineinherited

Insert a StrategyInfo item.

Template Parameters
Ttype of StrategyInfo, must be a subclass of fw::StrategyInfo
Returns
a new or existing StrategyInfo item of type T, and true for new item, false for existing item

Definition at line 64 of file strategy-info-host.hpp.

◆ out_begin() [1/2]

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

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

◆ out_begin() [2/2]

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

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

◆ out_end() [1/2]

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

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

◆ out_end() [2/2]

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

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

Member Data Documentation

◆ 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 235 of file pit-entry.hpp.

◆ expiryTimer

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

Expiry timer.

This timer is used in forwarding pipelines to delete the entry

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

◆ isSatisfied

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

Indicates whether this PIT entry is satisfied.

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