Remove detail::bind_default_executor helper

This commit is contained in:
Mohammad
2023-10-26 08:05:55 +00:00
committed by Mohammad Nejati
parent 3996cae768
commit 667e9ea251

View File

@@ -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