Doc. No.: | P1259R0 |
Date: | 2018-10-08 |
Reply to: | Detlef Vollmann, dv@vollmann.ch |
Audience: | SG1, LEWG, WG21 |
The Networking TS grew out of Boost::ASIO and has got a lot of usage experience as part of Boost and in standalone implementations of the TS. Most of the Networking TS is uncontroversial.
One specific part of the Networking TS however clashes with the executor work in SG1. The executor work from SG1 is not yet ready to be merged into the C++ working paper. So this part of the Networking TS should not be merged. But most of the Networking TS can work without an explicitly specified executor model. This paper proposes to merge the executor independent parts of the Networking TS into the C++ working paper and solve any open issues on the Networking TS inside the C++ working paper.
The proposal is to merge the Networking TS into the C++ working paper with the following changes:
Move the contents of the namespace std::experimental
to namespace std
.
Rename the headers <experimental/*>
to <*>
.
From table 3 remove ExecutionContext
and Executor
.
<netfwd>
([fwd.decl.synop]) remove:
executor_binder
executor_work_guard
system_executor
executor
strand
.<executor>
([async]) remove all but:
async_result
, but remove specializations with use_future_t
and packaged_task
async_completion
associated_allocator
associated_allocator_t
get_associated_allocator
fork_event
uses_allocator
.From [async.reqmts.async]p1 remove Executor1
, Executor2
, ex1
, ex2
, work1
and work2
.
io_context
([io__context]) remove:
execution_context
executor_type
get_executor
In class io_context
([io__context]) change paragraph 6 remove get_executor,
and ", and the io_context::executor_type
copy constructors, member functions and comparison operators,".
Remove [io__context.exec].
basic_waitable_timer
([timer.waitable]),basic_socket
([socket.basic]),basic_socket_acceptor
([socket.acceptor]),ip::basic_resolver
([internet.resolver]) remove:
executor_type
get_executor
get_executor
From table 17 ([buffer.stream.reqmts.asyncreadstream]) and table 19 ([buffer.stream.reqmts.asyncwritestream]) remove the get_executor
requirement.
In basic_socket_acceptor
([socket.acceptor]) in the accept
functions that don't take an io_context&
as argument replace in the Returns clause get_executor().context()
with io_context()
.