ndn-cxx: NDN C++ Library 0.9.0-33-g832ea91d
Loading...
Searching...
No Matches
metadata-object.hpp
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2013-2023 Regents of the University of California.
4 *
5 * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6 *
7 * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU Lesser General Public License as published by the Free Software
9 * Foundation, either version 3 of the License, or (at your option) any later version.
10 *
11 * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14 *
15 * You should have received copies of the GNU General Public License and GNU Lesser
16 * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17 * <http://www.gnu.org/licenses/>.
18 *
19 * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20 *
21 * @author Chavoosh Ghasemi <[email protected]>
22 */
23
24#ifndef NDN_CXX_METADATA_OBJECT_HPP
25#define NDN_CXX_METADATA_OBJECT_HPP
26
27#include "ndn-cxx/data.hpp"
28#include "ndn-cxx/interest.hpp"
30
31namespace ndn {
32
49{
50public:
51 class Error : public tlv::Error
52 {
53 public:
55 };
56
61
66 explicit
67 MetadataObject(const Data& data);
68
82 [[nodiscard]] Data
83 makeData(Name discoveryInterestName,
84 KeyChain& keyChain,
86 std::optional<uint64_t> version = std::nullopt,
87 time::milliseconds freshnessPeriod = 10_ms) const;
88
92 const Name&
94 {
95 return m_versionedName;
96 }
97
106 setVersionedName(const Name& name);
107
108public: // static methods
112 static const name::Component&
114
118 static bool
119 isValidName(const Name& name);
120
126 [[nodiscard]] static Interest
128
129private:
130 Name m_versionedName;
131};
132
133} // namespace ndn
134
135#endif // NDN_CXX_METADATA_OBJECT_HPP
Represents a Data packet.
Definition data.hpp:39
Represents an Interest packet.
Definition interest.hpp:50
Class for RDR-style metadata encoding/decoding.
static const name::Component & getKeywordComponent()
Returns the well-known keyword name component used for metadata objects (32=metadata)
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.
const Name & getVersionedName() const
Return the versioned name (i.e., the name inside the content)
MetadataObject()
Create an empty metadata object.
MetadataObject & setVersionedName(const Name &name)
Set the versioned name.
static Interest makeDiscoveryInterest(Name name)
Generate a discovery interest packet based on name.
static bool isValidName(const Name &name)
Check whether name can be a valid metadata name.
Represents an absolute name.
Definition name.hpp:45
Represents a name component.
The main interface for signing key management.
Definition key-chain.hpp:87
Signing parameters passed to KeyChain.
Represents an error in TLV encoding or decoding.
Definition tlv.hpp:54
Error(const char *expectedType, uint32_t actualType)
Definition tlv.cpp:28
::boost::chrono::milliseconds milliseconds
Definition time.hpp:52
Definition data.cpp:25