ndn::MetaInfo Class Reference

A MetaInfo holds the meta info which is signed inside the data packet. More...

#include <ndn-cxx/meta-info.hpp>

Classes

class  Error
 

Public Member Functions

 MetaInfo ()
 
 MetaInfo (const Block &block)
 Create from wire encoding. More...
 
MetaInfoaddAppMetaInfo (const Block &block)
 Add an app-defined MetaInfo item. More...
 
const BlockfindAppMetaInfo (uint32_t tlvType) const
 Find a first app-defined MetaInfo item of type tlvType. More...
 
const std::list< Block > & getAppMetaInfo () const
 Get all app-defined MetaInfo items. More...
 
const optional< name::Component > & getFinalBlock () const
 return FinalBlockId More...
 
time::milliseconds getFreshnessPeriod () const
 return FreshnessPeriod More...
 
uint32_t getType () const
 return ContentType More...
 
bool removeAppMetaInfo (uint32_t tlvType)
 Remove a first app-defined MetaInfo item with type tlvType. More...
 
MetaInfosetAppMetaInfo (const std::list< Block > &info)
 Set app-defined MetaInfo items. More...
 
MetaInfosetFinalBlock (optional< name::Component > finalBlockId)
 set FinalBlockId More...
 
MetaInfosetFreshnessPeriod (time::milliseconds freshnessPeriod)
 set FreshnessPeriod More...
 
MetaInfosetType (uint32_t type)
 set ContentType More...
 
void wireDecode (const Block &wire)
 
template<encoding::Tag TAG>
size_t wireEncode (EncodingImpl< TAG > &encoder) const
 
const BlockwireEncode () const
 

Detailed Description

A MetaInfo holds the meta info which is signed inside the data packet.

The class allows experimentation with application-defined meta information blocks, which slightly violates NDN-TLV specification. When using the application-defined meta information blocks be aware that this may result in packet drop (NFD and previous versions of ndn-cxx will gracefully accept such packet).

The following definition of MetaInfo block is assumed in this implementation (compared to the NDN-TLV spec, definition extended to allow optional AppMetaInfo TLV blocks):

MetaInfo ::= META-INFO-TYPE TLV-LENGTH
               ContentType?
               FreshnessPeriod?
               FinalBlockId?
               AppMetaInfo*

AppMetaInfo ::= any TLV block with type in the restricted application range [128, 252]

Note that AppMetaInfo blocks are application-defined and must have TLV type from the restricted application range [128, 252].

Definition at line 58 of file meta-info.hpp.

Constructor & Destructor Documentation

◆ MetaInfo() [1/2]

ndn::MetaInfo::MetaInfo ( )

Definition at line 34 of file meta-info.cpp.

◆ MetaInfo() [2/2]

ndn::MetaInfo::MetaInfo ( const Block block)
explicit

Create from wire encoding.

Definition at line 40 of file meta-info.cpp.

Member Function Documentation

◆ addAppMetaInfo()

MetaInfo & ndn::MetaInfo::addAppMetaInfo ( const Block block)

Add an app-defined MetaInfo item.

Exceptions
Errorif block has type not in the application range (http://named-data.net/doc/ndn-tlv/types.html)
Note
Warning: Experimental API, which may change or disappear in the future
If MetaInfo is decoded from wire and setType, setFreshnessPeriod, or setFinalBlock is called before *AppMetaInfo, all app-defined blocks will be lost

Definition at line 92 of file meta-info.cpp.

◆ findAppMetaInfo()

const Block * ndn::MetaInfo::findAppMetaInfo ( uint32_t  tlvType) const

Find a first app-defined MetaInfo item of type tlvType.

Returns
NULL if an item is not found, otherwise const pointer to the item
Exceptions
Errorif tlvType is not in the application range (http://named-data.net/doc/ndn-tlv/types.html)
Note
Warning: Experimental API, which may change or disappear in the future
If MetaInfo is decoded from wire and setType, setFreshnessPeriod, or setFinalBlock is called before *AppMetaInfo, all app-defined blocks will be lost

Definition at line 116 of file meta-info.cpp.

◆ getAppMetaInfo()

const std::list< Block > & ndn::MetaInfo::getAppMetaInfo ( ) const

Get all app-defined MetaInfo items.

Note
Warning: Experimental API, which may change or disappear in the future
If MetaInfo is decoded from wire and setType, setFreshnessPeriod, or setFinalBlock is called before *AppMetaInfo, all app-defined blocks will be lost

Definition at line 73 of file meta-info.cpp.

◆ getFinalBlock()

const optional<name::Component>& ndn::MetaInfo::getFinalBlock ( ) const
inline

return FinalBlockId

Definition at line 121 of file meta-info.hpp.

◆ getFreshnessPeriod()

time::milliseconds ndn::MetaInfo::getFreshnessPeriod ( ) const
inline

return FreshnessPeriod

If FreshnessPeriod element is omitted, returns DEFAULT_FRESHNESS_PERIOD.

Definition at line 107 of file meta-info.hpp.

◆ getType()

uint32_t ndn::MetaInfo::getType ( ) const
inline

return ContentType

If ContentType element is omitted, returns tlv::ContentType_Blob.

Definition at line 91 of file meta-info.hpp.

◆ removeAppMetaInfo()

bool ndn::MetaInfo::removeAppMetaInfo ( uint32_t  tlvType)

Remove a first app-defined MetaInfo item with type tlvType.

Returns
true if an item was deleted
Note
Warning: Experimental API, which may change or disappear in the future
If MetaInfo is decoded from wire and setType, setFreshnessPeriod, or setFinalBlock is called before *AppMetaInfo, all app-defined blocks will be lost

Definition at line 103 of file meta-info.cpp.

◆ setAppMetaInfo()

MetaInfo & ndn::MetaInfo::setAppMetaInfo ( const std::list< Block > &  info)

Set app-defined MetaInfo items.

This method will replace all existing app-defined MetaInfo items, if they existed.

Exceptions
Errorif some block in info has type not in the application range (http://named-data.net/doc/ndn-tlv/types.html)
Note
Warning: Experimental API, which may change or disappear in the future
If MetaInfo is decoded from wire and setType, setFreshnessPeriod, or setFinalBlock is called before *AppMetaInfo, all app-defined blocks will be lost

Definition at line 79 of file meta-info.cpp.

◆ setFinalBlock()

MetaInfo & ndn::MetaInfo::setFinalBlock ( optional< name::Component finalBlockId)

set FinalBlockId

Definition at line 65 of file meta-info.cpp.

◆ setFreshnessPeriod()

MetaInfo & ndn::MetaInfo::setFreshnessPeriod ( time::milliseconds  freshnessPeriod)

set FreshnessPeriod

Exceptions
std::invalid_argumentspecified FreshnessPeriod is negative

Definition at line 54 of file meta-info.cpp.

◆ setType()

MetaInfo & ndn::MetaInfo::setType ( uint32_t  type)

set ContentType

Parameters
typea number defined in tlv::ContentTypeValue

Definition at line 46 of file meta-info.cpp.

◆ wireDecode()

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

Definition at line 179 of file meta-info.cpp.

◆ wireEncode() [1/2]

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

Definition at line 125 of file meta-info.cpp.

◆ wireEncode() [2/2]

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

Definition at line 163 of file meta-info.cpp.