123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 |
- [/
- / Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff 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)
- /]
- [section:net_ts Networking TS compatibility]
- Boost.Asio now provides the interfaces and functionality specified by the "C++
- Extensions for Networking" Technical Specification. In addition to access via
- the usual Boost.Asio header files, this functionality may be accessed through special
- headers that correspond to the header files defined in the TS. These are listed
- in the table below:
- [table
- [[Networking TS header][Boost.Asio header]]
- [[`#include <buffer>`][`#include <boost/asio/ts/buffer.hpp>`]]
- [[`#include <executor>`][`#include <boost/asio/ts/executor.hpp>`]]
- [[`#include <internet>`][`#include <boost/asio/ts/internet.hpp>`]]
- [[`#include <io_context>`][`#include <boost/asio/ts/io_context.hpp>`]]
- [[`#include <net>`][`#include <boost/asio/ts/net.hpp>`]]
- [[`#include <netfwd>`][`#include <boost/asio/ts/netfwd.hpp>`]]
- [[`#include <socket>`][`#include <boost/asio/ts/socket.hpp>`]]
- [[`#include <timer>`][`#include <boost/asio/ts/timer.hpp>`]]
- ]
- In some cases the new Networking TS compatible interfaces supersede older Boost.Asio
- facilities. In these cases the older interfaces have been deprecated. The table
- below shows the new Networking TS interfaces and the facilities they replace:
- [table
- [[New interface][Old interface][Notes]]
- [
- [[link boost_asio.reference.io_context `io_context`]]
- [[link boost_asio.reference.io_service `io_service`]]
- [The name `io_service` is retained as a typedef.]
- ]
- [
- [[link boost_asio.reference.dispatch `dispatch`]]
- [[link boost_asio.reference.io_context.dispatch `io_service::dispatch`]]
- [The `dispatch` free function can be used to submit functions to any [link
- boost_asio.reference.Executor1 Executor] or [link boost_asio.reference.ExecutionContext
- ExecutionContext].]
- ]
- [
- [[link boost_asio.reference.dispatch `post`]]
- [[link boost_asio.reference.io_context.post `io_service::post`]]
- [The `dispatch` free function can be used to submit functions to any [link
- boost_asio.reference.Executor1 Executor] or [link boost_asio.reference.ExecutionContext
- ExecutionContext].]
- ]
- [
- [[link boost_asio.reference.dispatch `defer`]]
- [[link boost_asio.reference.io_context.post `io_service::post`] when the [link
- boost_asio.reference.asio_handler_is_continuation `asio_handler_is_continuation`]
- hook returns true]
- [The `defer` free function can be used to submit functions to any [link
- boost_asio.reference.Executor1 Executor] or [link boost_asio.reference.ExecutionContext
- ExecutionContext].]
- ]
- [
- [[link boost_asio.reference.io_context.poll `io_context::poll`]]
- [[link boost_asio.reference.io_context.poll `io_service::poll`] overload that
- takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.io_context.poll_one `io_context::poll_one`]]
- [[link boost_asio.reference.io_context.poll_one `io_service::poll_one`] overload
- that takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.io_context.run `io_context::run`]]
- [[link boost_asio.reference.io_context.run `io_service::run`] overload that takes
- `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.io_context.run_one `io_context::run_one`]]
- [[link boost_asio.reference.io_context.run_one `io_service::run_one`] overload
- that takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.io_context.run_for `io_context::run_for`],
- [link boost_asio.reference.io_context.run_until `io_context::run_until`],
- [link boost_asio.reference.io_context.run_one_for `io_context::run_one_for`], and
- [link boost_asio.reference.io_context.run_one_until `io_context::run_one_until`]]
- []
- [These functions add the ability to run an `io_context` for a limited time.]
- ]
- [
- [[link boost_asio.reference.io_context.restart `io_context::restart`]]
- [[link boost_asio.reference.io_context.reset `io_service::reset`]]
- []
- ]
- [
- [[link boost_asio.reference.io_context.io_context `io_context`] constructor
- `concurrency_hint` parameter is type `int`]
- [[link boost_asio.reference.io_context.io_context `io_context`] constructor
- `concurrency_hint` parameter is type `std::size_t`]
- [The old constructor has not been retained as a deprecated overload.]
- ]
- [
- [[link boost_asio.reference.execution_context `execution_context`], [link
- boost_asio.reference.execution_context__service `execution_context::service`],
- and [link boost_asio.reference.execution_context__id `execution_context::id`]]
- [[link boost_asio.reference.io_context `io_service`], [link
- boost_asio.reference.io_context__service `io_service::service`], and [link
- boost_asio.reference.execution_context__id `io_service::id`]]
- [The service-related functionality has been moved to the
- `execution_context` base class. This may also be used as a base for
- creating custom execution contexts.]
- ]
- [
- [[link boost_asio.reference.execution_context.make_service `make_service`]]
- [[link boost_asio.reference.execution_context.add_service `add_service`]]
- []
- ]
- [
- [[link boost_asio.reference.strand `strand`]]
- [[link boost_asio.reference.io_context__strand `io_service::strand`]]
- [This template works with any valid executor, and is itself a valid
- executor.]
- ]
- [
- [[link boost_asio.reference.executor_work_guard `executor_work_guard`] and [link
- boost_asio.reference.make_work_guard `make_work_guard`]]
- [[link boost_asio.reference.io_context__work `io_service::work`]]
- [Work tracking is now covered by the [link boost_asio.reference.Executor1
- Executor] requirements. These templates work with any valid executor.]
- ]
- [
- [[link boost_asio.reference.executor_binder `executor_binder`] and [link
- boost_asio.reference.bind_executor `bind_executor`]]
- [[link boost_asio.reference.io_context.wrap `io_service::wrap`] and
- [link boost_asio.reference.io_context__strand.wrap `io_service::strand::wrap`]]
- [These templates work with any valid executor.]
- ]
- [
- [[link boost_asio.reference.async_result `async_result`] with `CompletionToken`
- and `Signature` template parameters]
- [`handler_type` and single parameter `async_result`]
- [The `async_result` trait is now the single point of customisation for
- asynchronous operation completion handlers and return type.]
- ]
- [
- [[link boost_asio.reference.associated_executor `associated_executor`] and [link
- boost_asio.reference.get_associated_executor `get_associated_executor`]]
- [[link boost_asio.reference.asio_handler_invoke `asio_handler_invoke`]]
- [The handler invocation hook has been replaced by the new [link
- boost_asio.reference.Executor1 Executor] requirements and the associated executor
- traits.]
- ]
- [
- [[link boost_asio.reference.associated_allocator `associated_allocator`] and
- [link boost_asio.reference.get_associated_allocator `get_associated_allocator`]]
- [[link boost_asio.reference.asio_handler_allocate `asio_handler_allocate`] and
- [link boost_asio.reference.asio_handler_deallocate `asio_handler_deallocate`]]
- [The handler allocation hooks have been replaced by the standard Allocator
- requirements and the associated allocator traits.]
- ]
- [
- [[link boost_asio.reference.const_buffer.data `const_buffer::data`] and [link
- boost_asio.reference.mutable_buffer.data `mutable_buffer::data`]]
- [[link boost_asio.reference.buffer_cast `buffer_cast`]]
- []
- ]
- [
- [[link boost_asio.reference.const_buffer.size `const_buffer::size`] and [link
- boost_asio.reference.mutable_buffer.size `mutable_buffer::size`]]
- [[link boost_asio.reference.buffer_size `buffer_size`] for single buffers]
- [`buffer_size` is not deprecated for single buffers as `const_buffer` and
- `mutable_buffer` now satisfy the buffer sequence requirements]
- ]
- [
- [[link boost_asio.reference.const_buffer `const_buffer`]]
- [[link boost_asio.reference.const_buffers_1 `const_buffers_1`]]
- [The [link boost_asio.reference.ConstBufferSequence ConstBufferSequence]
- requirements have been modified such that `const_buffer` now satisfies
- them.]
- ]
- [
- [[link boost_asio.reference.mutable_buffer `mutable_buffer`]]
- [[link boost_asio.reference.mutable_buffers_1 `mutable_buffers_1`]]
- [The [link boost_asio.reference.MutableBufferSequence MutableBufferSequence]
- requirements have been modified such that `mutable_buffer` now satisfies
- them.]
- ]
- [
- [[link boost_asio.reference.basic_socket.get_executor
- `basic_socket::get_executor`] (and corresponding member for I/O objects
- such as timers, serial ports, etc.)]
- [[link boost_asio.reference.basic_io_object.get_io_service
- `basic_io_object::get_io_service`]]
- [Use `get_executor().context()` to obtain the associated `io_context`.]
- ]
- [
- [[link boost_asio.reference.socket_base.max_listen_connections
- `socket_base::max_listen_connections`]]
- [[link boost_asio.reference.socket_base.max_connections
- `socket_base::max_connections`]]
- []
- ]
- [
- [[link boost_asio.reference.socket_base.wait_type `socket_base::wait_type`],
- [link boost_asio.reference.basic_socket.wait `basic_socket::wait`], [link
- boost_asio.reference.basic_socket.async_wait `basic_socket::async_wait`], [link
- boost_asio.reference.basic_socket_acceptor.wait `basic_socket_acceptor::wait`],
- and [link boost_asio.reference.basic_socket_acceptor.async_wait
- `basic_socket_acceptor::async_wait`]]
- [[link boost_asio.reference.null_buffers `null_buffers`]]
- [Operations for reactive I/O.]
- ]
- [
- [[link boost_asio.reference.basic_socket_acceptor.accept
- `basic_socket_acceptor::accept`] returns a socket]
- [[link boost_asio.reference.basic_socket_acceptor.accept
- `basic_socket_acceptor::accept`] takes a socket by reference]
- [Uses move support so requires C++11 or later. To accept a connection into
- a socket object on a different `io_context`, pass the destination context
- to `accept`.]
- ]
- [
- [[link boost_asio.reference.basic_socket_acceptor.async_accept
- `basic_socket_acceptor::async_accept`] passes socket to handler]
- [[link boost_asio.reference.basic_socket_acceptor.async_accept
- `basic_socket_acceptor::async_accept`] takes a socket by reference]
- [Uses move support so requires C++11 or later. To accept a connection into
- a socket object on a different `io_context`, pass the destination context
- to `async_accept`.]
- ]
- [
- [[link boost_asio.reference.connect `connect`] overloads that take a range]
- [[link boost_asio.reference.connect `connect`] overloads that take a single
- iterator]
- [The [link boost_asio.reference.ip__basic_resolver.resolve
- `ip::basic_resolver::resolve`] function now returns a range. When the
- `resolve` function's result is passed directly to `connect`, the range
- overload will be selected.]
- ]
- [
- [[link boost_asio.reference.async_connect `async_connect`] overloads that take a
- range]
- [[link boost_asio.reference.async_connect `async_connect`] overloads that take a
- single iterator]
- [The [link boost_asio.reference.ip__basic_resolver.resolve
- `ip::basic_resolver::resolve`] function now returns a range. When the
- `resolve` function's result is passed directly to `async_connect`, the
- range overload will be selected.]
- ]
- [
- [[link boost_asio.reference.basic_socket_streambuf.duration
- `basic_socket_streambuf::duration`]]
- [[link boost_asio.reference.basic_socket_streambuf.duration_type
- `basic_socket_streambuf::duration_type`]]
- []
- ]
- [
- [[link boost_asio.reference.basic_socket_streambuf.time_point
- `basic_socket_streambuf::time_point`]]
- [[link boost_asio.reference.basic_socket_streambuf.time_type
- `basic_socket_streambuf::time_type`]]
- []
- ]
- [
- [[link boost_asio.reference.basic_socket_streambuf.expiry
- `basic_socket_streambuf::expiry`]]
- [[link boost_asio.reference.basic_socket_streambuf.expires_at
- `basic_socket_streambuf::expires_at`] and [link
- boost_asio.reference.basic_socket_streambuf.expires_from_now
- `basic_socket_streambuf::expires_from_now`] getters]
- []
- ]
- [
- [[link boost_asio.reference.basic_socket_streambuf.expires_after
- `basic_socket_streambuf::expires_after`]]
- [[link boost_asio.reference.basic_socket_streambuf.expires_from_now
- `basic_socket_streambuf::expires_from_now`] setter]
- []
- ]
- [
- [[link boost_asio.reference.basic_socket_streambuf.error
- `basic_socket_streambuf::error`]]
- [[link boost_asio.reference.basic_socket_streambuf.puberror
- `basic_socket_streambuf::puberror`]]
- []
- ]
- [
- [[link boost_asio.reference.basic_socket_iostream.duration
- `basic_socket_iostream::duration`]]
- [[link boost_asio.reference.basic_socket_iostream.duration_type
- `basic_socket_iostream::duration_type`]]
- []
- ]
- [
- [[link boost_asio.reference.basic_socket_iostream.time_point
- `basic_socket_iostream::time_point`]]
- [[link boost_asio.reference.basic_socket_iostream.time_type
- `basic_socket_iostream::time_type`]]
- []
- ]
- [
- [[link boost_asio.reference.basic_socket_iostream.expiry
- `basic_socket_iostream::expiry`]]
- [[link boost_asio.reference.basic_socket_iostream.expires_at
- `basic_socket_iostream::expires_at`] and [link
- boost_asio.reference.basic_socket_iostream.expires_from_now
- `basic_socket_iostream::expires_from_now`] getters]
- []
- ]
- [
- [[link boost_asio.reference.basic_socket_iostream.expires_after
- `basic_socket_iostream::expires_after`]]
- [[link boost_asio.reference.basic_socket_iostream.expires_from_now
- `basic_socket_iostream::expires_from_now`] setter]
- []
- ]
- [
- [[link boost_asio.reference.basic_waitable_timer.cancel
- `basic_waitable_timer::cancel`]]
- [[link boost_asio.reference.basic_waitable_timer.cancel
- `basic_waitable_timer::cancel`] overload that takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.basic_waitable_timer.cancel_one
- `basic_waitable_timer::cancel_one`]]
- [[link boost_asio.reference.basic_waitable_timer.cancel_one
- `basic_waitable_timer::cancel_one`] overload that takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.basic_waitable_timer.expires_at
- `basic_waitable_timer::expires_at`] setter]
- [[link boost_asio.reference.basic_waitable_timer.expires_at
- `basic_waitable_timer::expires_at`] setter that takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.basic_waitable_timer.expiry
- `basic_waitable_timer::expiry`]]
- [[link boost_asio.reference.basic_waitable_timer.expires_at
- `basic_waitable_timer::expires_at`] and [link
- boost_asio.reference.basic_waitable_timer.expires_from_now
- `basic_waitable_timer::expires_from_now`] getters]
- []
- ]
- [
- [[link boost_asio.reference.basic_waitable_timer.expires_after
- `basic_waitable_timer::expires_after`]]
- [[link boost_asio.reference.basic_waitable_timer.expires_from_now
- `basic_waitable_timer::expires_from_now`] setter]
- []
- ]
- [
- [[link boost_asio.reference.ip__address.make_address `ip::make_address`]]
- [[link boost_asio.reference.ip__address.from_string `ip::address::from_string`]]
- []
- ]
- [
- [[link boost_asio.reference.ip__address_v4.make_address_v4 `ip::make_address_v4`]]
- [[link boost_asio.reference.ip__address_v4.from_string
- `ip::address_v4::from_string`] and [link
- boost_asio.reference.ip__address_v6.to_v4 `ip::address_v6::to_v4`]]
- []
- ]
- [
- [[link boost_asio.reference.ip__address_v6.make_address_v6 `ip::make_address_v6`]]
- [[link boost_asio.reference.ip__address_v6.from_string
- `ip::address_v6::from_string`] and [link
- boost_asio.reference.ip__address_v6.v4_mapped `ip::address_v6::v4_mapped`]]
- []
- ]
- [
- [[link boost_asio.reference.ip__address.to_string `ip::address::to_string`]]
- [[link boost_asio.reference.ip__address.to_string `ip::address::to_string`] that
- takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.ip__address_v4.to_string `ip::address_v4::to_string`]]
- [[link boost_asio.reference.ip__address_v4.to_string `ip::address_v4::to_string`]
- that takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [[link boost_asio.reference.ip__address_v6.to_string `ip::address_v6::to_string`]]
- [[link boost_asio.reference.ip__address_v6.to_string `ip::address_v6::to_string`]
- that takes `error_code&`]
- [The `error_code` overload is not required.]
- ]
- [
- [No replacement]
- [[link boost_asio.reference.ip__address_v6.is_v4_compatible
- `ip::address_v6::is_v4_compatible`] and [link
- boost_asio.reference.ip__address_v6.v4_compatible
- `ip::address_v6::v4_compatible`]]
- []
- ]
- [
- [[link boost_asio.reference.ip__network_v4 `ip::network_v4`]]
- [[link boost_asio.reference.ip__address_v4.broadcast `ip::address_v4::broadcast`],
- [link boost_asio.reference.ip__address_v4.is_class_a `ip::address_v4::is_class_a`],
- [link boost_asio.reference.ip__address_v4.is_class_b `ip::address_v4::is_class_b`],
- [link boost_asio.reference.ip__address_v4.is_class_c `ip::address_v4::is_class_c`],
- and [link boost_asio.reference.ip__address_v4.netmask `ip::address_v4::netmask`]]
- [The `network_v4` class adds the ability to manipulate IPv4 network
- addresses using CIDR notation.]
- ]
- [
- [[link boost_asio.reference.ip__network_v6 `ip::network_v6`]]
- []
- [The `network_v6` class adds the ability to manipulate IPv6 network
- addresses using CIDR notation.]
- ]
- [
- [[link boost_asio.reference.ip__basic_address_iterator_lt__address_v4__gt_
- `ip::address_v4_iterator`] and [link
- boost_asio.reference.ip__basic_address_range_lt__address_v4__gt_
- `ip::address_v4_range`]]
- []
- [The `ip::address_v4_iterator` and `address_v4_range` classes add the
- ability to iterate over all, or a subset of, IPv4 addresses.]
- ]
- [
- [[link boost_asio.reference.ip__basic_address_iterator_lt__address_v6__gt_
- `ip::address_v6_iterator`] and [link
- boost_asio.reference.ip__basic_address_range_lt__address_v6__gt_
- `ip::address_v6_range`]]
- []
- [The `ip::address_v6_iterator` and `address_v6_range` classes add the
- ability to iterate over all, or a subset of, IPv6 addresses.]
- ]
- [
- [[link boost_asio.reference.ip__basic_resolver.results_type
- `ip::basic_resolver::results_type`]]
- [[link boost_asio.reference.ip__basic_resolver.iterator
- `ip::basic_resolver::iterator`]]
- [Resolvers now produce ranges rather than single iterators.]
- ]
- [
- [[link boost_asio.reference.ip__basic_resolver.resolve
- `ip::basic_resolver::resolve`] overloads taking hostname and service as
- arguments]
- [[link boost_asio.reference.ip__basic_resolver.resolve
- `ip::basic_resolver::resolve`] overloads taking a [link
- boost_asio.reference.ip__basic_resolver.query `ip::basic_resolver::query`]]
- []
- ]
- [
- [[link boost_asio.reference.ip__basic_resolver.resolve
- `ip::basic_resolver::resolve`] returns a range]
- [[link boost_asio.reference.ip__basic_resolver.resolve
- `ip::basic_resolver::resolve`] returns a single iterator]
- []
- ]
- [
- [[link boost_asio.reference.ip__basic_resolver.async_resolve
- `ip::basic_resolver::async_resolve`] overloads taking hostname and service
- as arguments]
- [[link boost_asio.reference.ip__basic_resolver.async_resolve
- `ip::basic_resolver::async_resolve`] overloads taking a [link
- boost_asio.reference.ip__basic_resolver.query `ip::basic_resolver::query`]]
- []
- ]
- [
- [[link boost_asio.reference.ip__basic_resolver.async_resolve
- `ip::basic_resolver::async_resolve`] calls the handler with a range]
- [[link boost_asio.reference.ip__basic_resolver.async_resolve
- `ip::basic_resolver::async_resolve`] calls the handler with a single
- iterator]
- []
- ]
- ]
- [endsect]
|