ndn::Interest Class Reference

represents an Interest packet More...

#include <interest.hpp>

+ Inheritance diagram for ndn::Interest:
+ Collaboration diagram for ndn::Interest:

Classes

class  Error
 

Public Member Functions

 Interest (const Name &name=Name(), time::milliseconds interestLifetime=DEFAULT_INTEREST_LIFETIME)
 Create a new Interest with the given name and interest lifetime. More...
 
 Interest (const Block &wire)
 Create from wire encoding. More...
 
int getChildSelector () const
 
uint64_t getCongestionMark () const
 get the value of the CongestionMark tag More...
 
const ExcludegetExclude () const
 
const DelegationListgetForwardingHint () const
 
time::milliseconds getInterestLifetime () const
 
int getMaxSuffixComponents () const
 
int getMinSuffixComponents () const
 
int getMustBeFresh () const
 
const NamegetName () const
 
uint32_t getNonce () const
 Get nonce. More...
 
const KeyLocatorgetPublisherPublicKeyLocator () const
 
const SelectorsgetSelectors () const
 
template<typename T >
shared_ptr< T > getTag () const
 get a tag item More...
 
bool hasNonce () const
 Check if Nonce set. More...
 
bool hasSelectors () const
 
bool hasWire () const
 Check if already has wire. More...
 
bool matchesData (const Data &data) const
 Check if Interest can be satisfied by data. More...
 
bool matchesInterest (const Interest &other) const
 Check if Interest matches other interest. More...
 
bool matchesName (const Name &name) const
 Check if Interest, including selectors, matches the given name. More...
 
template<typename Modifier >
InterestmodifyForwardingHint (const Modifier &modifier)
 modify ForwardingHint in-place More...
 
void refreshNonce ()
 Refresh nonce. More...
 
template<typename T >
void removeTag () const
 remove tag item More...
 
InterestsetChildSelector (int childSelector)
 
void setCongestionMark (uint64_t mark)
 set the CongestionMark tag to the specified value More...
 
InterestsetExclude (const Exclude &exclude)
 
InterestsetForwardingHint (const DelegationList &value)
 
InterestsetInterestLifetime (time::milliseconds interestLifetime)
 Set Interest's lifetime. More...
 
InterestsetMaxSuffixComponents (int maxSuffixComponents)
 
InterestsetMinSuffixComponents (int minSuffixComponents)
 
InterestsetMustBeFresh (bool mustBeFresh)
 
InterestsetName (const Name &name)
 
InterestsetNonce (uint32_t nonce)
 Set nonce. More...
 
InterestsetPublisherPublicKeyLocator (const KeyLocator &keyLocator)
 
InterestsetSelectors (const Selectors &selectors)
 
template<typename T >
void setTag (shared_ptr< T > tag) const
 set a tag item More...
 
std::string toUri () const
 Encode the name according to the NDN URI Scheme. More...
 
void wireDecode (const Block &wire)
 Decode from the wire format. More...
 
template<encoding::Tag TAG>
size_t wireEncode (EncodingImpl< TAG > &encoder) const
 Fast encoding or block size estimation. More...
 
const BlockwireEncode () const
 Encode to a wire format. More...
 

Detailed Description

represents an Interest packet

Definition at line 42 of file interest.hpp.

Constructor & Destructor Documentation

ndn::Interest::Interest ( const Name name = Name(),
time::milliseconds  interestLifetime = DEFAULT_INTEREST_LIFETIME 
)
explicit

Create a new Interest with the given name and interest lifetime.

Exceptions
std::invalid_argumentInterestLifetime is negative
Warning
In certain contexts that use Interest::shared_from_this(), Interest must be created using make_shared. Otherwise, .shared_from_this() will trigger undefined behavior.

Definition at line 38 of file interest.cpp.

ndn::Interest::Interest ( const Block wire)
explicit

Create from wire encoding.

Warning
In certain contexts that use Interest::shared_from_this(), Interest must be created using make_shared. Otherwise, .shared_from_this() will trigger undefined behavior.

Definition at line 47 of file interest.cpp.

Member Function Documentation

int ndn::Interest::getChildSelector ( ) const
inline

Definition at line 304 of file interest.hpp.

uint64_t ndn::PacketBase::getCongestionMark ( ) const
inherited

get the value of the CongestionMark tag

Definition at line 28 of file packet-base.cpp.

const Exclude& ndn::Interest::getExclude ( ) const
inline

Definition at line 290 of file interest.hpp.

const DelegationList& ndn::Interest::getForwardingHint ( ) const
inline

Definition at line 196 of file interest.hpp.

time::milliseconds ndn::Interest::getInterestLifetime ( ) const
inline

Definition at line 183 of file interest.hpp.

int ndn::Interest::getMaxSuffixComponents ( ) const
inline

Definition at line 262 of file interest.hpp.

int ndn::Interest::getMinSuffixComponents ( ) const
inline

Definition at line 248 of file interest.hpp.

int ndn::Interest::getMustBeFresh ( ) const
inline

Definition at line 318 of file interest.hpp.

const Name& ndn::Interest::getName ( ) const
inline

Definition at line 139 of file interest.hpp.

uint32_t ndn::Interest::getNonce ( ) const

Get nonce.

If nonce was not set before this call, it will be automatically assigned to a random value

Definition at line 301 of file interest.cpp.

const KeyLocator& ndn::Interest::getPublisherPublicKeyLocator ( ) const
inline

Definition at line 276 of file interest.hpp.

const Selectors& ndn::Interest::getSelectors ( ) const
inline

Definition at line 234 of file interest.hpp.

template<typename T >
shared_ptr< T > ndn::TagHost::getTag ( ) const
inlineinherited

get a tag item

Template Parameters
Ttype of the tag, which must be a subclass of ndn::Tag
Return values
nullptrif no Tag of type T is stored

Definition at line 67 of file tag-host.hpp.

bool ndn::Interest::hasNonce ( ) const
inline

Check if Nonce set.

Definition at line 155 of file interest.hpp.

bool ndn::Interest::hasSelectors ( ) const
inline
Returns
true if Interest has any selector present

Definition at line 228 of file interest.hpp.

bool ndn::Interest::hasWire ( ) const
inline

Check if already has wire.

Definition at line 93 of file interest.hpp.

bool ndn::Interest::matchesData ( const Data data) const

Check if Interest can be satisfied by data.

This method considers Name, MinSuffixComponents, MaxSuffixComponents, PublisherPublicKeyLocator, and Exclude. This method does not consider ChildSelector and MustBeFresh.

Definition at line 207 of file interest.cpp.

bool ndn::Interest::matchesInterest ( const Interest other) const

Check if Interest matches other interest.

Interest matches other if both have the same name, selectors, and link. Other fields (e.g., Nonce) may be different.

Todo:
Implement distinguishing interests by link. The current implementation checks only name+selectors (Issue #3162).
Todo:
#3162 match ForwardingHint field

Definition at line 291 of file interest.cpp.

bool ndn::Interest::matchesName ( const Name name) const

Check if Interest, including selectors, matches the given name.

Parameters
nameThe name to be matched. If this is a Data name, it shall contain the implicit digest component

Definition at line 180 of file interest.cpp.

template<typename Modifier >
Interest& ndn::Interest::modifyForwardingHint ( const Modifier &  modifier)
inline

modify ForwardingHint in-place

Template Parameters
Modifiera unary function that accepts DelegationList&

This is equivalent to, but more efficient (avoids copying) than:

auto fh = interest.getForwardingHint();
modifier(fh);
interest.setForwardingHint(fh);

Definition at line 216 of file interest.hpp.

void ndn::Interest::refreshNonce ( )

Refresh nonce.

It's guaranteed that new nonce value differs from the existing one.

If nonce is already set, it will be updated to a different random value. If nonce is not set, this method does nothing.

Definition at line 318 of file interest.cpp.

template<typename T >
void ndn::TagHost::removeTag ( ) const
inlineinherited

remove tag item

Note
Tag can be removed even on a const tag host instance

Definition at line 94 of file tag-host.hpp.

Interest& ndn::Interest::setChildSelector ( int  childSelector)
inline

Definition at line 310 of file interest.hpp.

void ndn::PacketBase::setCongestionMark ( uint64_t  mark)
inherited

set the CongestionMark tag to the specified value

Definition at line 41 of file packet-base.cpp.

Interest& ndn::Interest::setExclude ( const Exclude exclude)
inline

Definition at line 296 of file interest.hpp.

Interest & ndn::Interest::setForwardingHint ( const DelegationList value)

Definition at line 343 of file interest.cpp.

Interest & ndn::Interest::setInterestLifetime ( time::milliseconds  interestLifetime)

Set Interest's lifetime.

Exceptions
std::invalid_argumentspecified lifetime is < 0

Definition at line 332 of file interest.cpp.

Interest& ndn::Interest::setMaxSuffixComponents ( int  maxSuffixComponents)
inline

Definition at line 268 of file interest.hpp.

Interest& ndn::Interest::setMinSuffixComponents ( int  minSuffixComponents)
inline

Definition at line 254 of file interest.hpp.

Interest& ndn::Interest::setMustBeFresh ( bool  mustBeFresh)
inline

Definition at line 324 of file interest.hpp.

Interest& ndn::Interest::setName ( const Name name)
inline

Definition at line 145 of file interest.hpp.

Interest & ndn::Interest::setNonce ( uint32_t  nonce)

Set nonce.

Definition at line 310 of file interest.cpp.

Interest& ndn::Interest::setPublisherPublicKeyLocator ( const KeyLocator keyLocator)
inline

Definition at line 282 of file interest.hpp.

Interest& ndn::Interest::setSelectors ( const Selectors selectors)
inline

Definition at line 240 of file interest.hpp.

template<typename T >
void ndn::TagHost::setTag ( shared_ptr< T >  tag) const
inlineinherited

set a tag item

Template Parameters
Ttype of the tag, which must be a subclass of ndn::Tag
Note
Tag can be set even on a const tag host instance

Definition at line 80 of file tag-host.hpp.

std::string ndn::Interest::toUri ( ) const

Encode the name according to the NDN URI Scheme.

If there are interest selectors, this method will append "?" and add the selectors as a query string. For example, "/test/name?ndn.ChildSelector=1"

Definition at line 170 of file interest.cpp.

void ndn::Interest::wireDecode ( const Block wire)

Decode from the wire format.

Definition at line 119 of file interest.cpp.

template<encoding::Tag TAG>
size_t ndn::Interest::wireEncode ( EncodingImpl< TAG > &  encoder) const

Fast encoding or block size estimation.

Definition at line 56 of file interest.cpp.

const Block & ndn::Interest::wireEncode ( ) const

Encode to a wire format.

Definition at line 103 of file interest.cpp.