46 asio::io_context& get_io_context()
48 return GET_IO_CONTEXT(socket_);
63 tcp::endpoint remote_endpoint()
const
65 return socket_.remote_endpoint();
68 std::string address()
const
70 return socket_.remote_endpoint().address().to_string();
75 return socket_.is_open();
84 void shutdown_readwrite()
87 socket_.shutdown(asio::socket_base::shutdown_type::shutdown_both, ec);
93 socket_.shutdown(asio::socket_base::shutdown_type::shutdown_send, ec);
99 socket_.shutdown(asio::socket_base::shutdown_type::shutdown_receive, ec);
113 using context = void;
119 asio::io_context& get_io_context()
121 return GET_IO_CONTEXT(socket_);
124 stream_protocol::socket& raw_socket()
129 stream_protocol::socket& socket()
134 stream_protocol::endpoint remote_endpoint()
136 return socket_.local_endpoint();
139 std::string address()
const
146 return socket_.is_open();
155 void shutdown_readwrite()
158 socket_.shutdown(asio::socket_base::shutdown_type::shutdown_both, ec);
161 void shutdown_write()
164 socket_.shutdown(asio::socket_base::shutdown_type::shutdown_send, ec);
170 socket_.shutdown(asio::socket_base::shutdown_type::shutdown_receive, ec);
179 stream_protocol::socket socket_;
185 using context = asio::ssl::context;
186 using ssl_socket_t = asio::ssl::stream<tcp::socket>;
187 SSLAdaptor(asio::io_context& io_context, context* ctx):
188 ssl_socket_(
new ssl_socket_t(io_context, *ctx))
191 asio::ssl::stream<tcp::socket>& socket()
196 tcp::socket::lowest_layer_type&
199 return ssl_socket_->lowest_layer();
202 tcp::endpoint remote_endpoint()
204 return raw_socket().remote_endpoint();
207 std::string address()
const
209 return ssl_socket_->lowest_layer().remote_endpoint().address().to_string();
214 return ssl_socket_ ? raw_socket().is_open() :
false;
222 raw_socket().close(ec);
226 void shutdown_readwrite()
231 raw_socket().shutdown(asio::socket_base::shutdown_type::shutdown_both, ec);
235 void shutdown_write()
240 raw_socket().shutdown(asio::socket_base::shutdown_type::shutdown_send, ec);
249 raw_socket().shutdown(asio::socket_base::shutdown_type::shutdown_receive, ec);
253 asio::io_context& get_io_context()
255 return GET_IO_CONTEXT(raw_socket());
261 ssl_socket_->async_handshake(asio::ssl::stream_base::server,
262 [f](
const error_code& ec) {
267 std::unique_ptr<asio::ssl::stream<tcp::socket>> ssl_socket_;
tcp::socket & raw_socket()
Get the TCP socket handling data transfers, regardless of what layer is handling transfers on top of ...
Definition socket_adaptors.h:52