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)
|
|
}
|
|
}
|
|
}
|