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