forked from boostorg/beast
Remove detail::bind_default_executor helper
This commit is contained in:
committed by
Mohammad Nejati
parent
3996cae768
commit
667e9ea251
@@ -1,106 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
|
|
||||||
//
|
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
// Official repository: https://github.com/boostorg/beast
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef BOOST_BEAST_CORE_DETAIL_BIND_DEFAULT_EXECUTOR_HPP
|
|
||||||
#define BOOST_BEAST_CORE_DETAIL_BIND_DEFAULT_EXECUTOR_HPP
|
|
||||||
|
|
||||||
#include <boost/asio/associated_allocator.hpp>
|
|
||||||
#include <boost/asio/associated_executor.hpp>
|
|
||||||
#include <boost/asio/dispatch.hpp>
|
|
||||||
#include <boost/asio/executor.hpp>
|
|
||||||
#include <boost/asio/handler_alloc_hook.hpp>
|
|
||||||
#include <boost/asio/handler_continuation_hook.hpp>
|
|
||||||
#include <boost/asio/handler_invoke_hook.hpp>
|
|
||||||
#include <boost/core/empty_value.hpp>
|
|
||||||
#include <utility>
|
|
||||||
|
|
||||||
namespace boost {
|
|
||||||
namespace beast {
|
|
||||||
namespace detail {
|
|
||||||
|
|
||||||
template<class Handler, class Executor>
|
|
||||||
class bind_default_executor_wrapper
|
|
||||||
: private boost::empty_value<Executor>
|
|
||||||
{
|
|
||||||
Handler h_;
|
|
||||||
|
|
||||||
public:
|
|
||||||
template<class Handler_>
|
|
||||||
bind_default_executor_wrapper(
|
|
||||||
Handler_&& h,
|
|
||||||
Executor const& ex)
|
|
||||||
: boost::empty_value<Executor>(
|
|
||||||
boost::empty_init_t{}, ex)
|
|
||||||
, h_(std::forward<Handler_>(h))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class... Args>
|
|
||||||
void
|
|
||||||
operator()(Args&&... args)
|
|
||||||
{
|
|
||||||
h_(std::forward<Args>(args)...);
|
|
||||||
}
|
|
||||||
|
|
||||||
using allocator_type =
|
|
||||||
net::associated_allocator_t<Handler>;
|
|
||||||
|
|
||||||
allocator_type
|
|
||||||
get_allocator() const noexcept
|
|
||||||
{
|
|
||||||
return net::get_associated_allocator(h_);
|
|
||||||
}
|
|
||||||
|
|
||||||
using executor_type =
|
|
||||||
net::associated_executor_t<Handler, Executor>;
|
|
||||||
|
|
||||||
executor_type
|
|
||||||
get_executor() const noexcept
|
|
||||||
{
|
|
||||||
return net::get_associated_executor(
|
|
||||||
h_, this->get());
|
|
||||||
}
|
|
||||||
|
|
||||||
using cancellation_slot_type =
|
|
||||||
net::associated_cancellation_slot_t<Handler>;
|
|
||||||
|
|
||||||
cancellation_slot_type
|
|
||||||
get_cancellation_slot() const noexcept
|
|
||||||
{
|
|
||||||
return net::get_associated_cancellation_slot(h_,
|
|
||||||
net::cancellation_slot());
|
|
||||||
}
|
|
||||||
|
|
||||||
friend
|
|
||||||
bool asio_handler_is_continuation(
|
|
||||||
bind_default_executor_wrapper* p)
|
|
||||||
{
|
|
||||||
using boost::asio::asio_handler_is_continuation;
|
|
||||||
return asio_handler_is_continuation(
|
|
||||||
std::addressof(p->h_));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class Executor, class Handler>
|
|
||||||
auto
|
|
||||||
bind_default_executor(Executor const& ex, Handler&& h) ->
|
|
||||||
bind_default_executor_wrapper<
|
|
||||||
typename std::decay<Handler>::type,
|
|
||||||
Executor>
|
|
||||||
{
|
|
||||||
return bind_default_executor_wrapper<
|
|
||||||
typename std::decay<Handler>::type,
|
|
||||||
Executor>(std::forward<Handler>(h), ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // detail
|
|
||||||
} // beast
|
|
||||||
} // boost
|
|
||||||
|
|
||||||
#endif
|
|
Reference in New Issue
Block a user