This I/O object wraps an ordinary socket and provides a built-in
timeout and optional bandwidth rate-limiting facility.
Added class template basic_stream_socket
* Meets the requirements of AsyncReadStream and AsyncWriteStream
* Partially supports P1322R0:
"Networking TS enhancement to enable custom I/O executors"
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html
A strand or other io_context-compatible executor may be
chosen to use for all asynchronous stream operations.
* Supports independent timeouts on logical operations:
connect, read, write, or both read and write.
* Provides an option for a configurable rate limit
limit on the maximum rates of reading or writing.
* The previous experimental implementation,
`timeout_socket` and related types, is removed.
* stream_socket is an alias for basic_stream_socket which
uses `net::ip::tcp` as its protocol.
fix#1365
To reduce instantiations, the list of template parameters
to the bind and bind_front handler wrappers are decayed before
naming the class template.
* Tidying
* Increase test coverage
* Fix file_mode::append_existing
API Changes:
* file_mode::append_new is removed, as it makes no sense
Actions Required:
* Replace file_mode::append_new with file_mode::append
or file_mode::append_existing instead of file_mode::append_new
* The function buffers is deprecated, use the new
function make_printable as the replacement.
Actions Required:
* Replace call sites to use make_printable instead of buffers,
and also include make_printable.hpp instead of ostream.hpp.
* Improved tests
* Refactor some declaration material
* basic_multi_buffer::clear is public
and
* Fix flat_buffer::reserve
* flat_buffer::clear is public
This resolves an issue where the ostream could try to
exceeed the configured maximum size of a dynamic buffer
when the maximum is set to a very low number.
When BOOST_BEAST_TESTS is not defined, violations of
buffers_cat preconditions will assert instead of throwing
exceptions. This reduces the size of the emitted code
and improves performance.
Elements of zero size are correctly skipped during iteration.
* Tidy up tests
* Increase code coverage
* Remove move special members
* Correct behavior for default constructed iterators
* Tidy up tests
* Increase code coverage
* Remove move special members
* Correct behavior for default constructed iterators
API Changes:
* buffers_adaptor is renamed (was buffers_adapter)
Actions Required:
* Replace buffers_adapter.hpp with buffers_adaptor.hpp, and
replace buffers_adapter with buffers_adaptor. Or, define
BOOST_BEAST_ALLOW_DEPRECATED
This tidies up small corner cases and bugs with
the bind_handler and bind_front_handler wrappers:
* Legacy allocation hooks are deleted
* Fixes for bind_front_handler specializations
* Decay bound arguments first, to reduce template instantiations
* Proper moving and forwarding of bound arguments and call parameters
* Tidy up and comment asserts
* `pausation` is renamed to saved_handler
* A work guard on the handler's associated executor
is maintained for the lifetime of the store handler.
* Revise documentation
* Specify exception safety
* Mark more functions noexcept
API Changes:
* flat_static_buffer::reset is deprecated
Actions Required:
* Replace calls to flat_static_buffer::reset with
flat_static_buffer::clear
fix#1356
* File functions return errc::bad_file_descriptor
instead of errc::invalid_argument.
Actions Required:
* Callers checking for errc::invalid_argument from calls to
file APIs should check for errc::bad_file_descriptor instead.
* Revise stream algorithm javadocs
* HTTP stream algorithms now use beast::read and
beast::async_read with a custom completion condition.
API Changes:
* HTTP stream algorithms return the number of bytes transferred
from the stream. Previously, they returned the number of bytes
consumed by the parser.
Actions Required:
* Callers depending on the return value of http::read or
http::async_read overloads should adjust the usage of
the returned value as needed.
Replace aligned_union in handler_ptr with the built-in one to reduce
the number of template instantiations and remove the reinterpret_casts
that were required.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>