Commit Graph

2704 Commits

Author SHA1 Message Date
Christopher Kohlhoff
fa5497f92a Fix compilation in MSVC's non-permissive mode. 2020-07-02 13:40:35 +10:00
Christopher Kohlhoff
aa11542e38 Add bulk_execute() to thread_pool executor. 2020-07-01 23:32:14 +10:00
Christopher Kohlhoff
9174724d04 Add execution::bulk_execute customisation point object. 2020-07-01 23:06:23 +10:00
Christopher Kohlhoff
f5c3c0bc46 Add adapter for execution::blocking_t::always_t. 2020-07-01 21:12:50 +10:00
Christopher Kohlhoff
672025bdf8 Add adapter for execution::blocking_adaptation_t::allowed_t. 2020-07-01 20:45:10 +10:00
Christopher Kohlhoff
b3f1f4e46e Limit variadic expansion for use_future's std::tuple support. 2020-07-01 13:02:04 +10:00
Christopher Kohlhoff
2442078aa1 Explicitly delete copy construction and assignment for derived socket classes. 2020-07-01 13:02:04 +10:00
Christopher Kohlhoff
c9dde400d2 Add execution::context_t::polymorphic_query_result_type. 2020-07-01 12:19:22 +10:00
Christopher Kohlhoff
270595334f Add execution::typed_sender concept and execution::is_typed_sender trait. 2020-07-01 12:19:22 +10:00
Christopher Kohlhoff
46c66fa69a Use correct allocator type in system_executor dispatch/post. 2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
07df1f3561 Add missing equality_comparable trait for strand<>. 2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
74b4e98f16 Add missing equality_comparable trait for execution::any_executor. 2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
4fd49a1e93 Add missing equality_comparable trait for system_executor. 2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
6c06d48c3e Add missing equality_comparable trait for io_context executors. 2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
94fbe6d505 Add scheduler and sender support to thread_pool.
The thread_pool::basic_executor_type class template is used as the
implementation for both the scheduler and sender types.
2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
27571e12bf Make properties applicable to executors, senders, and schedulers. 2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
cf1ce42128 Fix documentation for execution::prefer_only. 2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
712ea05b43 Add execution::scheduler concept and execution::is_scheduler trait. 2020-06-30 22:38:46 +10:00
Christopher Kohlhoff
efcb6573c9 Add execution::executor_index trait. 2020-06-30 22:37:44 +10:00
Christopher Kohlhoff
04a4e491dd Add execution::executor_shape trait. 2020-06-30 22:37:44 +10:00
Christopher Kohlhoff
e82bbef4df Add execution::schedule() customisation point object. 2020-06-30 22:37:44 +10:00
Christopher Kohlhoff
115b3b111d Add execution::execute() support for adapting senders. 2020-06-30 22:37:44 +10:00
Christopher Kohlhoff
d4afc16918 Add execution::submit() customisation point object. 2020-06-30 22:37:44 +10:00
Christopher Kohlhoff
56409abe01 Change execution::sender_traits to recognise executors as senders. 2020-06-30 22:37:44 +10:00
Christopher Kohlhoff
a451ec4ad0 Add execution::sender_to concept and execution::is_sender_to trait. 2020-06-30 22:14:40 +10:00
Christopher Kohlhoff
a3db254de7 Add execution::connect() customisation point object. 2020-06-30 22:14:40 +10:00
Christopher Kohlhoff
9b29e75a43 Add execution::receiver_invocation_error exception. 2020-06-30 22:04:39 +10:00
Christopher Kohlhoff
08af3e76bf Add execution::sender concepts and traits.
This change adds the concept:

  * execution::sender

the traits:

  * execution::sender_traits

and the tag type:

  * execution::sender_base

It also adds the following traits that correspond to the concepts:

  * execution::is_sender
2020-06-30 22:04:39 +10:00
Christopher Kohlhoff
4a5a7c5c0e Add execution::operation_state concept and execution::is_operation_state trait. 2020-06-30 22:04:39 +10:00
Christopher Kohlhoff
1a5fa59815 Add execution::start() customisation point object. 2020-06-30 22:04:39 +10:00
Christopher Kohlhoff
a2e718da65 Add execution::executor_of concept and execution::is_executor trait. 2020-06-30 22:04:39 +10:00
Christopher Kohlhoff
afff66d73e Add execution::receiver concepts and traits.
This change adds the concepts:

  * execution::receiver
  * execution::receiver_of

and the trait:

  * execution::is_nothrow_receiver_of

It also adds the following traits that correspond to the concepts:

  * execution::is_receiver
  * execution::is_receiver_of
2020-06-30 21:59:10 +10:00
Christopher Kohlhoff
dffb5d3e0b Add execution::set_value() customisation point object. 2020-06-30 17:00:56 +10:00
Christopher Kohlhoff
6830d6d530 Add execution::set_done() customisation point object. 2020-06-30 17:00:56 +10:00
Christopher Kohlhoff
ee7030548a Add execution::set_error() customisation point object. 2020-06-30 17:00:56 +10:00
Christopher Kohlhoff
726a33038e Require gcc 4.8 or later to enable certain C++11 features.
When building with gcc, require version 4.8 or later to enable Asio's
support for the following C++11 features:

  * rvalue references and move support
  * variadic templates
  * constexpr
  * decltype
  * standard type traits
2020-06-30 17:00:56 +10:00
Christopher Kohlhoff
d3c527f6eb Fix forward declaration guard used for any_executor. 2020-06-28 20:41:40 +10:00
Christopher Kohlhoff
eb7ffb9d22 Add standard executor support to basic_socket_acceptor accept() and async_accept(). 2020-06-26 15:42:40 +10:00
Christopher Kohlhoff
8b0eb52f8a More spawn() changes to support standard executors. 2020-06-26 11:28:51 +10:00
Christopher Kohlhoff
af58116845 Use a different target function table depending on the blocking property.
The any_executor class stores the state of the target's blocking
property to enable an optimisation in any_executor::execute(), i.e. if
the target executor has the property blocking.always, we can avoid a
memory allocation when type-erasing the submitted function object. With
this change the any_executor now "stores" the blocking property as a
different target function table, rather than as a separate member of
type blocking_t. This reduces the size of an any_executor by 8 bytes on
x86-64.
2020-06-26 10:58:24 +10:00
Christopher Kohlhoff
eff1ccd815 Add any_io_executor to forward declaration header 'netfwd.hpp'. 2020-06-24 19:02:31 +10:00
Christopher Kohlhoff
96987daee4 Documentation fix for the execution::allocator property. 2020-06-24 11:37:24 +10:00
Christopher Kohlhoff
574227a859 Regenerate documentation. 2020-06-23 11:39:36 +10:00
Christopher Kohlhoff
fa2a1c80c4 Add new execution facilities to quick reference. 2020-06-23 11:07:35 +10:00
Christopher Kohlhoff
68879b4fa3 Add new executor type requirements. 2020-06-23 11:07:35 +10:00
Christopher Kohlhoff
caa8764b02 Documentation generation tweaks for new execution facilities. 2020-06-23 11:07:35 +10:00
Christopher Kohlhoff
93a753bb27 Update executor examples to use standard executor form. 2020-06-23 11:07:35 +10:00
Christopher Kohlhoff
ddffd55106 Disable executor_work_guard if ASIO_NO_TS_EXECUTORS is defined. 2020-06-23 11:07:35 +10:00
Christopher Kohlhoff
36e43c7e40 Disable io_context::strand if ASIO_NO_TS_EXECUTORS is defined. 2020-06-23 11:07:35 +10:00
Christopher Kohlhoff
e0a3173e51 Disable asio::executor if ASIO_NO_TS_EXECUTORS is defined. 2020-06-23 11:07:35 +10:00