Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions include/twisted/detail/sockets.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@

#include <boost/asio/io_service.hpp>
#include <boost/asio/ip/tcp.hpp>
#ifdef TWISTEDCPP_NEED_SSL
#include <boost/asio/ssl.hpp>
#endif
#include <boost/asio/spawn.hpp>
#include <boost/asio/read.hpp>
#include <boost/asio/write.hpp>

namespace twisted {

Expand Down Expand Up @@ -72,9 +75,16 @@ class tcp_socket : public socket_base {

virtual void close() { _socket.close(); }

#if BOOST_VERSION >= 107000
virtual boost::asio::io_context& get_io_service() {
return ((boost::asio::io_context&)_socket.get_executor().context());
}

#else
virtual boost::asio::io_service& get_io_service() {
return _socket.get_io_service();
}
#endif

boost::asio::ip::tcp::socket& lowest_layer() { return _socket; }

Expand All @@ -84,6 +94,7 @@ class tcp_socket : public socket_base {
boost::asio::ip::tcp::socket _socket;
};

#ifdef TWISTEDCPP_NEED_SSL
class ssl_socket : public socket_base {
public:
ssl_socket(boost::asio::io_service& io_service,
Expand Down Expand Up @@ -143,6 +154,7 @@ class ssl_socket : public socket_base {
private:
boost::asio::ssl::stream<boost::asio::ip::tcp::socket> _socket;
};
#endif
} // namespace detail

} // namespace twisted
Expand Down
6 changes: 6 additions & 0 deletions include/twisted/reactor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
#define TWISTEDCPP_REACTOR_HPP

#include "detail/sockets.hpp"
#ifdef TWISTEDCPP_NEED_SSL
#include "ssl_options.hpp"
#endif

#include <boost/asio/io_service.hpp>
#include <boost/asio/ip/tcp.hpp>
Expand Down Expand Up @@ -64,6 +66,7 @@ class reactor {
* href="http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/reference/ssl__context.html">boost::asio
* ssl context</a> - sets the ssl/tls options
*/
#ifdef TWISTEDCPP_NEED_SSL
template <typename ProtocolType, typename... Args>
void listen_ssl(int port, ssl_options&& ssl_opts, Args&&... args) {
std::shared_ptr<ssl_options> ssl_opts_ptr // move capture
Expand All @@ -74,6 +77,7 @@ class reactor {
ssl_impl<ProtocolType>(acceptor, yield, ssl_opts_ptr, std::forward<Args>(args)...);
});
}
#endif

private:
template <typename ProtocolType, typename... Args>
Expand All @@ -87,6 +91,7 @@ class reactor {
run_loop<ProtocolType>(acceptor, yield, socket_factory, std::forward<Args>(args)...);
}

#ifdef TWISTEDCPP_NEED_SSL
template <typename ProtocolType, typename... Args>
void ssl_impl(boost::asio::ip::tcp::acceptor& acceptor,
boost::asio::yield_context yield,
Expand All @@ -98,6 +103,7 @@ class reactor {

run_loop<ProtocolType>(acceptor, yield, socket_factory, std::forward<Args>(args)...);
}
#endif

template <typename ProtocolType, typename SocketFactory, typename... Args>
void run_loop(boost::asio::ip::tcp::acceptor& acceptor,
Expand Down