xrpld
Loading...
Searching...
No Matches
xrpl::ZeroCopyOutputStream< Streambuf > Class Template Reference

Implements ZeroCopyOutputStream around a Streambuf. More...

#include <ZeroCopyStream.h>

Inheritance diagram for xrpl::ZeroCopyOutputStream< Streambuf >:
Collaboration diagram for xrpl::ZeroCopyOutputStream< Streambuf >:

Public Member Functions

 ZeroCopyOutputStream (Streambuf &streambuf, std::size_t blockSize)
 ~ZeroCopyOutputStream () override
bool Next (void **data, int *size) override
void BackUp (int count) override
google::protobuf::int64 ByteCount () const override

Private Types

using buffers_type = Streambuf::mutable_buffers_type
using iterator = buffers_type::const_iterator
using mutable_buffer = boost::asio::mutable_buffer

Private Attributes

Streambuf & streambuf_
std::size_t blockSize_
google::protobuf::int64 count_ = 0
std::size_t commit_ = 0
buffers_type buffers_
iterator pos_

Detailed Description

template<class Streambuf>
class xrpl::ZeroCopyOutputStream< Streambuf >

Implements ZeroCopyOutputStream around a Streambuf.

Streambuf matches the public interface defined by boost::asio::streambuf.

Template Parameters
StreambufA type meeting the requirements of Streambuf.

Definition at line 110 of file ZeroCopyStream.h.

Member Typedef Documentation

◆ buffers_type

template<class Streambuf>
using xrpl::ZeroCopyOutputStream< Streambuf >::buffers_type = Streambuf::mutable_buffers_type
private

Definition at line 113 of file ZeroCopyStream.h.

◆ iterator

template<class Streambuf>
using xrpl::ZeroCopyOutputStream< Streambuf >::iterator = buffers_type::const_iterator
private

Definition at line 114 of file ZeroCopyStream.h.

◆ mutable_buffer

template<class Streambuf>
using xrpl::ZeroCopyOutputStream< Streambuf >::mutable_buffer = boost::asio::mutable_buffer
private

Definition at line 115 of file ZeroCopyStream.h.

Constructor & Destructor Documentation

◆ ZeroCopyOutputStream()

template<class Streambuf>
xrpl::ZeroCopyOutputStream< Streambuf >::ZeroCopyOutputStream ( Streambuf & streambuf,
std::size_t blockSize )
explicit

Definition at line 145 of file ZeroCopyStream.h.

◆ ~ZeroCopyOutputStream()

template<class Streambuf>
xrpl::ZeroCopyOutputStream< Streambuf >::~ZeroCopyOutputStream ( )
override

Definition at line 154 of file ZeroCopyStream.h.

Member Function Documentation

◆ Next()

template<class Streambuf>
bool xrpl::ZeroCopyOutputStream< Streambuf >::Next ( void ** data,
int * size )
override

Definition at line 162 of file ZeroCopyStream.h.

◆ BackUp()

template<class Streambuf>
void xrpl::ZeroCopyOutputStream< Streambuf >::BackUp ( int count)
override

Definition at line 185 of file ZeroCopyStream.h.

◆ ByteCount()

template<class Streambuf>
google::protobuf::int64 xrpl::ZeroCopyOutputStream< Streambuf >::ByteCount ( ) const
nodiscardoverride

Definition at line 136 of file ZeroCopyStream.h.

Member Data Documentation

◆ streambuf_

template<class Streambuf>
Streambuf& xrpl::ZeroCopyOutputStream< Streambuf >::streambuf_
private

Definition at line 117 of file ZeroCopyStream.h.

◆ blockSize_

template<class Streambuf>
std::size_t xrpl::ZeroCopyOutputStream< Streambuf >::blockSize_
private

Definition at line 118 of file ZeroCopyStream.h.

◆ count_

template<class Streambuf>
google::protobuf::int64 xrpl::ZeroCopyOutputStream< Streambuf >::count_ = 0
private

Definition at line 119 of file ZeroCopyStream.h.

◆ commit_

template<class Streambuf>
std::size_t xrpl::ZeroCopyOutputStream< Streambuf >::commit_ = 0
private

Definition at line 120 of file ZeroCopyStream.h.

◆ buffers_

template<class Streambuf>
buffers_type xrpl::ZeroCopyOutputStream< Streambuf >::buffers_
private

Definition at line 121 of file ZeroCopyStream.h.

◆ pos_

template<class Streambuf>
iterator xrpl::ZeroCopyOutputStream< Streambuf >::pos_
private

Definition at line 122 of file ZeroCopyStream.h.