Vanetza
 
Loading...
Searching...
No Matches
parser.hpp
1#ifndef PARSER_HPP_IBDRMPKB
2#define PARSER_HPP_IBDRMPKB
3
4#include <vanetza/common/byte_buffer.hpp>
5#include <vanetza/common/byte_buffer_source.hpp>
6#include <vanetza/geonet/header_type.hpp>
7#include <vanetza/geonet/header_variant.hpp>
8#include <vanetza/security/secured_message.hpp>
9#include <boost/iostreams/stream.hpp>
10#include <boost/range/iterator_range.hpp>
11#include <cstdint>
12
13namespace vanetza
14{
15namespace geonet
16{
17
18// forward declarations
19struct BasicHeader;
20struct CommonHeader;
21
22class Parser
23{
24public:
25 Parser(ByteBuffer::const_iterator begin, ByteBuffer::const_iterator end);
26 Parser(boost::iterator_range<ByteBuffer::const_iterator> range);
27
28 std::size_t parse_basic(BasicHeader&);
29 std::size_t parse_common(CommonHeader&);
30 std::size_t parse_secured(boost::optional<security::SecuredMessage>&);
31 std::size_t parse_extended(HeaderVariant&, HeaderType);
32 std::size_t parsed_bytes() const;
33
34private:
35 byte_buffer_source m_byte_buffer_source;
36 boost::iostreams::stream_buffer<byte_buffer_source> m_stream;
37 InputArchive m_archive;
38 std::size_t m_read_bytes;
39};
40
41} // namespace geonet
42} // namespace vanetza
43
44#endif /* PARSER_HPP_IBDRMPKB */
45
BasicHeader specified in ETSI EN 302 636-4-1 v1.2.1, section 8.6.