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... | |
| template<encoding::Tag TAG> | |
| size_t | wireEncode (EncodingImpl< TAG > &encoder) const |
| const Block & | wireEncode () const |
| void | wireDecode (const Block &wire) |
| uint32_t | getType () const |
| return ContentType More... | |
| MetaInfo & | setType (uint32_t type) |
| set ContentType More... | |
| time::milliseconds | getFreshnessPeriod () const |
| return FreshnessPeriod More... | |
| MetaInfo & | setFreshnessPeriod (time::milliseconds freshnessPeriod) |
| set FreshnessPeriod More... | |
| const optional< name::Component > & | getFinalBlock () const |
| return FinalBlockId More... | |
| MetaInfo & | setFinalBlock (optional< name::Component > finalBlockId) |
| set FinalBlockId More... | |
| NDN_CXX_DEPRECATED name::Component | getFinalBlockId () const |
| return FinalBlockId More... | |
| NDN_CXX_DEPRECATED MetaInfo & | setFinalBlockId (const name::Component &finalBlockId) |
| set FinalBlockId More... | |
| const std::list< Block > & | getAppMetaInfo () const |
| Get all app-defined MetaInfo items. More... | |
| MetaInfo & | setAppMetaInfo (const std::list< Block > &info) |
| Set app-defined MetaInfo items. More... | |
| MetaInfo & | addAppMetaInfo (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 Block * | findAppMetaInfo (uint32_t tlvType) const |
Find a first app-defined MetaInfo item of type tlvType. More... | |
| bool | operator== (const MetaInfo &other) const |
| bool | operator!= (const MetaInfo &other) const |
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.
| ndn::MetaInfo::MetaInfo | ( | ) |
Definition at line 35 of file meta-info.cpp.
|
explicit |
| size_t ndn::MetaInfo::wireEncode | ( | EncodingImpl< TAG > & | encoder | ) | const |
Definition at line 142 of file meta-info.cpp.
References ndn::tlv::ContentType, ndn::tlv::ContentType_Blob, ndn::DEFAULT_FRESHNESS_PERIOD, ndn::tlv::FinalBlockId, ndn::tlv::FreshnessPeriod, ndn::tlv::MetaInfo, ndn::encoding::prependNestedBlock(), and ndn::encoding::prependNonNegativeIntegerBlock().
Referenced by operator==(), and ndn::Data::wireEncode().
| const Block & ndn::MetaInfo::wireEncode | ( | ) | const |
Definition at line 180 of file meta-info.cpp.
References ndn::Block::hasWire().
Referenced by operator==().
| void ndn::MetaInfo::wireDecode | ( | const Block & | wire | ) |
Definition at line 196 of file meta-info.cpp.
References ndn::tlv::ContentType, ndn::tlv::ContentType_Blob, ndn::DEFAULT_FRESHNESS_PERIOD, ndn::Block::elements(), ndn::Block::elements_begin(), ndn::Block::elements_end(), ndn::tlv::FinalBlockId, ndn::tlv::FreshnessPeriod, ndn::nullopt, ndn::Block::parse(), and ndn::encoding::readNonNegativeInteger().
Referenced by MetaInfo(), and ndn::Data::wireDecode().
|
inline |
return ContentType
If ContentType element is omitted, returns tlv::ContentType_Blob.
Definition at line 95 of file meta-info.hpp.
Referenced by ndn::Data::getContentType(), and ndn::operator<<().
| MetaInfo & ndn::MetaInfo::setType | ( | uint32_t | type | ) |
set ContentType
| type | a number defined in tlv::ContentTypeValue |
Definition at line 47 of file meta-info.cpp.
References ndn::Block::reset().
Referenced by ndn::Data::setContentType().
|
inline |
return FreshnessPeriod
If FreshnessPeriod element is omitted, returns DEFAULT_FRESHNESS_PERIOD.
Definition at line 111 of file meta-info.hpp.
Referenced by ndn::Data::getFreshnessPeriod(), and ndn::operator<<().
| MetaInfo & ndn::MetaInfo::setFreshnessPeriod | ( | time::milliseconds | freshnessPeriod | ) |
set FreshnessPeriod
| std::invalid_argument | specified FreshnessPeriod is negative |
Definition at line 55 of file meta-info.cpp.
References ndn::Block::reset().
Referenced by ndn::Data::setFreshnessPeriod().
|
inline |
return FinalBlockId
Definition at line 125 of file meta-info.hpp.
Referenced by ndn::Data::getFinalBlock(), getFinalBlockId(), and ndn::operator<<().
| MetaInfo & ndn::MetaInfo::setFinalBlock | ( | optional< name::Component > | finalBlockId | ) |
set FinalBlockId
Definition at line 66 of file meta-info.cpp.
References ndn::Block::reset().
Referenced by ndn::Data::setFinalBlock(), and setFinalBlockId().
|
inline |
return FinalBlockId
getFinalBlock If FinalBlockId element is omitted, returns a default-constructed name::Component. This is indistinguishable from having an empty GenericNameComponent as FinalBlockId.
Definition at line 143 of file meta-info.hpp.
References getFinalBlock().
Referenced by ndn::Data::getFinalBlockId().
| MetaInfo & ndn::MetaInfo::setFinalBlockId | ( | const name::Component & | finalBlockId | ) |
set FinalBlockId
setFinalBlock Passing a default-constructed name::Component removes FinalBlockId element. This API does not support adding an empty GenericNameComponent as FinalBlockId.
Definition at line 74 of file meta-info.cpp.
References ndn::name::Component::empty(), ndn::name::Component::isGeneric(), ndn::nullopt, and setFinalBlock().
Referenced by ndn::Data::setFinalBlockId().
| const std::list< Block > & ndn::MetaInfo::getAppMetaInfo | ( | ) | const |
Get all app-defined MetaInfo items.
Definition at line 83 of file meta-info.cpp.
Referenced by ndn::operator<<().
Set app-defined MetaInfo items.
This method will replace all existing app-defined MetaInfo items, if they existed.
| Error | if some block in info has type not in the application range (http://named-data.net/doc/ndn-tlv/types.html) |
Definition at line 89 of file meta-info.cpp.
References ndn::Block::reset().
Add an app-defined MetaInfo item.
| Error | if block has type not in the application range (http://named-data.net/doc/ndn-tlv/types.html) |
Definition at line 103 of file meta-info.cpp.
References ndn::Block::reset(), and ndn::Block::type().
| bool ndn::MetaInfo::removeAppMetaInfo | ( | uint32_t | tlvType | ) |
Remove a first app-defined MetaInfo item with type tlvType.
Definition at line 115 of file meta-info.cpp.
References ndn::Block::reset(), and tlvType.
| const Block * ndn::MetaInfo::findAppMetaInfo | ( | uint32_t | tlvType | ) | const |
Find a first app-defined MetaInfo item of type tlvType.
| Error | if tlvType is not in the application range (http://named-data.net/doc/ndn-tlv/types.html) |
Definition at line 129 of file meta-info.cpp.
References tlvType.
|
inline |
Definition at line 251 of file meta-info.hpp.
References wireEncode().
|
inline |
Definition at line 257 of file meta-info.hpp.