3#include <xrpl/beast/utility/instrumentation.h>
5#include <boost/asio/buffer.hpp>
7#include <google/protobuf/io/zero_copy_stream.h>
20template <
class Buffers>
36 Next(
void const** data,
int* size)
override;
39 BackUp(
int count)
override;
42 Skip(
int count)
override;
53template <
class Buffers>
55 :
last_(buffers.end())
61template <
class Buffers>
66 *size = boost::asio::buffer_size(
pos_);
74template <
class Buffers>
83template <
class Buffers>
91 auto const size = boost::asio::buffer_size(
pos_);
114template <
class Streambuf>
135 Next(
void** data,
int* size)
override;
138 BackUp(
int count)
override;
149template <
class Streambuf>
158template <
class Streambuf>
165template <
class Streambuf>
181 *data = *
pos_.data();
182 *size = boost::asio::buffer_size(*
pos_);
188template <
class Streambuf>
192 XRPL_ASSERT(count <=
commit_,
"xrpl::ZeroCopyOutputStream::BackUp : valid input");
193 auto const n =
commit_ - count;
std::int64_t ByteCount() const override
void BackUp(int count) override
boost::asio::mutable_buffer mutable_buffer
ZeroCopyOutputStream(Streambuf &streambuf, std::size_t blockSize)
buffers_type::const_iterator iterator
~ZeroCopyOutputStream() 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.