Vanetza
 
Loading...
Searching...
No Matches
byte_buffer_source.hpp
1#ifndef BYTE_BUFFER_SOURCE_HPP_6IBYOI0T
2#define BYTE_BUFFER_SOURCE_HPP_6IBYOI0T
3
4#include <vanetza/common/byte_buffer.hpp>
5#include <boost/iostreams/categories.hpp>
6#include <boost/range/iterator_range.hpp>
7
8namespace vanetza
9{
10
11/**
12 * Implementation of boost::iostreams' source device concept.
13 * Allows to use a byte buffer as input stream.
14 */
16{
17public:
18 typedef char char_type;
19 typedef boost::iostreams::source_tag category;
20 typedef ByteBuffer::const_iterator iterator;
21 typedef boost::iterator_range<iterator> range;
22
23 static_assert(sizeof(char_type) == sizeof(ByteBuffer::value_type),
24 "size mismatch of char_type and ByteBuffer::value_type");
25
26 byte_buffer_source(const ByteBuffer& buffer);
27 byte_buffer_source(range r);
28 byte_buffer_source(iterator begin, iterator end);
29 std::streamsize read(char_type* buf, std::streamsize n);
30
31private:
32 iterator m_begin;
33 iterator m_end;
34};
35
36} // namespace vanetza
37
38#endif /* BYTE_BUFFER_SOURCE_HPP_6IBYOI0T */
39