20 #ifndef RIPPLE_NET_HTTPSTREAM_H_INCLUDED
21 #define RIPPLE_NET_HTTPSTREAM_H_INCLUDED
23 #include <ripple/core/Config.h>
24 #include <ripple/net/HTTPClientSSLContext.h>
26 #include <boost/asio/spawn.hpp>
27 #include <boost/asio/strand.hpp>
28 #include <boost/beast/core.hpp>
29 #include <boost/beast/http.hpp>
36 using request = boost::beast::http::request<boost::beast::http::empty_body>;
37 using parser = boost::beast::http::basic_parser<false>;
45 boost::asio::io_service::strand& strand,
48 return std::make_unique<T>(config, strand, j);
51 [[nodiscard]]
virtual boost::asio::ip::tcp::socket&
54 [[nodiscard]]
virtual bool
59 boost::asio::yield_context& yield) = 0;
64 boost::asio::yield_context& yield,
65 boost::system::error_code& ec) = 0;
69 boost::beast::flat_buffer& buf,
72 boost::asio::yield_context& yield,
73 boost::system::error_code& ec) = 0;
81 boost::asio::io_service::strand& strand,
86 boost::asio::ip::tcp::socket&
94 boost::asio::yield_context& yield)
override;
99 boost::asio::yield_context& yield,
100 boost::system::error_code& ec)
override;
104 boost::beast::flat_buffer& buf,
107 boost::asio::yield_context& yield,
108 boost::system::error_code& ec)
override;
112 boost::optional<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>
122 boost::asio::io_service::strand& strand,
127 boost::asio::ip::tcp::socket&
135 boost::asio::yield_context& yield)
override;
140 boost::asio::yield_context& yield,
141 boost::system::error_code& ec)
override;
145 boost::beast::flat_buffer& buf,
148 boost::asio::yield_context& yield,
149 boost::system::error_code& ec)
override;
152 boost::optional<boost::asio::ip::tcp::socket>
stream_;
158 #endif // RIPPLE_NET_HTTPSTREAM_H