NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
ndn::encoding Namespace Reference

Namespaces

 detail
 

Classes

class  Encoder
 Helper class to perform TLV encoding. More...
 
class  EncodingImpl
 
class  EncodingImpl< EncoderTag >
 EncodingImpl specialization for actual TLV encoding. More...
 
class  EncodingImpl< EstimatorTag >
 EncodingImpl specialization for TLV size estimation. More...
 
class  Estimator
 Helper class to estimate size of TLV encoding. More...
 

Typedefs

using EncodingBuffer = EncodingImpl< EncoderTag >
 
using EncodingEstimator = EncodingImpl< EstimatorTag >
 

Enumerations

enum  Tag { EncoderTag = true, EstimatorTag = false }
 

Functions

template<Tag TAG>
size_t prependNonNegativeIntegerBlock (EncodingImpl< TAG > &encoder, uint32_t type, uint64_t value)
 Prepend a TLV element containing a non-negative integer. More...
 
template size_t prependNonNegativeIntegerBlock< EstimatorTag > (EncodingImpl< EstimatorTag > &, uint32_t, uint64_t)
 
template size_t prependNonNegativeIntegerBlock< EncoderTag > (EncodingImpl< EncoderTag > &, uint32_t, uint64_t)
 
Block makeNonNegativeIntegerBlock (uint32_t type, uint64_t value)
 Create a TLV block containing a non-negative integer. More...
 
uint64_t readNonNegativeInteger (const Block &block)
 Read a non-negative integer from a TLV element. More...
 
template<Tag TAG>
size_t prependEmptyBlock (EncodingImpl< TAG > &encoder, uint32_t type)
 Prepend an empty TLV element. More...
 
template size_t prependEmptyBlock< EstimatorTag > (EncodingImpl< EstimatorTag > &, uint32_t)
 
template size_t prependEmptyBlock< EncoderTag > (EncodingImpl< EncoderTag > &, uint32_t)
 
Block makeEmptyBlock (uint32_t type)
 Create an empty TLV block. More...
 
template<Tag TAG>
size_t prependStringBlock (EncodingImpl< TAG > &encoder, uint32_t type, const std::string &value)
 Prepend a TLV element containing a string. More...
 
template size_t prependStringBlock< EstimatorTag > (EncodingImpl< EstimatorTag > &, uint32_t, const std::string &)
 
template size_t prependStringBlock< EncoderTag > (EncodingImpl< EncoderTag > &, uint32_t, const std::string &)
 
Block makeStringBlock (uint32_t type, const std::string &value)
 Create a TLV block containing a string. More...
 
std::string readString (const Block &block)
 Read TLV-VALUE of a TLV element as a string. More...
 
template<Tag TAG>
size_t prependDoubleBlock (EncodingImpl< TAG > &encoder, uint32_t type, double value)
 Prepend a TLV element containing an IEEE 754 double-precision floating-point number. More...
 
template size_t prependDoubleBlock< EstimatorTag > (EncodingImpl< EstimatorTag > &, uint32_t, double)
 
template size_t prependDoubleBlock< EncoderTag > (EncodingImpl< EncoderTag > &, uint32_t, double)
 
Block makeDoubleBlock (uint32_t type, double value)
 Create a TLV element containing an IEEE 754 double-precision floating-point number. More...
 
double readDouble (const Block &block)
 Read TLV-VALUE of a TLV element as an IEEE 754 double-precision floating-point number. More...
 
template<Tag TAG>
size_t prependBinaryBlock (EncodingImpl< TAG > &encoder, uint32_t type, span< const uint8_t > value)
 Prepend a TLV element containing a sequence of raw bytes. More...
 
template size_t prependBinaryBlock< EstimatorTag > (EncodingImpl< EstimatorTag > &, uint32_t, span< const uint8_t >)
 
template size_t prependBinaryBlock< EncoderTag > (EncodingImpl< EncoderTag > &, uint32_t, span< const uint8_t >)
 
Block makeBinaryBlock (uint32_t type, span< const uint8_t > value)
 Create a TLV block copying the TLV-VALUE from a byte range. More...
 
template<Tag TAG>
size_t prependBlock (EncodingImpl< TAG > &encoder, const Block &block)
 Prepend a TLV element. More...
 
template size_t prependBlock< EstimatorTag > (EncodingImpl< EstimatorTag > &, const Block &)
 
template size_t prependBlock< EncoderTag > (EncodingImpl< EncoderTag > &, const Block &)
 
template<typename R >
std::enable_if_t< std::is_integral< R >::value, R > readNonNegativeIntegerAs (const Block &block)
 Read a non-negative integer from a TLV element and cast to the specified type. More...
 
template<typename R >
std::enable_if_t< std::is_enum< R >::value, R > readNonNegativeIntegerAs (const Block &block)
 Read a non-negative integer from a TLV element and cast to the specified type. More...
 
Block makeBinaryBlock (uint32_t type, const char *value, size_t length)
 Create a TLV block copying the TLV-VALUE from a raw buffer. More...
 
template<class Iterator >
Block makeBinaryBlock (uint32_t type, Iterator first, Iterator last)
 Create a TLV block copying TLV-VALUE from iterators. More...
 
template<Tag TAG, class U >
size_t prependNestedBlock (EncodingImpl< TAG > &encoder, uint32_t type, const U &value)
 Prepend a TLV element containing a nested TLV element. More...
 
template<class U >
Block makeNestedBlock (uint32_t type, const U &value)
 Create a TLV block containing a nested TLV element. More...
 
template<Tag TAG, class I >
size_t prependNestedBlock (EncodingImpl< TAG > &encoder, uint32_t type, I first, I last)
 Prepend a TLV element containing a sequence of nested TLV elements. More...
 
template<class I >
Block makeNestedBlock (uint32_t type, I first, I last)
 Create a TLV block containing a sequence of nested TLV elements. More...
 

Typedef Documentation

◆ EncodingBuffer

Definition at line 38 of file encoding-buffer-fwd.hpp.

◆ EncodingEstimator

Enumeration Type Documentation

◆ Tag

Enumerator
EncoderTag 

Tag for EncodingImpl to indicate that Encoder is requested.

EstimatorTag 

Tag for EncodingImpl to indicate that Estimator is requested.

Definition at line 30 of file encoding-buffer-fwd.hpp.

Function Documentation

◆ prependNonNegativeIntegerBlock()

◆ prependNonNegativeIntegerBlock< EstimatorTag >()

template size_t ndn::encoding::prependNonNegativeIntegerBlock< EstimatorTag > ( EncodingImpl< EstimatorTag > &  ,
uint32_t  ,
uint64_t   
)

◆ prependNonNegativeIntegerBlock< EncoderTag >()

template size_t ndn::encoding::prependNonNegativeIntegerBlock< EncoderTag > ( EncodingImpl< EncoderTag > &  ,
uint32_t  ,
uint64_t   
)

◆ makeNonNegativeIntegerBlock()

Block ndn::encoding::makeNonNegativeIntegerBlock ( uint32_t  type,
uint64_t  value 
)

◆ readNonNegativeInteger()

◆ prependEmptyBlock()

template<Tag TAG>
size_t ndn::encoding::prependEmptyBlock ( EncodingImpl< TAG > &  encoder,
uint32_t  type 
)

Prepend an empty TLV element.

Parameters
encoderan EncodingBuffer or EncodingEstimator
typeTLV-TYPE number

The TLV element has zero-length TLV-VALUE.

See also
makeEmptyBlock

Definition at line 73 of file block-helpers.cpp.

References prependEmptyBlock< EncoderTag >(), and prependEmptyBlock< EstimatorTag >().

Referenced by ndn::lp::EncodeHelper< TAG, TlvType, EmptyValue >::encode(), makeEmptyBlock(), readNonNegativeIntegerAs(), and ndn::Interest::wireEncode().

◆ prependEmptyBlock< EstimatorTag >()

◆ prependEmptyBlock< EncoderTag >()

template size_t ndn::encoding::prependEmptyBlock< EncoderTag > ( EncodingImpl< EncoderTag > &  ,
uint32_t   
)

◆ makeEmptyBlock()

Block ndn::encoding::makeEmptyBlock ( uint32_t  type)

Create an empty TLV block.

Parameters
typeTLV-TYPE number
Returns
A TLV block with zero-length TLV-VALUE
See also
prependEmptyBlock

Definition at line 88 of file block-helpers.cpp.

References ndn::encoding::Encoder::block(), and prependEmptyBlock().

Referenced by makeNestedBlock(), readNonNegativeIntegerAs(), and ndn::Interest::setSignatureInfo().

◆ prependStringBlock()

template<Tag TAG>
size_t ndn::encoding::prependStringBlock ( EncodingImpl< TAG > &  encoder,
uint32_t  type,
const std::string &  value 
)

◆ prependStringBlock< EstimatorTag >()

template size_t ndn::encoding::prependStringBlock< EstimatorTag > ( EncodingImpl< EstimatorTag > &  ,
uint32_t  ,
const std::string &   
)

◆ prependStringBlock< EncoderTag >()

template size_t ndn::encoding::prependStringBlock< EncoderTag > ( EncodingImpl< EncoderTag > &  ,
uint32_t  ,
const std::string &   
)

◆ makeStringBlock()

Block ndn::encoding::makeStringBlock ( uint32_t  type,
const std::string &  value 
)

Create a TLV block containing a string.

Parameters
typeTLV-TYPE number
valuestring value, may contain NUL octets
See also
prependStringBlock, readString

Definition at line 115 of file block-helpers.cpp.

References makeBinaryBlock().

Referenced by makeNestedBlock(), readNonNegativeIntegerAs(), and ndn::mgmt::ControlResponse::wireEncode().

◆ readString()

◆ prependDoubleBlock()

template<Tag TAG>
size_t ndn::encoding::prependDoubleBlock ( EncodingImpl< TAG > &  encoder,
uint32_t  type,
double  value 
)

Prepend a TLV element containing an IEEE 754 double-precision floating-point number.

Parameters
encoderan EncodingBuffer or EncodingEstimator
typeTLV-TYPE number
valuea floating point number value
See also
makeDoubleBlock, readDouble

Definition at line 132 of file block-helpers.cpp.

References prependBinaryBlock(), prependDoubleBlock< EncoderTag >(), and prependDoubleBlock< EstimatorTag >().

Referenced by makeDoubleBlock(), readNonNegativeIntegerAs(), and ndn::lp::GeoTag::wireEncode().

◆ prependDoubleBlock< EstimatorTag >()

template size_t ndn::encoding::prependDoubleBlock< EstimatorTag > ( EncodingImpl< EstimatorTag > &  ,
uint32_t  ,
double   
)

◆ prependDoubleBlock< EncoderTag >()

template size_t ndn::encoding::prependDoubleBlock< EncoderTag > ( EncodingImpl< EncoderTag > &  ,
uint32_t  ,
double   
)

◆ makeDoubleBlock()

Block ndn::encoding::makeDoubleBlock ( uint32_t  type,
double  value 
)

Create a TLV element containing an IEEE 754 double-precision floating-point number.

Parameters
typeTLV-TYPE number
valuefloating point number value
See also
prependDoubleBlock, readDouble

Definition at line 147 of file block-helpers.cpp.

References ndn::encoding::Encoder::block(), and prependDoubleBlock().

Referenced by readNonNegativeIntegerAs().

◆ readDouble()

double ndn::encoding::readDouble ( const Block block)

Read TLV-VALUE of a TLV element as an IEEE 754 double-precision floating-point number.

Parameters
blockthe TLV element
Returns
a floating point number value
See also
prependDoubleBlock, makeDoubleBlock

Definition at line 159 of file block-helpers.cpp.

References NDN_THROW, ndn::Block::value(), and ndn::Block::value_size().

Referenced by readNonNegativeIntegerAs(), and ndn::lp::GeoTag::wireDecode().

◆ prependBinaryBlock()

template<Tag TAG>
size_t ndn::encoding::prependBinaryBlock ( EncodingImpl< TAG > &  encoder,
uint32_t  type,
span< const uint8_t >  value 
)

Prepend a TLV element containing a sequence of raw bytes.

Parameters
encoderan EncodingBuffer or EncodingEstimator
typeTLV-TYPE number
valuerange of bytes to use as TLV-VALUE
See also
makeBinaryBlock

Definition at line 181 of file block-helpers.cpp.

References prependBinaryBlock< EncoderTag >(), and prependBinaryBlock< EstimatorTag >().

Referenced by ndn::lp::EncodeHelper< TAG, TlvType, uint64_t >::encode(), makeBinaryBlock(), prependBlock(), prependDoubleBlock(), prependStringBlock(), readNonNegativeIntegerAs(), ndn::security::SafeBag::wireEncode(), and ndn::Interest::wireEncode().

◆ prependBinaryBlock< EstimatorTag >()

template size_t ndn::encoding::prependBinaryBlock< EstimatorTag > ( EncodingImpl< EstimatorTag > &  ,
uint32_t  ,
span< const uint8_t >   
)

◆ prependBinaryBlock< EncoderTag >()

template size_t ndn::encoding::prependBinaryBlock< EncoderTag > ( EncodingImpl< EncoderTag > &  ,
uint32_t  ,
span< const uint8_t >   
)

◆ makeBinaryBlock() [1/3]

Block ndn::encoding::makeBinaryBlock ( uint32_t  type,
span< const uint8_t >  value 
)

◆ prependBlock()

template<Tag TAG>
size_t ndn::encoding::prependBlock ( EncodingImpl< TAG > &  encoder,
const Block block 
)

◆ prependBlock< EstimatorTag >()

template size_t ndn::encoding::prependBlock< EstimatorTag > ( EncodingImpl< EstimatorTag > &  ,
const Block  
)

Referenced by makeBinaryBlock(), and prependBlock().

◆ prependBlock< EncoderTag >()

template size_t ndn::encoding::prependBlock< EncoderTag > ( EncodingImpl< EncoderTag > &  ,
const Block  
)

Referenced by makeBinaryBlock(), and prependBlock().

◆ readNonNegativeIntegerAs() [1/2]

template<typename R >
std::enable_if_t<std::is_integral<R>::value, R> ndn::encoding::readNonNegativeIntegerAs ( const Block block)

Read a non-negative integer from a TLV element and cast to the specified type.

Template Parameters
Rresult type, must be an integral type
Parameters
blockthe TLV element
Exceptions
tlv::Errorblock does not contain a valid non-negative integer or the number cannot be represented in R

Definition at line 72 of file block-helpers.hpp.

References NDN_THROW, readNonNegativeInteger(), ndn::to_string(), and ndn::Block::type().

Referenced by makeNestedBlock().

◆ readNonNegativeIntegerAs() [2/2]

template<typename R >
std::enable_if_t<std::is_enum<R>::value, R> ndn::encoding::readNonNegativeIntegerAs ( const Block block)

Read a non-negative integer from a TLV element and cast to the specified type.

Template Parameters
Rresult type, must be an enumeration type
Parameters
blockthe TLV element
Exceptions
tlv::Errorblock does not contain a valid non-negative integer or the number cannot be represented in R
Warning
If R is an unscoped enum type, it must have a fixed underlying type. Otherwise, this function may trigger unspecified behavior.

Definition at line 91 of file block-helpers.hpp.

References makeBinaryBlock(), makeDoubleBlock(), makeEmptyBlock(), makeStringBlock(), prependBinaryBlock(), prependBinaryBlock< EncoderTag >(), prependBinaryBlock< EstimatorTag >(), prependDoubleBlock(), prependDoubleBlock< EncoderTag >(), prependDoubleBlock< EstimatorTag >(), prependEmptyBlock(), prependEmptyBlock< EncoderTag >(), prependEmptyBlock< EstimatorTag >(), prependStringBlock(), prependStringBlock< EncoderTag >(), prependStringBlock< EstimatorTag >(), readDouble(), and readString().

◆ makeBinaryBlock() [2/3]

Block ndn::encoding::makeBinaryBlock ( uint32_t  type,
const char *  value,
size_t  length 
)
inline

Create a TLV block copying the TLV-VALUE from a raw buffer.

Parameters
typeTLV-TYPE number
valueraw buffer as TLV-VALUE
lengthlength of value buffer
Deprecated:

Definition at line 217 of file block-helpers.hpp.

References makeBinaryBlock().

◆ makeBinaryBlock() [3/3]

template<class Iterator >
Block ndn::encoding::makeBinaryBlock ( uint32_t  type,
Iterator  first,
Iterator  last 
)

Create a TLV block copying TLV-VALUE from iterators.

Template Parameters
Iteratoran InputIterator dereferenceable to a 1-octet type; a faster implementation is automatically selected for RandomAccessIterator
Parameters
typeTLV-TYPE number
firstbegin iterator
lastpast-the-end iterator
See also
prependBinaryBlock

Definition at line 286 of file block-helpers.hpp.

References prependBlock(), prependBlock< EncoderTag >(), and prependBlock< EstimatorTag >().

◆ prependNestedBlock() [1/2]

template<Tag TAG, class U >
size_t ndn::encoding::prependNestedBlock ( EncodingImpl< TAG > &  encoder,
uint32_t  type,
const U &  value 
)

Prepend a TLV element containing a nested TLV element.

Template Parameters
Utype that satisfies WireEncodableWithEncodingBuffer concept
Parameters
encoderan EncodingBuffer or EncodingEstimator
typeTLV-TYPE number for outer TLV element
valuean object to be encoded as inner TLV element
See also
makeNestedBlock

Definition at line 321 of file block-helpers.hpp.

Referenced by makeNestedBlock(), ndn::nfd::StrategyChoice::wireEncode(), ndn::MetaInfo::wireEncode(), ndn::nfd::ControlParameters::wireEncode(), and ndn::Interest::wireEncode().

◆ makeNestedBlock() [1/2]

template<class U >
Block ndn::encoding::makeNestedBlock ( uint32_t  type,
const U &  value 
)

Create a TLV block containing a nested TLV element.

Template Parameters
Utype that satisfies WireEncodableWithEncodingBuffer concept
Parameters
typeTLV-TYPE number for outer TLV element
valuean object to be encoded as inner TLV element
See also
prependNestedBlock

Definition at line 339 of file block-helpers.hpp.

References ndn::encoding::Encoder::block(), and prependNestedBlock().

Referenced by ndn::Link::Link(), and makeNestedBlock().

◆ prependNestedBlock() [2/2]

template<Tag TAG, class I >
size_t ndn::encoding::prependNestedBlock ( EncodingImpl< TAG > &  encoder,
uint32_t  type,
first,
last 
)

Prepend a TLV element containing a sequence of nested TLV elements.

Template Parameters
Ibidirectional iterator to a type that satisfies WireEncodableWithEncodingBuffer concept
Parameters
encoderan EncodingBuffer or EncodingEstimator
typeTLV-TYPE number for outer TLV element
firstbegin iterator to inner TLV elements
lastpast-end iterator to inner TLV elements
See also
makeNestedBlock

Definition at line 359 of file block-helpers.hpp.

◆ makeNestedBlock() [2/2]

template<class I >
Block ndn::encoding::makeNestedBlock ( uint32_t  type,
first,
last 
)

Create a TLV block containing a sequence of nested TLV elements.

Template Parameters
Ibidirectional iterator to a type that satisfies WireEncodableWithEncodingBuffer concept
Parameters
typeTLV-TYPE number for outer TLV element
firstbegin iterator to inner TLV elements
lastpast-end iterator to inner TLV elements
See also
prependNestedBlock

Definition at line 385 of file block-helpers.hpp.

References ndn::encoding::Encoder::block(), makeBinaryBlock(), makeEmptyBlock(), makeNestedBlock(), makeNonNegativeIntegerBlock(), makeStringBlock(), prependNestedBlock(), readNonNegativeInteger(), readNonNegativeIntegerAs(), and readString().