NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
ndn::MetaInfo Class Reference

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

Detailed Description

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

The class allows experimentation with application-defined meta-information elements. When using these application-defined elements, be aware that it may result in dropped packets (NFD and previous versions of ndn-cxx will gracefully accept such packets).

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

MetaInfo = META-INFO-TYPE TLV-LENGTH
             [ContentType]
             [FreshnessPeriod]
             [FinalBlockId]
             *AppMetaInfo

Note that AppMetaInfo elements are application-defined and must have a TLV-TYPE inside the range reserved for application use, i.e., [128, 252].

See also
https://named-data.net/doc/NDN-packet-spec/0.3/data.html#metainfo

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

Constructor & Destructor Documentation

◆ MetaInfo() [1/2]

ndn::MetaInfo::MetaInfo ( )

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

◆ MetaInfo() [2/2]

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

Create from wire encoding.

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

References wireDecode().

Member Function Documentation

◆ wireEncode() [1/2]

◆ wireEncode() [2/2]

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

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

References ndn::Block::hasWire().

◆ wireDecode()

◆ 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.

References setType().

Referenced by ndn::operator<<(), and ndn::Data::setContentType().

◆ setType()

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

set ContentType

Parameters
typea number defined in tlv::ContentTypeValue

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

References ndn::Block::reset().

Referenced by getType(), ndn::mgmt::Dispatcher::removeTopPrefix(), and ndn::Data::setContentType().

◆ 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.

References setFreshnessPeriod().

Referenced by ndn::operator<<(), and ndn::Data::setFreshnessPeriod().

◆ setFreshnessPeriod()

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

set FreshnessPeriod

Exceptions
std::invalid_argumentspecified FreshnessPeriod is negative

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

References NDN_THROW, and ndn::Block::reset().

Referenced by getFreshnessPeriod(), and ndn::Data::setFreshnessPeriod().

◆ getFinalBlock()

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

◆ setFinalBlock()

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

◆ getAppMetaInfo()

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

Get all app-defined MetaInfo items.

Note
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 74 of file meta-info.cpp.

Referenced by getFinalBlock(), and ndn::operator<<().

◆ 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 (https://named-data.net/doc/NDN-packet-spec/0.3/types.html)
Note
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 80 of file meta-info.cpp.

References info, NDN_THROW, and ndn::Block::reset().

Referenced by getFinalBlock().

◆ addAppMetaInfo()

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

Add an app-defined MetaInfo item.

Exceptions
Errorif block has type not in the application range (https://named-data.net/doc/NDN-packet-spec/0.3/types.html)
Note
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 93 of file meta-info.cpp.

References NDN_THROW, ndn::Block::reset(), and ndn::Block::type().

Referenced by getFinalBlock().

◆ 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
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 104 of file meta-info.cpp.

References ndn::Block::reset(), and tlvType.

Referenced by getFinalBlock().

◆ 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 (https://named-data.net/doc/NDN-packet-spec/0.3/types.html)
Note
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 117 of file meta-info.cpp.

References tlvType.

Referenced by getFinalBlock().


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