1#ifndef COHESIVE_PACKET_HPP_VG2XKSCV
2#define COHESIVE_PACKET_HPP_VG2XKSCV
4#include <vanetza/common/byte_buffer.hpp>
5#include <vanetza/net/osi_layer.hpp>
6#include <boost/range/iterator_range.hpp>
18 typedef boost::iterator_range<ByteBuffer::iterator> buffer_range;
19 typedef boost::iterator_range<ByteBuffer::const_iterator> buffer_const_range;
40 buffer_const_range
operator[](OsiLayer layer)
const;
57 void trim(OsiLayer from,
unsigned bytes);
63 std::size_t
size()
const;
70 std::size_t
size(OsiLayer single_layer)
const;
78 std::size_t
size(OsiLayer from, OsiLayer to)
const;
84 const ByteBuffer&
buffer()
const {
return m_buffer; }
87 void reset_iterators(OsiLayer layer);
89 buffer_const_range get(
unsigned idx)
const;
90 buffer_range get(
unsigned idx);
93 std::array<ByteBuffer::iterator, osi_layers.size() + 1> m_iterators;
buffer_const_range operator[](OsiLayer layer) const
void set_boundary(OsiLayer, unsigned bytes)
const ByteBuffer & buffer() const
void trim(OsiLayer from, unsigned bytes)