Use bind_front_handler:

The implementation uses bind_front_handler to reduce the
resources consumed when instantiating templates during
compilation.
This commit is contained in:
Vinnie Falco
2018-11-21 11:29:10 -08:00
parent d581bcc348
commit 15dd535c24
12 changed files with 29 additions and 25 deletions

View File

@ -1,6 +1,7 @@
Version 191: Version 191:
* Add bind_front_handler * Add bind_front_handler
* Use bind_front_handler
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

View File

@ -424,7 +424,8 @@ operator()(boost::beast::error_code ec, std::size_t bytes_transferred)
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post( boost::asio::post(
stream_.get_executor(), stream_.get_executor(),
beast::bind_handler(std::move(*this), ec, 0)); beast::bind_front_handler(
std::move(*this), ec, 0));
} }
else else
{ {

View File

@ -263,7 +263,7 @@ async_read_some(
if(in_->fc->fail(ec)) if(in_->fc->fail(ec))
return boost::asio::post( return boost::asio::post(
in_->ioc.get_executor(), in_->ioc.get_executor(),
bind_handler( bind_front_handler(
std::move(init.completion_handler), std::move(init.completion_handler),
ec, ec,
0)); 0));
@ -281,7 +281,7 @@ async_read_some(
++in_->nread; ++in_->nread;
boost::asio::post( boost::asio::post(
in_->ioc.get_executor(), in_->ioc.get_executor(),
bind_handler( bind_front_handler(
std::move(init.completion_handler), std::move(init.completion_handler),
error_code{}, error_code{},
bytes_transferred)); bytes_transferred));
@ -297,7 +297,7 @@ async_read_some(
ec = boost::asio::error::connection_reset; ec = boost::asio::error::connection_reset;
boost::asio::post( boost::asio::post(
in_->ioc.get_executor(), in_->ioc.get_executor(),
bind_handler( bind_front_handler(
std::move(init.completion_handler), std::move(init.completion_handler),
ec, ec,
0)); 0));
@ -380,7 +380,7 @@ async_write_some(ConstBufferSequence const& buffers,
if(! out) if(! out)
return boost::asio::post( return boost::asio::post(
in_->ioc.get_executor(), in_->ioc.get_executor(),
bind_handler( bind_front_handler(
std::move(init.completion_handler), std::move(init.completion_handler),
boost::asio::error::connection_reset, boost::asio::error::connection_reset,
0)); 0));
@ -391,7 +391,7 @@ async_write_some(ConstBufferSequence const& buffers,
if(in_->fc->fail(ec)) if(in_->fc->fail(ec))
return boost::asio::post( return boost::asio::post(
in_->ioc.get_executor(), in_->ioc.get_executor(),
bind_handler( bind_front_handler(
std::move(init.completion_handler), std::move(init.completion_handler),
ec, ec,
0)); 0));
@ -407,7 +407,7 @@ async_write_some(ConstBufferSequence const& buffers,
++in_->nwrite; ++in_->nwrite;
boost::asio::post( boost::asio::post(
in_->ioc.get_executor(), in_->ioc.get_executor(),
bind_handler( bind_front_handler(
std::move(init.completion_handler), std::move(init.completion_handler),
error_code{}, error_code{},
bytes_transferred)); bytes_transferred));
@ -447,7 +447,7 @@ TeardownHandler&& handler)
s.in_->fc->fail(ec)) s.in_->fc->fail(ec))
return boost::asio::post( return boost::asio::post(
s.get_executor(), s.get_executor(),
bind_handler(std::move(handler), ec)); bind_front_handler(std::move(handler), ec));
s.close(); s.close();
if( s.in_->fc && if( s.in_->fc &&
s.in_->fc->fail(ec)) s.in_->fc->fail(ec))
@ -457,7 +457,7 @@ TeardownHandler&& handler)
boost::asio::post( boost::asio::post(
s.get_executor(), s.get_executor(),
bind_handler(std::move(handler), ec)); bind_front_handler(std::move(handler), ec));
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -513,7 +513,7 @@ class stream::read_op : public stream::read_op_base
++s.nread; ++s.nread;
boost::asio::post( boost::asio::post(
s.ioc.get_executor(), s.ioc.get_executor(),
bind_handler( bind_front_handler(
std::move(h), std::move(h),
error_code{}, error_code{},
bytes_transferred)); bytes_transferred));
@ -532,7 +532,7 @@ class stream::read_op : public stream::read_op_base
ec = boost::asio::error::connection_reset; ec = boost::asio::error::connection_reset;
boost::asio::post( boost::asio::post(
s.ioc.get_executor(), s.ioc.get_executor(),
bind_handler(std::move(h), ec, 0)); bind_front_handler(std::move(h), ec, 0));
} }
} }
}; };

View File

@ -126,7 +126,7 @@ read_some_op<MutableBufferSequence, Handler>::operator()(
step_ = 3; step_ = 3;
return boost::asio::post( return boost::asio::post(
s_.get_executor(), s_.get_executor(),
bind_handler(std::move(*this), ec, 0)); bind_front_handler(std::move(*this), ec, 0));
case 1: case 1:
// upcall // upcall

View File

@ -7,8 +7,8 @@
// Official repository: https://github.com/boostorg/beast // Official repository: https://github.com/boostorg/beast
// //
#ifndef BOOST_BEAST_HTTP_IMPL_READ_IPP_HPP #ifndef BOOST_BEAST_HTTP_IMPL_READ_IPP
#define BOOST_BEAST_HTTP_IMPL_READ_IPP_HPP #define BOOST_BEAST_HTTP_IMPL_READ_IPP
#include <boost/beast/http/type_traits.hpp> #include <boost/beast/http/type_traits.hpp>
#include <boost/beast/http/error.hpp> #include <boost/beast/http/error.hpp>
@ -182,7 +182,7 @@ operator()(
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post( boost::asio::post(
s_.get_executor(), s_.get_executor(),
bind_handler(std::move(*this), bind_front_handler(std::move(*this),
ec, bytes_transferred_)); ec, bytes_transferred_));
} }
h_(ec, bytes_transferred_); h_(ec, bytes_transferred_);
@ -305,7 +305,7 @@ operator()(
{ {
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post(s_.get_executor(), boost::asio::post(s_.get_executor(),
bind_handler(std::move(*this), ec)); bind_front_handler(std::move(*this), ec));
goto upcall; goto upcall;
} }
for(;;) for(;;)

View File

@ -147,7 +147,7 @@ operator()()
BOOST_ASSERT(! f.invoked); BOOST_ASSERT(! f.invoked);
return boost::asio::post( return boost::asio::post(
s_.get_executor(), s_.get_executor(),
bind_handler(std::move(*this), ec, 0)); bind_front_handler(std::move(*this), ec, 0));
} }
if(f.invoked) if(f.invoked)
{ {
@ -160,7 +160,7 @@ operator()()
} }
return boost::asio::post( return boost::asio::post(
s_.get_executor(), s_.get_executor(),
bind_handler(std::move(*this), ec, 0)); bind_front_handler(std::move(*this), ec, 0));
} }
template< template<

View File

@ -269,7 +269,7 @@ operator()(error_code ec, std::size_t)
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post( boost::asio::post(
d.ws.get_executor(), d.ws.get_executor(),
bind_handler(std::move(*this), ec)); bind_front_handler(std::move(*this), ec));
} }
else else
{ {

View File

@ -304,7 +304,7 @@ operator()(
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post( boost::asio::post(
d.ws.get_executor(), d.ws.get_executor(),
bind_handler(std::move(*this), ec)); bind_front_handler(std::move(*this), ec));
} }
{ {
auto wg = std::move(d.wg); auto wg = std::move(d.wg);

View File

@ -140,7 +140,7 @@ operator()(error_code ec, std::size_t)
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post( boost::asio::post(
d.ws.get_executor(), d.ws.get_executor(),
bind_handler(std::move(*this), ec)); bind_front_handler(std::move(*this), ec));
goto upcall; goto upcall;
} }
} }

View File

@ -705,7 +705,7 @@ operator()(
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post( boost::asio::post(
ws_.get_executor(), ws_.get_executor(),
bind_handler(std::move(*this), bind_front_handler(std::move(*this),
ec, bytes_written_)); ec, bytes_written_));
} }
h_(ec, bytes_written_); h_(ec, bytes_written_);
@ -813,7 +813,7 @@ operator()(
if(ec) if(ec)
boost::asio::post( boost::asio::post(
ws_.get_executor(), ws_.get_executor(),
bind_handler( bind_front_handler(
std::move(*this), ec, 0)); std::move(*this), ec, 0));
else else
read_some_op<typename read_some_op<typename

View File

@ -118,7 +118,7 @@ operator()(error_code ec, std::size_t bytes_transferred)
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post( boost::asio::post(
s_.get_executor(), s_.get_executor(),
bind_handler(std::move(*this), ec, 0)); bind_front_handler(std::move(*this), ec, 0));
goto upcall; goto upcall;
} }
for(;;) for(;;)

View File

@ -578,7 +578,9 @@ operator()(
BOOST_ASIO_CORO_YIELD BOOST_ASIO_CORO_YIELD
boost::asio::post( boost::asio::post(
ws_.get_executor(), ws_.get_executor(),
bind_handler(std::move(*this), ec, bytes_transferred_)); bind_front_handler(
std::move(*this),
ec, bytes_transferred_));
} }
h_(ec, bytes_transferred_); h_(ec, bytes_transferred_);
} }