21#include <boost/asio/ip/tcp.hpp>
22#include <boost/asio/ssl/stream.hpp>
23#include <boost/system/error_code.hpp>
25namespace boostssl = boost::asio::ssl;
27template<
class Stream = boostssl::stream<boost::asio::ip::tcp::socket>>
31 explicit SslSocket(boost::asio::ip::tcp::socket&& socket, boost::asio::ssl::context& sslContext) :
_sslSocket(
std::move(socket), sslContext)
33 _sslSocket.set_verify_mode(boostssl::verify_none);
37 void close(boost::system::error_code& error)
42 void shutdown(boost::asio::socket_base::shutdown_type what, boost::system::error_code& shutdownError)
45 _sslSocket.lowest_layer().shutdown(what, shutdownError);
48 template<
typename MutableBufferSequence,
typename ReadHandlerType>
49 void async_read_some(MutableBufferSequence
const& buffers, ReadHandlerType&& handler)
51 _sslSocket.async_read_some(buffers, std::move(handler));
54 template<
typename ConstBufferSequence,
typename WriteHandlerType>
57 _sslSocket.async_write_some(buffers, std::move(handler));
60 template<
typename ConstBufferSequence>
61 std::size_t
write_some(ConstBufferSequence
const& buffers, boost::system::error_code& error)
66 template<
typename SettableSocketOption>
67 void set_option(SettableSocketOption
const& option, boost::system::error_code& error)
69 _sslSocket.lowest_layer().set_option(option, error);
74 return _sslSocket.lowest_layer().remote_endpoint();
78 template<
typename HandshakeHandlerType>
79 void async_handshake(boostssl::stream_base::handshake_type type, HandshakeHandlerType&& handler)
81 _sslSocket.async_handshake(type, std::move(handler));
boost::asio::ip::tcp::socket::endpoint_type remote_endpoint() const
SslSocket(boost::asio::ip::tcp::socket &&socket, boost::asio::ssl::context &sslContext)
void close(boost::system::error_code &error)
void async_handshake(boostssl::stream_base::handshake_type type, HandshakeHandlerType &&handler)
void async_write_some(ConstBufferSequence const &buffers, WriteHandlerType &&handler)
void set_option(SettableSocketOption const &option, boost::system::error_code &error)
void shutdown(boost::asio::socket_base::shutdown_type what, boost::system::error_code &shutdownError)
std::size_t write_some(ConstBufferSequence const &buffers, boost::system::error_code &error)
void async_read_some(MutableBufferSequence const &buffers, ReadHandlerType &&handler)