Public Member Functions | List of all members
ndn::Interest Class Reference

An Interest holds a Name and other fields for an interest. More...

#include <interest.hpp>

Public Member Functions

 Interest (const Name &name, Milliseconds interestLifetimeMilliseconds)
 Create a new Interest with the given name and interest lifetime and "none" for other values. More...
 
 Interest (const Name &name)
 Create a new Interest with the given name and "none" for other values. More...
 
 Interest (const Interest &interest)
 
 Interest ()
 Create a new Interest with an empty name and "none" for all values.
 
Interestoperator= (const Interest &interest)
 
SignedBlob wireEncode (WireFormat &wireFormat=*WireFormat::getDefaultWireFormat()) const
 Encode this Interest for a particular wire format. More...
 
void wireDecode (const Blob &input, WireFormat &wireFormat=*WireFormat::getDefaultWireFormat())
 Decode the input using a particular wire format and update this Interest. More...
 
void wireDecode (const uint8_t *input, size_t inputLength, WireFormat &wireFormat=*WireFormat::getDefaultWireFormat())
 Decode the input using a particular wire format and update this Interest. More...
 
void wireDecode (const std::vector< uint8_t > &input, WireFormat &wireFormat=*WireFormat::getDefaultWireFormat())
 Decode the input using a particular wire format and update this Interest. More...
 
std::string toUri () const
 Encode the name according to the "NDN URI Scheme". More...
 
void get (InterestLite &interestLite, WireFormat &wireFormat) const
 Set interestLite to point to the values and name components in this interest, without copying any memory. More...
 
void set (const InterestLite &interestLite, WireFormat &wireFormat)
 Clear this interest, and set the values by copying from interestLite. More...
 
NamegetName ()
 
const NamegetName () const
 
int getMinSuffixComponents () const
 
int getMaxSuffixComponents () const
 
const KeyLocatorgetKeyLocator () const
 
KeyLocatorgetKeyLocator ()
 
ExcludegetExclude ()
 
const ExcludegetExclude () const
 
int getChildSelector () const
 
bool getMustBeFresh () const
 Return true if the content must be fresh. More...
 
Milliseconds getInterestLifetimeMilliseconds () const
 
const BlobgetNonce () const
 Return the nonce value from the incoming interest. More...
 
bool hasLink () const
 Check if this interest has a link object (or a link wire encoding which can be decoded to make the link object). More...
 
LinkgetLink ()
 Get the link object. More...
 
const LinkgetLink () const
 
Blob getLinkWireEncoding (WireFormat &wireFormat=*WireFormat::getDefaultWireFormat()) const
 Get the wire encoding of the link object. More...
 
int getSelectedDelegationIndex () const
 Get the selected delegation index. More...
 
uint64_t getIncomingFaceId () const
 Get the incoming face ID according to the incoming packet header. More...
 
InterestsetName (const Name &name)
 Set the interest name. More...
 
InterestsetMinSuffixComponents (int minSuffixComponents)
 Set the min suffix components count. More...
 
InterestsetMaxSuffixComponents (int maxSuffixComponents)
 Set the max suffix components count. More...
 
InterestsetChildSelector (int childSelector)
 Set the child selector. More...
 
InterestsetMustBeFresh (bool mustBeFresh)
 Set the MustBeFresh flag. More...
 
InterestsetInterestLifetimeMilliseconds (Milliseconds interestLifetimeMilliseconds)
 Set the interest lifetime. More...
 
Interest &DEPRECATED_IN_NDN_CPP setNonce (const Blob &nonce)
 
InterestsetKeyLocator (const KeyLocator &keyLocator)
 Set this interest to use a copy of the given KeyLocator object. More...
 
InterestsetExclude (const Exclude &exclude)
 Set this interest to use a copy of the given Exclude object. More...
 
InterestsetLinkWireEncoding (Blob encoding, WireFormat &wireFormat=*WireFormat::getDefaultWireFormat())
 Set the link wire encoding bytes, without decoding them. More...
 
InterestunsetLink ()
 Clear the link wire encoding and link object so that getLink() returns null. More...
 
InterestsetSelectedDelegationIndex (int selectedDelegationIndex)
 Set the selected delegation index. More...
 
InterestsetLpPacket (const ptr_lib::shared_ptr< LpPacket > &lpPacket)
 An internal library method to set the LpPacket for an incoming packet. More...
 
void refreshNonce ()
 Update the bytes of the nonce with new random values. More...
 
bool matchesName (const Name &name) const
 Check if this Interest's name matches the given name (using Name::match) and the given name also conforms to the interest selectors. More...
 
const SignedBlobgetDefaultWireEncoding () const
 Return a reference to the defaultWireEncoding, which was encoded with getDefaultWireEncodingFormat(). More...
 
WireFormatgetDefaultWireEncodingFormat () const
 Get the WireFormat which is used by getDefaultWireEncoding(). More...
 
uint64_t getChangeCount () const
 Get the change count, which is incremented each time this object (or a child object) is changed. More...
 

Detailed Description

An Interest holds a Name and other fields for an interest.

Constructor & Destructor Documentation

ndn::Interest::Interest ( const Name name,
Milliseconds  interestLifetimeMilliseconds 
)
inline

Create a new Interest with the given name and interest lifetime and "none" for other values.

Parameters
nameThe name for the interest.
interestLifetimeMillisecondsThe interest lifetime in milliseconds, or -1 for none.
ndn::Interest::Interest ( const Name name)
inline

Create a new Interest with the given name and "none" for other values.

Parameters
nameThe name for the interest.

Member Function Documentation

void ndn::Interest::get ( InterestLite interestLite,
WireFormat wireFormat 
) const

Set interestLite to point to the values and name components in this interest, without copying any memory.

WARNING: The resulting pointers in interestLite are invalid after a further use of this object which could reallocate memory.

Parameters
interestLiteA InterestLite where the name components array is already allocated.
wireFormatThe desired wire format for encoding the link object (if necessary).
uint64_t ndn::Interest::getChangeCount ( ) const
inline

Get the change count, which is incremented each time this object (or a child object) is changed.

Returns
The change count.
const SignedBlob& ndn::Interest::getDefaultWireEncoding ( ) const
inline

Return a reference to the defaultWireEncoding, which was encoded with getDefaultWireEncodingFormat().

The SignedBlob may have a null pointer.

WireFormat* ndn::Interest::getDefaultWireEncodingFormat ( ) const
inline

Get the WireFormat which is used by getDefaultWireEncoding().

Returns
The WireFormat, which is only meaningful if the getDefaultWireEncoding() does not have a null pointer.
uint64_t ndn::Interest::getIncomingFaceId ( ) const

Get the incoming face ID according to the incoming packet header.

Returns
The incoming face ID. If not specified, return (uint64_t)-1.
Link * ndn::Interest::getLink ( )

Get the link object.

If necessary, decode it from the link wire encoding.

Returns
The link object, or 0 if not specified.
Exceptions
runtime_errorFor error decoding the link wire encoding (if necessary).
Blob ndn::Interest::getLinkWireEncoding ( WireFormat wireFormat = *WireFormat::getDefaultWireFormat()) const

Get the wire encoding of the link object.

If there is already a wire encoding then return it. Otherwise encode from the link object (if available).

Parameters
wireFormat(optional) The desired wire format for the encoding. If omitted, use WireFormat::getDefaultWireFormat().
Returns
The wire encoding, or an isNull Blob if the link is not specified.
Exceptions
runtime_errorfor error encoding the link object.
bool ndn::Interest::getMustBeFresh ( ) const
inline

Return true if the content must be fresh.

The default is true.

Returns
true if must be fresh, otherwise false.
const Blob& ndn::Interest::getNonce ( ) const
inline

Return the nonce value from the incoming interest.

If you change any of the fields in this Interest object, then the nonce value is cleared.

Returns
int ndn::Interest::getSelectedDelegationIndex ( ) const
inline

Get the selected delegation index.

Returns
The selected delegation index. If not specified, return -1.
bool ndn::Interest::hasLink ( ) const
inline

Check if this interest has a link object (or a link wire encoding which can be decoded to make the link object).

Returns
True if this interest has a link object, false if not.
bool ndn::Interest::matchesName ( const Name name) const

Check if this Interest's name matches the given name (using Name::match) and the given name also conforms to the interest selectors.

Parameters
nameThe name to check.
Returns
True if the name and interest selectors match, otherwise false.
void ndn::Interest::refreshNonce ( )

Update the bytes of the nonce with new random values.

This ensures that the new nonce value is different than the current one. If the current nonce is not specified, this does nothing.

void ndn::Interest::set ( const InterestLite interestLite,
WireFormat wireFormat 
)

Clear this interest, and set the values by copying from interestLite.

Parameters
interestLiteAn InterestLite object.
wireFormatThe wire format of the encoding, to be used later if necessary to decode the link wire encoding.
Interest& ndn::Interest::setChildSelector ( int  childSelector)
inline

Set the child selector.

Parameters
childSelectorThe child selector. If not specified, set to -1.
Returns
This Interest so that you can chain calls to update values.
Interest& ndn::Interest::setExclude ( const Exclude exclude)
inline

Set this interest to use a copy of the given Exclude object.

Note
You can also call getExclude and change the exclude entries directly.
Parameters
excludeThe Exclude object. This makes a copy of the object. If no exclude is specified, set to a new default Exclude(), or to an Exclude with size() 0.
Returns
This Interest so that you can chain calls to update values.
Interest& ndn::Interest::setInterestLifetimeMilliseconds ( Milliseconds  interestLifetimeMilliseconds)
inline

Set the interest lifetime.

Parameters
interestLifetimeMillisecondsThe interest lifetime in milliseconds. If not specified, set to -1.
Returns
This Interest so that you can chain calls to update values.
Interest& ndn::Interest::setKeyLocator ( const KeyLocator keyLocator)
inline

Set this interest to use a copy of the given KeyLocator object.

Note
You can also call getKeyLocator and change the key locator directly.
Parameters
keyLocatorThe KeyLocator object. This makes a copy of the object. If no key locator is specified, set to a new default KeyLocator(), or to a KeyLocator with an unspecified type.
Returns
This Interest so that you can chain calls to update values.
Interest& ndn::Interest::setLinkWireEncoding ( Blob  encoding,
WireFormat wireFormat = *WireFormat::getDefaultWireFormat() 
)
inline

Set the link wire encoding bytes, without decoding them.

If there is a link object, set it to 0. If you later call getLink(), it will decode the wireEncoding to create the link object.

Parameters
encodingThe buffer with the bytes of the link wire encoding. If no link is specified, set to an empty Blob() or call unsetLink().
wireFormat(optional) The wire format of the encoding, to be used later if necessary to decode. If omitted, use WireFormat::getDefaultWireFormat().
Returns
This Interest so that you can chain calls to update values.
Interest& ndn::Interest::setLpPacket ( const ptr_lib::shared_ptr< LpPacket > &  lpPacket)
inline

An internal library method to set the LpPacket for an incoming packet.

The application should not call this.

Parameters
lpPacketThe LpPacket. This does not make a copy.
Returns
This Interest so that you can chain calls to update values.
Note
This is an experimental feature. This API may change in the future.
Interest& ndn::Interest::setMaxSuffixComponents ( int  maxSuffixComponents)
inline

Set the max suffix components count.

Parameters
maxSuffixComponentsThe max suffix components count. If not specified, set to -1.
Returns
This Interest so that you can chain calls to update values.
Interest& ndn::Interest::setMinSuffixComponents ( int  minSuffixComponents)
inline

Set the min suffix components count.

Parameters
minSuffixComponentsThe min suffix components count. If not specified, set to -1.
Returns
This Interest so that you can chain calls to update values.
Interest& ndn::Interest::setMustBeFresh ( bool  mustBeFresh)
inline

Set the MustBeFresh flag.

Parameters
mustBeFreshTrue if the content must be fresh, otherwise false. If you do not set this flag, the default value is true.
Returns
This Interest so that you can chain calls to update values.
Interest& ndn::Interest::setName ( const Name name)
inline

Set the interest name.

Note
You can also call getName and change the name values directly.
Parameters
nameThe interest name. This makes a copy of the name.
Returns
This Interest so that you can chain calls to update values.
Interest& DEPRECATED_IN_NDN_CPP ndn::Interest::setNonce ( const Blob nonce)
inline
Deprecated:
You should let the wire encoder generate a random nonce internally before sending the interest.
Interest& ndn::Interest::setSelectedDelegationIndex ( int  selectedDelegationIndex)
inline

Set the selected delegation index.

Parameters
selectedDelegationIndexThe selected delegation index. If not specified, set to -1.
Returns
This Interest so that you can chain calls to update values.
string ndn::Interest::toUri ( ) const

Encode the name according to the "NDN URI Scheme".

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

Returns
The URI string.
Note
This is an experimental feature. See the API docs for more detail at http://named-data.net/doc/ndn-ccl-api/interest.html#interest-touri-method .
Interest& ndn::Interest::unsetLink ( )
inline

Clear the link wire encoding and link object so that getLink() returns null.

Returns
This Interest so that you can chain calls to update values.
void ndn::Interest::wireDecode ( const Blob input,
WireFormat wireFormat = *WireFormat::getDefaultWireFormat() 
)

Decode the input using a particular wire format and update this Interest.

If wireFormat is the default wire format, also set the defaultWireEncoding to another pointer to the input Blob.

Parameters
inputThe input byte array to be decoded as an immutable Blob.
wireFormat(optional) A WireFormat object used to decode the input. If omitted, use WireFormat::getDefaultWireFormat().
void ndn::Interest::wireDecode ( const uint8_t *  input,
size_t  inputLength,
WireFormat wireFormat = *WireFormat::getDefaultWireFormat() 
)

Decode the input using a particular wire format and update this Interest.

If wireFormat is the default wire format, also set the defaultWireEncoding field to a copy of the input. (To not copy the input, see wireDecode(Blob).)

Parameters
inputThe input byte array to be decoded.
inputLengthThe length of input.
wireFormat(optional) A WireFormat object used to decode the input. If omitted, use WireFormat::getDefaultWireFormat().
void ndn::Interest::wireDecode ( const std::vector< uint8_t > &  input,
WireFormat wireFormat = *WireFormat::getDefaultWireFormat() 
)
inline

Decode the input using a particular wire format and update this Interest.

If wireFormat is the default wire format, also set the defaultWireEncoding field to a copy of the input. (To not copy the input, see wireDecode(Blob).)

Parameters
inputThe input byte array to be decoded.
wireFormat(optional) A WireFormat object used to decode the input. If omitted, use WireFormat::getDefaultWireFormat().
SignedBlob ndn::Interest::wireEncode ( WireFormat wireFormat = *WireFormat::getDefaultWireFormat()) const

Encode this Interest for a particular wire format.

If wireFormat is the default wire format, also set the defaultWireEncoding field to the encoded result. Even though this is const, if wireFormat is the default wire format we update the defaultWireEncoding.

Parameters
wireFormat(optional) A WireFormat object used to encode this Interest. If omitted, use WireFormat::getDefaultWireFormat().
Returns
The encoded byte array.

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