asio: support boost-1.70

In boost 1.70, deprecated get_io_context() has finally been removed.
Introduce GET_IO_SERVICE macro that based on boost version uses
old get_io_service() interface (boost < 1.70), or get_executor().context()
for boost 1.70+.

Commit based idea seen in monero-project/monero@17769db946
This commit is contained in:
Adam Gołębiowski 2019-04-18 12:35:54 +02:00
parent e86d1378da
commit cbba1ebf8f
1 changed files with 8 additions and 2 deletions

View File

@ -51,6 +51,12 @@
#include "util.h" #include "util.h"
#include "template.h" #include "template.h"
#if BOOST_VERSION >= 107000
#define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context())
#else
#define GET_IO_SERVICE(s) ((s).get_io_service())
#endif
namespace nghttp2 { namespace nghttp2 {
namespace asio_http2 { namespace asio_http2 {
@ -71,7 +77,7 @@ public:
SocketArgs &&... args) SocketArgs &&... args)
: socket_(std::forward<SocketArgs>(args)...), : socket_(std::forward<SocketArgs>(args)...),
mux_(mux), mux_(mux),
deadline_(socket_.get_io_service()), deadline_(GET_IO_SERVICE(socket_)),
tls_handshake_timeout_(tls_handshake_timeout), tls_handshake_timeout_(tls_handshake_timeout),
read_timeout_(read_timeout), read_timeout_(read_timeout),
writing_(false), writing_(false),
@ -82,7 +88,7 @@ public:
boost::system::error_code ec; boost::system::error_code ec;
handler_ = std::make_shared<http2_handler>( handler_ = std::make_shared<http2_handler>(
socket_.get_io_service(), socket_.lowest_layer().remote_endpoint(ec), GET_IO_SERVICE(socket_), socket_.lowest_layer().remote_endpoint(ec),
[this]() { do_write(); }, mux_); [this]() { do_write(); }, mux_);
if (handler_->start() != 0) { if (handler_->start() != 0) {
stop(); stop();