SRS-control
0.1.4
Loading...
Searching...
No Matches
SerializableBuffer.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <algorithm>
4
#include <boost/asio/buffer.hpp>
5
#include <iterator>
6
#include <span>
7
#include <
srs/utils/CommonAlias.hpp
>
8
#include <string_view>
9
#include <zpp_bits.h>
10
11
namespace
srs::process
12
{
13
class
SerializableMsgBuffer
14
{
15
public
:
16
SerializableMsgBuffer
() =
default
;
17
explicit
SerializableMsgBuffer
(std::span<BufferElementType> read_data)
18
{
19
data_
.reserve(read_data.size());
20
std::ranges::copy(read_data, std::back_inserter(
data_
));
21
}
22
23
auto
serialize
(
auto
&&... structs)
24
{
25
auto
serialize_to = zpp::bits::out{
data_
, zpp::bits::endian::network{}, zpp::bits::no_size{} };
26
auto
size =
data_
.size();
27
serialize_to.position() +=
sizeof
(
BufferElementType
) * size;
28
29
// cista::buf<WriteBufferType&> serializer{ buffer };
30
// serialize_multi(serialize_to, std::forward<decltype(structs)>(structs)...);
31
serialize_to(std::forward<
decltype
(structs)>(structs)...).or_throw();
32
return
asio::buffer(
data_
);
33
}
34
35
auto
operator==
(std::span<char> msg)
const
->
bool
{
return
std::string_view{ msg } == *
this
; }
36
37
auto
operator==
(std::string_view msg)
const
->
bool
{
return
msg ==
data
(); }
38
39
[[nodiscard]]
auto
data
() const -> std::string_view {
return
std::string_view{
data_
.data(),
data_
.size() }; }
40
[[nodiscard]]
auto
empty
() const ->
bool
{
return
data_
.empty(); }
41
42
void
clear
() {
data_
.clear(); }
43
44
private
:
45
BinaryData
data_
;
46
};
47
}
// namespace srs::process
CommonAlias.hpp
srs::process::SerializableMsgBuffer::SerializableMsgBuffer
SerializableMsgBuffer(std::span< BufferElementType > read_data)
Definition
SerializableBuffer.hpp:17
srs::process::SerializableMsgBuffer::operator==
auto operator==(std::span< char > msg) const -> bool
Definition
SerializableBuffer.hpp:35
srs::process::SerializableMsgBuffer::data_
BinaryData data_
Definition
SerializableBuffer.hpp:45
srs::process::SerializableMsgBuffer::serialize
auto serialize(auto &&... structs)
Definition
SerializableBuffer.hpp:23
srs::process::SerializableMsgBuffer::operator==
auto operator==(std::string_view msg) const -> bool
Definition
SerializableBuffer.hpp:37
srs::process::SerializableMsgBuffer::clear
void clear()
Definition
SerializableBuffer.hpp:42
srs::process::SerializableMsgBuffer::empty
auto empty() const -> bool
Definition
SerializableBuffer.hpp:40
srs::process::SerializableMsgBuffer::SerializableMsgBuffer
SerializableMsgBuffer()=default
srs::process::SerializableMsgBuffer::data
auto data() const -> std::string_view
Definition
SerializableBuffer.hpp:39
srs::process
Definition
ConverterConcepts.hpp:6
srs::BufferElementType
char BufferElementType
Definition
CommonAlias.hpp:17
srs::BinaryData
std::vector< BufferElementType > BinaryData
Definition
CommonAlias.hpp:18
backend
srs
converters
SerializableBuffer.hpp
Impressum
Datenschutzerklärung
Generated by
1.15.0