1#include <vanetza/common/archives.hpp>
6InputArchive::InputArchive(InputStream& is) :
7 m_stream_buffer(is.rdbuf())
11InputArchive::InputArchive(StreamBuffer& buf) :
16void InputArchive::load_binary(
unsigned char* data, std::size_t len)
18 load_binary(
reinterpret_cast<char*
>(data), len);
21void InputArchive::load_binary(
char* data, std::size_t len)
23 std::size_t read_bytes = m_stream_buffer->sgetn(data, len);
24 if (read_bytes != len) {
25 throw Exception(
"incomplete read");
29char InputArchive::peek_byte()
31 auto got = m_stream_buffer->sgetc();
32 if (got == StreamBuffer::traits_type::eof()) {
33 throw Exception(
"impossible peek at end of stream");
35 return StreamBuffer::traits_type::to_char_type(got);
39std::size_t InputArchive::remaining_bytes()
41 return m_stream_buffer->in_avail();
44OutputArchive::OutputArchive(OutputStream& os) :
45 m_stream_buffer(os.rdbuf())
49OutputArchive::OutputArchive(StreamBuffer& buf) :
54void OutputArchive::save_binary(
const unsigned char* data, std::size_t len)
56 save_binary(
reinterpret_cast<const char*
>(data), len);
59void OutputArchive::save_binary(
const char* data, std::size_t len)
61 std::size_t written_bytes = m_stream_buffer->sputn(data, len);
62 if (written_bytes != len) {
63 throw Exception(
"incomplete write");