Class for RDR-style metadata encoding/decoding. More...
#include <metadata-object.hpp>
Classes | |
class | Error |
Public Member Functions | |
MetadataObject () | |
Create an empty metadata object. More... | |
MetadataObject (const Data &data) | |
Construct a metadata object by decoding of the given Data packet. More... | |
NDN_CXX_NODISCARD Data | makeData (Name discoveryInterestName, KeyChain &keyChain, const ndn::security::SigningInfo &si=security::SigningInfo(), optional< uint64_t > version=nullopt, time::milliseconds freshnessPeriod=10_ms) const |
Create a Data packet representing this metadata object. More... | |
const Name & | getVersionedName () const |
Return the versioned name (i.e., the name inside the content) More... | |
MetadataObject & | setVersionedName (const Name &name) |
Set the versioned name. More... | |
Static Public Member Functions | |
static const name::Component & | getKeywordComponent () |
Returns the well-known keyword name component used for metadata objects (32=metadata ) More... | |
static bool | isValidName (const Name &name) |
Check whether name can be a valid metadata name. More... | |
static NDN_CXX_NODISCARD Interest | makeDiscoveryInterest (Name name) |
Generate a discovery interest packet based on name . More... | |
Class for RDR-style metadata encoding/decoding.
Realtime Data Retrieval (RDR) is a protocol for discovering the latest version number of a given data collection. The Interest and Data packets dealing with metadata (called "discovery interest" and "metadata object", respectively) follow a specific format.
There are two names in an RDR metadata object:
32=metadata
, as well as version and segment components.Definition at line 48 of file metadata-object.hpp.
|
default |
Create an empty metadata object.
|
explicit |
Construct a metadata object by decoding of the given Data packet.
tlv::Error | the Data is not a valid metadata packet |
Definition at line 33 of file metadata-object.cpp.
References ndn::tlv::ContentType_Blob, ndn::Block::get(), ndn::Data::getContent(), ndn::Data::getContentType(), ndn::Data::getName(), isValidName(), ndn::tlv::Name, NDN_THROW, ndn::Block::parse(), ndn::to_string(), ndn::Name::toUri(), ndn::Block::value_size(), and ndn::Name::wireDecode().
Data ndn::MetadataObject::makeData | ( | Name | discoveryInterestName, |
KeyChain & | keyChain, | ||
const ndn::security::SigningInfo & | si = security::SigningInfo() , |
||
optional< uint64_t > | version = nullopt , |
||
time::milliseconds | freshnessPeriod = 10_ms |
||
) | const |
Create a Data packet representing this metadata object.
discoveryInterestName | the discovery Interest's name, which must end with a keyword name component 32=metadata |
keyChain | KeyChain to sign the Data |
si | signing parameters |
version | version number of metadata packet; if nullopt, use current Unix timestamp (in milliseconds) as the version number |
freshnessPeriod | freshness period of metadata packet |
tlv::Error | discoveryInterestName is not valid |
Definition at line 53 of file metadata-object.cpp.
References ndn::Name::appendSegment(), ndn::Name::appendVersion(), ndn::Name::empty(), getKeywordComponent(), NDN_THROW, ndn::Data::setContent(), ndn::Data::setFreshnessPeriod(), ndn::Name::toUri(), and ndn::Name::wireEncode().
|
inline |
Return the versioned name (i.e., the name inside the content)
Definition at line 93 of file metadata-object.hpp.
References getKeywordComponent(), isValidName(), makeDiscoveryInterest(), NDN_CXX_NODISCARD, and setVersionedName().
MetadataObject & ndn::MetadataObject::setVersionedName | ( | const Name & | name | ) |
Set the versioned name.
Any metadata packet carries a versioned name in its payload where it shows the name and the latest version of a data stream. For instance, /ndn/test/v=2538020460
is a versioned name that shows the latest version of /ndn/test
.
Definition at line 75 of file metadata-object.cpp.
Referenced by getVersionedName().
|
static |
Returns the well-known keyword name component used for metadata objects (32=metadata
)
Definition at line 82 of file metadata-object.cpp.
References ndn::tlv::KeywordNameComponent.
Referenced by getVersionedName(), isValidName(), makeData(), and makeDiscoveryInterest().
|
static |
Check whether name
can be a valid metadata name.
Definition at line 89 of file metadata-object.cpp.
References getKeywordComponent(), and ndn::Name::size().
Referenced by getVersionedName(), and MetadataObject().
Generate a discovery interest packet based on name
.
name | prefix of data collection |
Definition at line 96 of file metadata-object.cpp.
References ndn::Name::append(), getKeywordComponent(), and ndn::tlv::Interest.
Referenced by getVersionedName().