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 Interest & getInterest () const
 
const Name & getName () 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...
 
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

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

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

Member Function Documentation

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 Link field

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

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

delete all in-records

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

void nfd::StrategyInfoHost::clearStrategyInfo ( )
inherited

clear all StrategyInfo items

Definition at line 31 of file strategy-info-host.cpp.

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.

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.

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.

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.

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

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

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.

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

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

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.

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

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

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 44 of file strategy-info-host.hpp.

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.

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.

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

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

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

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

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

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

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

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

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.

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.

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 63 of file strategy-info-host.hpp.

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

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

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

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

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

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

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

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

Friends And Related Function Documentation

friend class name_tree::Entry
friend

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

Member Data Documentation

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.

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.