24 #ifndef NDN_ENCODING_BLOCK_HPP
25 #define NDN_ENCODING_BLOCK_HPP
27 #include "../common.hpp"
81 const Buffer::const_iterator&
begin,
const Buffer::const_iterator&
end,
82 bool verifyLength =
true);
90 const Buffer::const_iterator&
begin,
const Buffer::const_iterator&
end,
91 bool verifyLength =
true);
95 Block(
const uint8_t* buffer,
size_t maxlength);
99 Block(
const void* buffer,
size_t maxlength);
107 const Buffer::const_iterator&
begin,
const Buffer::const_iterator&
end,
108 const Buffer::const_iterator& valueBegin,
const Buffer::const_iterator& valueEnd);
147 static std::tuple<bool, Block>
160 static std::tuple<bool, Block>
161 fromBuffer(
const uint8_t* buffer,
size_t maxSize);
184 Buffer::const_iterator
187 Buffer::const_iterator
205 Buffer::const_iterator
208 Buffer::const_iterator
234 get(uint32_t
type)
const;
236 element_const_iterator
245 remove(uint32_t
type);
248 erase(element_const_iterator position);
251 erase(element_const_iterator first, element_const_iterator last);
263 insert(element_const_iterator pos,
const Block& element);
267 const element_container&
270 element_const_iterator
273 element_const_iterator
285 shared_ptr<const Buffer>
296 operator boost::asio::const_buffer()
const;
317 inline shared_ptr<const Buffer>
329 inline Buffer::const_iterator
335 inline Buffer::const_iterator
349 #endif // NDN_ENCODING_BLOCK_HPP
shared_ptr< const Buffer > m_buffer
bool empty() const
Check if the Block is empty.
bool operator!=(const Block &other) const
static Block fromStream(std::istream &is)
Create a Block from an input stream.
Copyright (c) 2013-2016 Regents of the University of California.
bool hasValue() const
Check if the Block has value block (no type and length are encoded)
Error(const std::string &what)
static std::tuple< bool, Block > fromBuffer(ConstBufferPtr buffer, size_t offset)
Try to construct block from Buffer.
Copyright (c) 2013-2016 Regents of the University of California.
Buffer::const_iterator end() const
Buffer::const_iterator m_begin
element_const_iterator find(uint32_t type) const
element_container::iterator element_iterator
const element_container & elements() const
Get all subelements.
Class representing a wire element of NDN-TLV packet format.
element_iterator insert(element_const_iterator pos, const Block &element)
insert Insert a new element in a specific position
element_iterator erase(element_const_iterator position)
Buffer::const_iterator value_begin() const
Buffer::const_iterator value_end() const
void resetWire()
Reset wire buffer but keep sub elements (if any)
element_const_iterator elements_end() const
element_const_iterator elements_begin() const
Buffer::const_iterator m_value_end
EncodingImpl< EncoderTag > EncodingBuffer
Block blockFromValue() const
element_container::const_iterator element_const_iterator
size_t elements_size() const
void reset()
Reset wire buffer of the element.
void push_back(const Block &element)
size_t value_size() const
void parse() const
Parse wire buffer into subblocks.
std::vector< Block > element_container
shared_ptr< const Buffer > getBuffer() const
Get underlying buffer.
void encode()
Encode subblocks into wire buffer.
const uint8_t * wire() const
element_container m_subBlocks
Buffer::const_iterator m_end
bool hasWire() const
Check if the Block has fully encoded wire.
const uint8_t * value() const
bool operator==(const Block &other) const
Buffer::const_iterator m_value_begin
shared_ptr< const Buffer > ConstBufferPtr
Block()
Create an empty Block.
represents an error in TLV encoding or decoding
Buffer::const_iterator begin() const