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>
13
14
18 typedef boost::iterator_range<ByteBuffer::iterator> buffer_range;
19 typedef boost::iterator_range<ByteBuffer::const_iterator> buffer_const_range;
22
23
24
25
27 CohesivePacket(ByteBuffer&& buffer, OsiLayer layer);
36
37
38
39
40 buffer_const_range
operator[](OsiLayer layer)
const;
41 buffer_range operator[](OsiLayer layer);
44
45
46
47
48
49
53
54
55
56
57 void trim(OsiLayer from,
unsigned bytes);
60
61
62
63 std::size_t
size()
const;
66
67
68
69
70 std::size_t
size(OsiLayer single_layer)
const;
73
74
75
76
77
78 std::size_t
size(OsiLayer from, OsiLayer to)
const;
81
82
83
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;
ChunckPacket is a packet consisting of several memory chunks.
ByteBufferConvertible & operator[](OsiLayer ol)
ChunkPacket & merge(ChunkPacket &packet, OsiLayer from, OsiLayer to)
const ByteBufferConvertible & layer(OsiLayer ol) const
const ByteBufferConvertible & operator[](OsiLayer ol) const
ByteBufferConvertible & layer(OsiLayer ol)
std::size_t size(OsiLayer from, OsiLayer to) const
ChunkPacket extract(OsiLayer from, OsiLayer to)
std::size_t size(OsiLayer from, OsiLayer to) const
buffer_const_range operator[](OsiLayer layer) const
void set_boundary(OsiLayer, unsigned bytes)
const ByteBuffer & buffer() const
CohesivePacket(const ByteBuffer &buffer, OsiLayer layer)
void trim(OsiLayer from, unsigned bytes)
std::size_t size(OsiLayer single_layer) const
value_type operator[](size_type) const
byte_view_range(ByteBuffer &&)
byte_view_range(const ByteBuffer::const_iterator &, const ByteBuffer::const_iterator &)
ByteBuffer::const_pointer data() const