Commit bddef5ec authored by Jakob Otto's avatar Jakob Otto

Add overload for to_bytes

parent dff48ceb
...@@ -78,6 +78,10 @@ struct header : detail::comparable<header> { ...@@ -78,6 +78,10 @@ struct header : detail::comparable<header> {
/// @relates header /// @relates header
std::array<byte, header_size> to_bytes(header x); std::array<byte, header_size> to_bytes(header x);
/// Serializes a header to a byte representation.
/// @relates header
void to_bytes(header x, std::vector<byte>& buf);
/// @relates header /// @relates header
template <class Inspector> template <class Inspector>
typename Inspector::result_type inspect(Inspector& f, header& x) { typename Inspector::result_type inspect(Inspector& f, header& x) {
......
...@@ -46,17 +46,25 @@ header header::from_bytes(span<const byte> bytes) { ...@@ -46,17 +46,25 @@ header header::from_bytes(span<const byte> bytes) {
return result; return result;
} }
std::array<byte, header_size> to_bytes(header x) { void to_bytes_impl(const header& x, byte* ptr) {
std::array<byte, header_size> result;
auto ptr = result.data();
*ptr = static_cast<byte>(x.type); *ptr = static_cast<byte>(x.type);
auto payload_len = detail::to_network_order(x.payload_len); auto payload_len = detail::to_network_order(x.payload_len);
memcpy(ptr + 1, &payload_len, sizeof(payload_len)); memcpy(ptr + 1, &payload_len, sizeof(payload_len));
auto operation_data = detail::to_network_order(x.operation_data); auto operation_data = detail::to_network_order(x.operation_data);
memcpy(ptr + 5, &operation_data, sizeof(operation_data)); memcpy(ptr + 5, &operation_data, sizeof(operation_data));
}
std::array<byte, header_size> to_bytes(header x) {
std::array<byte, header_size> result{};
to_bytes_impl(x, result.data());
return result; return result;
} }
void to_bytes(header x, std::vector<byte>& buf) {
buf.resize(header_size);
to_bytes_impl(x, buf.data());
}
} // namespace basp } // namespace basp
} // namespace net } // namespace net
} // namespace caf } // namespace caf
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment