xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
server
SimpleWriter.h
1
#pragma once
2
3
#include <xrpl/server/Writer.h>
4
5
#include <boost/beast/core/multi_buffer.hpp>
6
#include <boost/beast/core/ostream.hpp>
7
#include <boost/beast/http/message.hpp>
8
#include <boost/beast/http/write.hpp>
9
10
#include <
cstddef
>
11
#include <
functional
>
12
#include <
iterator
>
13
#include <
vector
>
14
15
namespace
xrpl
{
16
20
class
SimpleWriter
:
public
Writer
21
{
22
boost::beast::multi_buffer
sb_
;
23
24
public
:
25
template
<
bool
IsRequest,
class
Body,
class
Fields>
26
explicit
SimpleWriter
(boost::beast::http::message<IsRequest, Body, Fields>
const
& msg)
27
{
28
boost::beast::ostream(
sb_
) << msg;
29
}
30
31
bool
32
complete
()
override
33
{
34
return
sb_
.size() == 0;
35
}
36
37
void
38
consume
(
std::size_t
bytes)
override
39
{
40
sb_
.consume(bytes);
41
}
42
43
bool
44
prepare
(
std::size_t
bytes,
std::function
<
void
(
void
)>)
override
45
{
46
return
true
;
47
}
48
49
std::vector<boost::asio::const_buffer>
50
data
()
override
51
{
52
auto
const
& buf =
sb_
.data();
53
std::vector<boost::asio::const_buffer>
result;
54
result.
reserve
(
std::distance
(buf.begin(), buf.end()));
55
for
(
auto
const
b : buf)
56
result.
emplace_back
(b);
57
return
result;
58
}
59
};
60
61
}
// namespace xrpl
xrpl::SimpleWriter::SimpleWriter
SimpleWriter(boost::beast::http::message< IsRequest, Body, Fields > const &msg)
Definition
SimpleWriter.h:26
xrpl::SimpleWriter::consume
void consume(std::size_t bytes) override
Removes bytes from the input sequence.
Definition
SimpleWriter.h:38
xrpl::SimpleWriter::complete
bool complete() override
Returns true if there is no more data to pull.
Definition
SimpleWriter.h:32
xrpl::SimpleWriter::prepare
bool prepare(std::size_t bytes, std::function< void(void)>) override
Add data to the input sequence.
Definition
SimpleWriter.h:44
xrpl::SimpleWriter::data
std::vector< boost::asio::const_buffer > data() override
Returns a ConstBufferSequence representing the input sequence.
Definition
SimpleWriter.h:50
xrpl::SimpleWriter::sb_
boost::beast::multi_buffer sb_
Definition
SimpleWriter.h:22
xrpl::Writer
Definition
server/Writer.h:12
cstddef
std::distance
T distance(T... args)
std::vector::emplace_back
T emplace_back(T... args)
std::function
functional
iterator
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
std::vector::reserve
T reserve(T... args)
std::size_t
vector
Generated by
1.17.0