ndn::MetadataObject Class Reference

Class for RDR-style metadata encoding/decoding. More...

#include <ndn-cxx/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...
 
const NamegetVersionedName () const
 Return the versioned name (i.e., the name inside the content) More...
 
Data makeData (Name discoveryInterestName, KeyChain &keyChain, const ndn::security::SigningInfo &si=security::SigningInfo(), std::optional< uint64_t > version=std::nullopt, time::milliseconds freshnessPeriod=10_ms) const
 Create a Data packet representing this metadata object. More...
 
MetadataObjectsetVersionedName (const Name &name)
 Set the versioned name. More...
 

Static Public Member Functions

static const name::ComponentgetKeywordComponent ()
 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 Interest makeDiscoveryInterest (Name name)
 Generate a discovery interest packet based on name. More...
 

Detailed Description

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:

  • the versioned name is a prefix of the data collection, and generally contains a version component. It appears in the Content element of the metadata object.
  • the metadata name is the name of the metadata object itself, and includes a keyword name component 32=metadata, as well as version and segment components.
See also
https://redmine.named-data.net/projects/ndn-tlv/wiki/RDR

Definition at line 48 of file metadata-object.hpp.

Constructor & Destructor Documentation

◆ MetadataObject() [1/2]

ndn::MetadataObject::MetadataObject ( )
default

Create an empty metadata object.

◆ MetadataObject() [2/2]

ndn::MetadataObject::MetadataObject ( const Data data)
explicit

Construct a metadata object by decoding of the given Data packet.

Exceptions
tlv::Errorthe Data is not a valid metadata packet

Definition at line 30 of file metadata-object.cpp.

Member Function Documentation

◆ getKeywordComponent()

const name::Component & ndn::MetadataObject::getKeywordComponent ( )
static

Returns the well-known keyword name component used for metadata objects (32=metadata)

Definition at line 79 of file metadata-object.cpp.

◆ getVersionedName()

const Name& ndn::MetadataObject::getVersionedName ( ) const
inline

Return the versioned name (i.e., the name inside the content)

Definition at line 93 of file metadata-object.hpp.

◆ isValidName()

bool ndn::MetadataObject::isValidName ( const Name name)
static

Check whether name can be a valid metadata name.

Definition at line 86 of file metadata-object.cpp.

◆ makeData()

Data ndn::MetadataObject::makeData ( Name  discoveryInterestName,
KeyChain keyChain,
const ndn::security::SigningInfo si = security::SigningInfo(),
std::optional< uint64_t >  version = std::nullopt,
time::milliseconds  freshnessPeriod = 10_ms 
) const

Create a Data packet representing this metadata object.

Parameters
discoveryInterestNamethe discovery Interest's name, which must end with a keyword name component 32=metadata
keyChainKeyChain to sign the Data
sisigning parameters
versionversion number of metadata packet; if nullopt, use current Unix timestamp (in milliseconds) as the version number
freshnessPeriodfreshness period of metadata packet
Exceptions
tlv::ErrordiscoveryInterestName is not valid

Definition at line 50 of file metadata-object.cpp.

◆ makeDiscoveryInterest()

Interest ndn::MetadataObject::makeDiscoveryInterest ( Name  name)
static

Generate a discovery interest packet based on name.

Parameters
nameprefix of data collection

Definition at line 93 of file metadata-object.cpp.

◆ 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 72 of file metadata-object.cpp.