Vanetza
 
Loading...
Searching...
No Matches
serialization_buffer.hpp
1#ifndef SERIALIZATION_BUFFER_HPP_KWLZAXD3
2#define SERIALIZATION_BUFFER_HPP_KWLZAXD3
3
4#include <vanetza/common/byte_buffer.hpp>
5#include <vanetza/common/byte_buffer_sink.hpp>
6#include <vanetza/common/byte_buffer_source.hpp>
7#include <vanetza/common/serialization.hpp>
8#include <boost/iostreams/stream_buffer.hpp>
9
10namespace vanetza
11{
12
13template<typename T>
14void serialize_into_buffer(const T& t, ByteBuffer& buf)
15{
16 byte_buffer_sink sink(buf);
17 boost::iostreams::stream_buffer<byte_buffer_sink> stream(sink);
18 OutputArchive ar(stream);
19 serialize(ar, t);
20}
21
22template<typename T>
23void deserialize_from_buffer(T& t, const ByteBuffer& buf)
24{
25 byte_buffer_source source(buf);
26 boost::iostreams::stream_buffer<byte_buffer_source> stream(source);
27 InputArchive ar(stream);
28 deserialize(ar, t);
29}
30
31template<typename T>
32void deserialize_from_range(T& t, typename byte_buffer_source::range range)
33{
34 byte_buffer_source source(range);
35 boost::iostreams::stream_buffer<byte_buffer_source> stream(source);
36 InputArchive ar(stream);
37 deserialize(ar, t);
38}
39
40} // namespace vanetza
41
42#endif /* SERIALIZATION_BUFFER_HPP_KWLZAXD3 */
43