27 static_assert(std::is_base_of<tlv::Error, PrefixAnnouncement::Error>::value,
 
   28               "PrefixAnnouncement::Error must inherit from tlv::Error");
 
   33   : m_data(std::move(data))
 
   35   const Name& dataName = m_data->getName();
 
   37       !dataName[-2].isVersion() || !dataName[-1].isSegment()) {
 
   38     NDN_THROW(
Error(
"Data is not a prefix announcement: wrong name structure"));
 
   43     NDN_THROW(
Error(
"Data is not a prefix announcement: ContentType is " +
 
   47   if (m_data->getContent().value_size() == 0) {
 
   51   const Block& payload = m_data->getContent();
 
   58     m_validity.emplace(*validityElement);
 
   71                            optional<uint64_t> version)
 const 
   74     Name dataName = m_announcedName;
 
   78     m_data.emplace(dataName);
 
   83                                                   m_expiration.count()));
 
   85       content.
push_back(m_validity->wireEncode());
 
   88     m_data->setContent(content);
 
   90     keyChain.sign(*m_data, si);
 
   99   m_announcedName = std::move(name);
 
  106   if (expiration < 0_ms) {
 
  107     NDN_THROW(std::invalid_argument(
"expiration period is negative"));
 
  110   m_expiration = expiration;
 
  118   m_validity = std::move(validity);
 
Represents a TLV element of the NDN packet format.
 
element_const_iterator find(uint32_t type) const
Find the first sub-element of the specified TLV-TYPE.
 
void push_back(const Block &element)
Append a sub-element.
 
void encode()
Encode sub-elements into TLV-VALUE.
 
element_const_iterator elements_end() const
Equivalent to elements().end()
 
const element_container & elements() const
Get container of sub-elements.
 
void parse() const
Parse TLV-VALUE into sub-elements.
 
const Block & get(uint32_t type) const
Return the first sub-element of the specified TLV-TYPE.
 
Represents a Data packet.
 
Represents an absolute name.
 
PartialName getPrefix(ssize_t nComponents) const
Returns a prefix of the name.
 
Name & appendSegment(uint64_t segmentNo)
Append a segment number (sequential) component.
 
Name & appendVersion(const optional< uint64_t > &version=nullopt)
Append a version component.
 
Name & append(const Component &component)
Append a component.
 
size_t size() const
Returns the number of components.
 
A prefix announcement object that represents an application's intent of registering a prefix toward i...
 
const Name & getAnnouncedName() const
Return announced name.
 
optional< security::ValidityPeriod > getValidityPeriod() const
Return absolute validity period.
 
PrefixAnnouncement & setValidityPeriod(optional< security::ValidityPeriod > validity)
Set absolute validity period.
 
time::milliseconds getExpiration() const
Return relative expiration period.
 
PrefixAnnouncement & setExpiration(time::milliseconds expiration)
Set relative expiration period.
 
PrefixAnnouncement()
Construct an empty prefix announcement.
 
PrefixAnnouncement & setAnnouncedName(Name name)
Set announced name.
 
const Data & toData(KeyChain &keyChain, const ndn::security::SigningInfo &si=security::SigningInfo(), optional< uint64_t > version=nullopt) const
Create a Data packet representing the prefix announcement, if it does not exist.
 
static const name::Component & getKeywordComponent()
Returns the well-known keyword name component used for prefix announcements (32=PA)
 
Represents a name component.
 
Signing parameters passed to KeyChain.
 
static time_point now() noexcept
 
uint64_t readNonNegativeInteger(const Block &block)
Read a non-negative integer from a TLV element.
 
Block makeNonNegativeIntegerBlock(uint32_t type, uint64_t value)
Create a TLV block containing a non-negative integer.
 
std::string to_string(const errinfo_stacktrace &x)
 
milliseconds toUnixTimestamp(const system_clock::time_point &point)
Convert system_clock::time_point to UNIX timestamp.
 
boost::chrono::milliseconds milliseconds
 
@ ContentType_PrefixAnn
prefix announcement
 
constexpr bool isCriticalType(uint32_t type)
Determine whether a TLV-TYPE is "critical" for evolvability purpose.
 
bool operator==(const Data &lhs, const Data &rhs)
 
std::ostream & operator<<(std::ostream &os, const Data &data)