Helper class to perform TLV encoding Interface of this class (mostly) matches interface of Estimator class. More...
#include <encoder.hpp>
Public Types | |
using | value_type = Buffer::value_type |
using | iterator = Buffer::iterator |
using | const_iterator = Buffer::const_iterator |
Public Member Functions | |
size_t | prependByte (uint8_t value) |
Prepend a byte. More... | |
size_t | appendByte (uint8_t value) |
Append a byte. More... | |
size_t | prependByteArray (const uint8_t *array, size_t length) |
Prepend a byte array array of length length . More... | |
size_t | appendByteArray (const uint8_t *array, size_t length) |
Append a byte array array of length length . More... | |
template<class Iterator > | |
size_t | prependRange (Iterator first, Iterator last) |
Prepend range of bytes from the range [first , last ) More... | |
template<class Iterator > | |
size_t | appendRange (Iterator first, Iterator last) |
Append range of bytes from the range [first , last ) More... | |
size_t | prependVarNumber (uint64_t varNumber) |
Prepend VarNumber varNumber of NDN TLV encoding. More... | |
size_t | appendVarNumber (uint64_t varNumber) |
Prepend VarNumber varNumber of NDN TLV encoding. More... | |
size_t | prependNonNegativeInteger (uint64_t integer) |
Prepend non-negative integer integer of NDN TLV encoding. More... | |
size_t | appendNonNegativeInteger (uint64_t integer) |
Append non-negative integer integer of NDN TLV encoding. More... | |
size_t | prependByteArrayBlock (uint32_t type, const uint8_t *array, size_t arraySize) |
Prepend TLV block of type type and value from buffer array of size arraySize . More... | |
size_t | appendByteArrayBlock (uint32_t type, const uint8_t *array, size_t arraySize) |
Append TLV block of type type and value from buffer array of size arraySize . More... | |
size_t | prependBlock (const Block &block) |
Prepend TLV block block . More... | |
size_t | appendBlock (const Block &block) |
Append TLV block block . More... | |
Encoder (size_t totalReserve=MAX_NDN_PACKET_SIZE, size_t reserveFromBack=400) | |
Create instance of the encoder with the specified reserved sizes. More... | |
Encoder (const Block &block) | |
Create EncodingBlock from existing block. More... | |
void | reserve (size_t size, bool addInFront) |
Reserve size bytes for the underlying buffer. More... | |
void | reserveBack (size_t size) |
Reserve at least size bytes at the back of the underlying buffer. More... | |
void | reserveFront (size_t size) |
Reserve at least isze bytes at the beginning of the underlying buffer. More... | |
size_t | capacity () const noexcept |
Get size of the underlying buffer. More... | |
shared_ptr< Buffer > | getBuffer () const noexcept |
Get underlying buffer. More... | |
iterator | begin () |
Get an iterator pointing to the first byte of the encoded buffer. More... | |
iterator | end () |
Get an iterator pointing to the past-the-end byte of the encoded buffer. More... | |
const_iterator | begin () const |
Get an iterator pointing to the first byte of the encoded buffer. More... | |
const_iterator | end () const |
Get an iterator pointing to the past-the-end byte of the encoded buffer. More... | |
uint8_t * | buf () |
Get a pointer to the first byte of the encoded buffer. More... | |
const uint8_t * | buf () const |
Get a pointer to the first byte of the encoded buffer. More... | |
size_t | size () const noexcept |
Get the size of the encoded buffer. More... | |
Block | block (bool verifyLength=true) const |
Create Block from the underlying buffer. More... | |
Helper class to perform TLV encoding Interface of this class (mostly) matches interface of Estimator class.
Definition at line 35 of file encoder.hpp.
using ndn::encoding::Encoder::value_type = Buffer::value_type |
Definition at line 129 of file encoder.hpp.
using ndn::encoding::Encoder::iterator = Buffer::iterator |
Definition at line 130 of file encoder.hpp.
using ndn::encoding::Encoder::const_iterator = Buffer::const_iterator |
Definition at line 131 of file encoder.hpp.
|
explicit |
Create instance of the encoder with the specified reserved sizes.
totalReserve | initial buffer size to reserve |
reserveFromBack | number of bytes to reserve for append* operations |
Definition at line 31 of file encoder.cpp.
|
explicit |
Create EncodingBlock from existing block.
This is a dangerous constructor and should be used with caution. It will modify contents of the buffer that is used by block and may impact data in other blocks.
The primary purpose for this method is to be used to extend Block after sign operation.
Definition at line 37 of file encoder.cpp.
size_t ndn::encoding::Encoder::prependByte | ( | uint8_t | value | ) |
Prepend a byte.
Definition at line 98 of file encoder.cpp.
References reserveFront().
Referenced by prependNonNegativeInteger(), and prependVarNumber().
size_t ndn::encoding::Encoder::appendByte | ( | uint8_t | value | ) |
Append a byte.
Definition at line 108 of file encoder.cpp.
References reserveBack().
Referenced by appendNonNegativeInteger(), and appendVarNumber().
size_t ndn::encoding::Encoder::prependByteArray | ( | const uint8_t * | array, |
size_t | length | ||
) |
Prepend a byte array array
of length length
.
Definition at line 118 of file encoder.cpp.
References reserveFront().
Referenced by prependBlock(), prependByteArrayBlock(), prependNonNegativeInteger(), and prependVarNumber().
size_t ndn::encoding::Encoder::appendByteArray | ( | const uint8_t * | array, |
size_t | length | ||
) |
Append a byte array array
of length length
.
Definition at line 128 of file encoder.cpp.
References reserveBack().
Referenced by appendBlock(), appendByteArrayBlock(), appendNonNegativeInteger(), and appendVarNumber().
size_t ndn::encoding::Encoder::prependRange | ( | Iterator | first, |
Iterator | last | ||
) |
Prepend range of bytes from the range [first
, last
)
Definition at line 312 of file encoder.hpp.
References reserveFront().
Referenced by ndn::encoding::detail::BinaryBlockFast< Iterator >::makeBlock().
size_t ndn::encoding::Encoder::appendRange | ( | Iterator | first, |
Iterator | last | ||
) |
Append range of bytes from the range [first
, last
)
Definition at line 327 of file encoder.hpp.
References reserveBack().
Referenced by ndn::encoding::detail::BinaryBlockSlow< Iterator >::makeBlock().
size_t ndn::encoding::Encoder::prependVarNumber | ( | uint64_t | varNumber | ) |
Prepend VarNumber varNumber
of NDN TLV encoding.
Definition at line 138 of file encoder.cpp.
References prependByte(), and prependByteArray().
Referenced by ndn::encoding::detail::BinaryBlockFast< Iterator >::makeBlock(), ndn::encoding::detail::BinaryBlockSlow< Iterator >::makeBlock(), and prependByteArrayBlock().
size_t ndn::encoding::Encoder::appendVarNumber | ( | uint64_t | varNumber | ) |
Prepend VarNumber varNumber
of NDN TLV encoding.
Definition at line 165 of file encoder.cpp.
References appendByte(), and appendByteArray().
Referenced by appendByteArrayBlock().
size_t ndn::encoding::Encoder::prependNonNegativeInteger | ( | uint64_t | integer | ) |
Prepend non-negative integer integer
of NDN TLV encoding.
Definition at line 192 of file encoder.cpp.
References prependByte(), and prependByteArray().
size_t ndn::encoding::Encoder::appendNonNegativeInteger | ( | uint64_t | integer | ) |
Append non-negative integer integer
of NDN TLV encoding.
Definition at line 212 of file encoder.cpp.
References appendByte(), and appendByteArray().
size_t ndn::encoding::Encoder::prependByteArrayBlock | ( | uint32_t | type, |
const uint8_t * | array, | ||
size_t | arraySize | ||
) |
Prepend TLV block of type type
and value from buffer array
of size arraySize
.
Definition at line 232 of file encoder.cpp.
References prependByteArray(), and prependVarNumber().
Referenced by ndn::encoding::makeBinaryBlock(), and prependBlock().
size_t ndn::encoding::Encoder::appendByteArrayBlock | ( | uint32_t | type, |
const uint8_t * | array, | ||
size_t | arraySize | ||
) |
Append TLV block of type type
and value from buffer array
of size arraySize
.
Definition at line 242 of file encoder.cpp.
References appendByteArray(), and appendVarNumber().
Referenced by appendBlock().
size_t ndn::encoding::Encoder::prependBlock | ( | const Block & | block | ) |
Prepend TLV block block
.
Definition at line 252 of file encoder.cpp.
References block(), ndn::Block::hasWire(), prependByteArray(), prependByteArrayBlock(), ndn::Block::size(), ndn::Block::type(), ndn::Block::value(), ndn::Block::value_size(), and ndn::Block::wire().
size_t ndn::encoding::Encoder::appendBlock | ( | const Block & | block | ) |
Append TLV block block
.
Definition at line 263 of file encoder.cpp.
References appendByteArray(), appendByteArrayBlock(), block(), ndn::Block::hasWire(), ndn::Block::size(), ndn::Block::type(), ndn::Block::value(), ndn::Block::value_size(), and ndn::Block::wire().
void ndn::encoding::Encoder::reserve | ( | size_t | size, |
bool | addInFront | ||
) |
Reserve size
bytes for the underlying buffer.
size | amount of bytes to reserve in the underlying buffer |
addInFront | if true, then size bytes will be available in front (i.e., subsequent call to prepend* will not need to allocate memory). If false, then reservation will be done at the end of the buffer (i.d., for subsequent append* calls) |
Definition at line 65 of file encoder.cpp.
Referenced by reserveBack(), and reserveFront().
void ndn::encoding::Encoder::reserveBack | ( | size_t | size | ) |
Reserve at least size
bytes at the back of the underlying buffer.
Definition at line 45 of file encoder.cpp.
References reserve(), and size().
Referenced by appendByte(), appendByteArray(), and appendRange().
void ndn::encoding::Encoder::reserveFront | ( | size_t | size | ) |
Reserve at least isze
bytes at the beginning of the underlying buffer.
Definition at line 52 of file encoder.cpp.
References reserve(), and size().
Referenced by prependByte(), prependByteArray(), and prependRange().
|
inlinenoexcept |
Get size of the underlying buffer.
Definition at line 269 of file encoder.hpp.
|
inlinenoexcept |
Get underlying buffer.
Definition at line 263 of file encoder.hpp.
|
inline |
Get an iterator pointing to the first byte of the encoded buffer.
Definition at line 275 of file encoder.hpp.
|
inline |
Get an iterator pointing to the past-the-end byte of the encoded buffer.
Definition at line 281 of file encoder.hpp.
|
inline |
Get an iterator pointing to the first byte of the encoded buffer.
Definition at line 287 of file encoder.hpp.
|
inline |
Get an iterator pointing to the past-the-end byte of the encoded buffer.
Definition at line 293 of file encoder.hpp.
|
inline |
Get a pointer to the first byte of the encoded buffer.
Definition at line 299 of file encoder.hpp.
Referenced by reserve().
|
inline |
Get a pointer to the first byte of the encoded buffer.
Definition at line 305 of file encoder.hpp.
|
inlinenoexcept |
Get the size of the encoded buffer.
Definition at line 257 of file encoder.hpp.
Referenced by reserve(), reserveBack(), and reserveFront().
Block ndn::encoding::Encoder::block | ( | bool | verifyLength = true | ) | const |
Create Block from the underlying buffer.
verifyLength | If this parameter set to true, Block's constructor will be requested to verify consistency of the encoded length in the Block, otherwise ignored |
Definition at line 59 of file encoder.cpp.
Referenced by appendBlock(), ndn::encoding::makeBinaryBlock(), ndn::encoding::detail::BinaryBlockFast< Iterator >::makeBlock(), ndn::encoding::detail::BinaryBlockSlow< Iterator >::makeBlock(), ndn::encoding::makeDoubleBlock(), ndn::encoding::makeEmptyBlock(), ndn::encoding::makeNestedBlock(), ndn::encoding::makeNonNegativeIntegerBlock(), and prependBlock().