mirror of
https://github.com/monero-project/monero.git
synced 2024-12-29 14:26:12 -05:00
30 lines
809 B
C++
30 lines
809 B
C++
|
|
||
|
#include "byte_slice.h"
|
||
|
#include "byte_stream.h"
|
||
|
#include "misc_log_ex.h"
|
||
|
#include "span.h"
|
||
|
#include "storages/portable_storage.h"
|
||
|
#include "storages/portable_storage_to_bin.h"
|
||
|
|
||
|
namespace epee
|
||
|
{
|
||
|
namespace serialization
|
||
|
{
|
||
|
bool portable_storage::store_to_binary(byte_slice& target, const std::size_t initial_buffer_size)
|
||
|
{
|
||
|
TRY_ENTRY();
|
||
|
byte_stream ss;
|
||
|
ss.reserve(initial_buffer_size);
|
||
|
storage_block_header sbh{};
|
||
|
sbh.m_signature_a = SWAP32LE(PORTABLE_STORAGE_SIGNATUREA);
|
||
|
sbh.m_signature_b = SWAP32LE(PORTABLE_STORAGE_SIGNATUREB);
|
||
|
sbh.m_ver = PORTABLE_STORAGE_FORMAT_VER;
|
||
|
ss.write(epee::as_byte_span(sbh));
|
||
|
pack_entry_to_buff(ss, m_root);
|
||
|
target = epee::byte_slice{std::move(ss)};
|
||
|
return true;
|
||
|
CATCH_ENTRY("portable_storage::store_to_binary", false)
|
||
|
}
|
||
|
}
|
||
|
}
|