ndn::MetaInfo Class Reference

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

#include <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 name::ComponentgetFinalBlockId () const
 
const time::milliseconds & getFreshnessPeriod () const
 
uint32_t getType () const
 
bool operator!= (const MetaInfo &other) const
 
bool operator== (const MetaInfo &other) const
 
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...
 
MetaInfosetFinalBlockId (const name::Component &finalBlockId)
 
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

An 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

ndn::MetaInfo::MetaInfo ( )

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

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

Create from wire encoding.

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

Member Function Documentation

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 setFinalBlockId is called before *AppMetaInfo, all app-defined blocks will be lost

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

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 setFinalBlockId is called before *AppMetaInfo, all app-defined blocks will be lost

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

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 setFinalBlockId is called before *AppMetaInfo, all app-defined blocks will be lost

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

const name::Component & ndn::MetaInfo::getFinalBlockId ( ) const
inline

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

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

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

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

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

bool ndn::MetaInfo::operator!= ( const MetaInfo other) const
inline

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

bool ndn::MetaInfo::operator== ( const MetaInfo other) const
inline

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

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 setFinalBlockId is called before *AppMetaInfo, all app-defined blocks will be lost

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

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 setFinalBlockId is called before *AppMetaInfo, all app-defined blocks will be lost

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

MetaInfo & ndn::MetaInfo::setFinalBlockId ( const name::Component finalBlockId)

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

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

set FreshnessPeriod

Exceptions
std::invalid_argumentspecified FreshnessPeriod is < 0

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

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

set ContentType

Parameters
typea code defined in tlv::ContentTypeValue

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

void ndn::MetaInfo::wireDecode ( const Block wire)
Todo:
May or may not throw exception later...

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

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

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

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

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