diff options
author | Lee Clagett <code@leeclagett.com> | 2021-01-19 02:22:32 +0000 |
---|---|---|
committer | Lee Clagett <code@leeclagett.com> | 2021-01-19 02:22:32 +0000 |
commit | 679d05567d1b69b4d51ca80ddc3e58de877814df (patch) | |
tree | 8e66fe26898fddf9345d0143a8c600e99a77907c /contrib/epee/src/portable_storage.cpp | |
parent | Revert "Merge pull request #7136" (diff) | |
download | monero-679d05567d1b69b4d51ca80ddc3e58de877814df.tar.xz |
Remove payload copy in all outgoing p2p messages
Diffstat (limited to 'contrib/epee/src/portable_storage.cpp')
-rw-r--r-- | contrib/epee/src/portable_storage.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/contrib/epee/src/portable_storage.cpp b/contrib/epee/src/portable_storage.cpp index c3c9ccc02..b922cc9e3 100644 --- a/contrib/epee/src/portable_storage.cpp +++ b/contrib/epee/src/portable_storage.cpp @@ -48,15 +48,23 @@ namespace serialization TRY_ENTRY(); byte_stream ss; ss.reserve(initial_buffer_size); + store_to_binary(ss); + target = epee::byte_slice{std::move(ss)}; + return true; + CATCH_ENTRY("portable_storage::store_to_binary", false); + } + + bool portable_storage::store_to_binary(byte_stream& ss) + { + TRY_ENTRY(); 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) + CATCH_ENTRY("portable_storage::store_to_binary", false); } bool portable_storage::dump_as_json(std::string& buff, size_t indent, bool insert_newlines) @@ -76,11 +84,6 @@ namespace serialization CATCH_ENTRY("portable_storage::load_from_json", false) } - bool portable_storage::load_from_binary(const std::string& target, const limits_t *limits) - { - return load_from_binary(epee::strspan<uint8_t>(target), limits); - } - bool portable_storage::load_from_binary(const epee::span<const uint8_t> source, const limits_t *limits) { m_root.m_entries.clear(); |