rippled
Loading...
Searching...
No Matches
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 <utility>
11
12namespace xrpl {
13
15class SimpleWriter : public Writer
16{
17 boost::beast::multi_buffer sb_;
18
19public:
20 template <bool isRequest, class Body, class Fields>
21 explicit SimpleWriter(boost::beast::http::message<isRequest, Body, Fields> const& msg)
22 {
23 boost::beast::ostream(sb_) << msg;
24 }
25
26 bool
27 complete() override
28 {
29 return sb_.size() == 0;
30 }
31
32 void
33 consume(std::size_t bytes) override
34 {
35 sb_.consume(bytes);
36 }
37
38 bool
39 prepare(std::size_t bytes, std::function<void(void)>) override
40 {
41 return true;
42 }
43
45 data() override
46 {
47 auto const& buf = sb_.data();
49 result.reserve(std::distance(buf.begin(), buf.end()));
50 for (auto const b : buf)
51 result.push_back(b);
52 return result;
53 }
54};
55
56} // namespace xrpl
Deprecated: Writer that serializes a HTTP/1 message.
void consume(std::size_t bytes) override
Removes bytes from the input sequence.
bool complete() override
Returns true if there is no more data to pull.
bool prepare(std::size_t bytes, std::function< void(void)>) override
Add data to the input sequence.
std::vector< boost::asio::const_buffer > data() override
Returns a ConstBufferSequence representing the input sequence.
boost::beast::multi_buffer sb_
SimpleWriter(boost::beast::http::message< isRequest, Body, Fields > const &msg)
T distance(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
T push_back(T... args)
T reserve(T... args)