mirror of
https://github.com/boostorg/beast.git
synced 2025-07-31 13:27:33 +02:00
Use dispatch/post free functions to be independent of executor concept
This commit is contained in:
committed by
Richard Hodges
parent
55302a3f8f
commit
aef2559c7a
@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
* Use dispatch/post free functions to be independent of executor concept.
|
||||||
* New name for polymorphic executor. Trait for detecting new executors.
|
* New name for polymorphic executor. Trait for detecting new executors.
|
||||||
* Handler invoke and allocation hooks are deprecated.
|
* Handler invoke and allocation hooks are deprecated.
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
#include <boost/beast/core/buffer_traits.hpp>
|
#include <boost/beast/core/buffer_traits.hpp>
|
||||||
#include <boost/beast/core/detail/service_base.hpp>
|
#include <boost/beast/core/detail/service_base.hpp>
|
||||||
#include <boost/beast/core/detail/is_invocable.hpp>
|
#include <boost/beast/core/detail/is_invocable.hpp>
|
||||||
|
#include <boost/asio/dispatch.hpp>
|
||||||
|
#include <boost/asio/post.hpp>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@ -90,6 +92,13 @@ class stream::read_op : public stream::read_op_base
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using allocator_type = net::associated_allocator_t<Handler>;
|
||||||
|
|
||||||
|
allocator_type get_allocator() const noexcept
|
||||||
|
{
|
||||||
|
return net::get_associated_allocator(h_);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
operator()(error_code ec)
|
operator()(error_code ec)
|
||||||
{
|
{
|
||||||
@ -115,10 +124,9 @@ class stream::read_op : public stream::read_op_base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto alloc = net::get_associated_allocator(h_);
|
net::dispatch(wg2_.get_executor(),
|
||||||
wg2_.get_executor().dispatch(
|
|
||||||
beast::bind_front_handler(std::move(h_),
|
beast::bind_front_handler(std::move(h_),
|
||||||
ec, bytes_transferred), alloc);
|
ec, bytes_transferred));
|
||||||
wg2_.reset();
|
wg2_.reset();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -140,10 +148,8 @@ public:
|
|||||||
void
|
void
|
||||||
operator()(error_code ec) override
|
operator()(error_code ec) override
|
||||||
{
|
{
|
||||||
|
net::post(wg1_.get_executor(),
|
||||||
auto alloc = net::get_associated_allocator(fn_.h_);
|
beast::bind_front_handler(std::move(fn_), ec));
|
||||||
wg1_.get_executor().post(
|
|
||||||
beast::bind_front_handler(std::move(fn_), ec), alloc);
|
|
||||||
wg1_.reset();
|
wg1_.reset();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user