3#include <xrpl/beast/utility/instrumentation.h>
5#include <boost/asio/buffer.hpp>
7#include <google/protobuf/io/zero_copy_stream.h>
16template <
class Buffers>
32 Next(
void const** data,
int* size)
override;
35 BackUp(
int count)
override;
38 Skip(
int count)
override;
40 [[nodiscard]] google::protobuf::int64
49template <
class Buffers>
51 :
last_(buffers.end())
57template <
class Buffers>
62 *size = boost::asio::buffer_size(
pos_);
70template <
class Buffers>
79template <
class Buffers>
87 auto const size = boost::asio::buffer_size(
pos_);
109template <
class Streambuf>
130 Next(
void** data,
int* size)
override;
133 BackUp(
int count)
override;
135 [[nodiscard]] google::protobuf::int64
144template <
class Streambuf>
153template <
class Streambuf>
160template <
class Streambuf>
176 *data = *
pos_.data();
177 *size = boost::asio::buffer_size(*
pos_);
183template <
class Streambuf>
187 XRPL_ASSERT(count <=
commit_,
"xrpl::ZeroCopyOutputStream::BackUp : valid input");
188 auto const n =
commit_ - count;
void BackUp(int count) override
google::protobuf::int64 count_
boost::asio::mutable_buffer mutable_buffer
ZeroCopyOutputStream(Streambuf &streambuf, std::size_t blockSize)
buffers_type::const_iterator iterator
~ZeroCopyOutputStream() override
google::protobuf::int64 ByteCount() const override
Streambuf::mutable_buffers_type buffers_type
bool Next(void **data, int *size) override
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.