20 #include <ripple/net/HTTPStream.h>
26 boost::asio::io_service::strand& strand,
28 : ssl_ctx_(config, j,
boost::asio::ssl::context::tlsv12_client)
33 boost::asio::ip::tcp::socket&
45 boost::asio::yield_context& yield)
48 using namespace boost::beast;
50 boost::system::error_code ec;
52 auto fail = [&errorOut, &ec](
55 errorOut = errorIn +
": " + (message.empty() ? ec.message() : message);
59 ip::tcp::resolver resolver{
strand_.context()};
60 auto const endpoints = resolver.async_resolve(host, port, yield[ec]);
62 return fail(
"async_resolve");
70 return fail(
"exception", e.
what());
75 return fail(
"preConnectVerify");
77 boost::asio::async_connect(
78 stream_->next_layer(), endpoints.begin(), endpoints.end(), yield[ec]);
80 return fail(
"async_connect");
84 return fail(
"postConnectVerify");
86 stream_->async_handshake(ssl::stream_base::client, yield[ec]);
88 return fail(
"async_handshake");
96 boost::asio::yield_context& yield,
97 boost::system::error_code& ec)
99 boost::beast::http::async_write(*
stream_, req, yield[ec]);
104 boost::beast::flat_buffer& buf,
106 boost::asio::yield_context& yield,
107 boost::system::error_code& ec)
109 boost::beast::http::async_read(*
stream_, buf, p, yield[ec]);
114 boost::beast::flat_buffer& buf,
116 boost::asio::yield_context& yield,
117 boost::system::error_code& ec)
119 boost::beast::http::async_read_some(*
stream_, buf, p, yield[ec]);
126 boost::asio::ip::tcp::socket&
138 boost::asio::yield_context& yield)
141 using namespace boost::beast;
143 boost::system::error_code ec;
145 auto fail = [&errorOut, &ec](
148 errorOut = errorIn +
": " + (message.empty() ? ec.message() : message);
152 ip::tcp::resolver resolver{
strand_.context()};
153 auto const endpoints = resolver.async_resolve(host, port, yield[ec]);
155 return fail(
"async_resolve");
163 return fail(
"exception", e.
what());
166 boost::asio::async_connect(
167 *
stream_, endpoints.begin(), endpoints.end(), yield[ec]);
169 return fail(
"async_connect");
177 boost::asio::yield_context& yield,
178 boost::system::error_code& ec)
180 boost::beast::http::async_write(*
stream_, req, yield[ec]);
185 boost::beast::flat_buffer& buf,
187 boost::asio::yield_context& yield,
188 boost::system::error_code& ec)
190 boost::beast::http::async_read(*
stream_, buf, p, yield[ec]);
195 boost::beast::flat_buffer& buf,
197 boost::asio::yield_context& yield,
198 boost::system::error_code& ec)
200 boost::beast::http::async_read_some(*
stream_, buf, p, yield[ec]);