Commit Graph
86 Commits
Author SHA1 Message Date
Vinnie Falco 9b14774ada basic_stream subsumes stranded_stream:
* All functionality of stranded_stream is folded into basic_stream
* tcp_stream is an alias for basic_stream with tcp
* The tests are expanded to produce full coverage
* Timeout implementation is simplified
2019-02-10 11:42:01 -08:00
Vinnie Falco b8aa6be7fd stranded_socket tests and tidy 2019-02-08 10:58:23 -08:00
Vinnie Falco f15bbf10b4 flat_stream tests and tidy 2019-02-08 10:57:58 -08:00
Vinnie Falco 27a6f57200 Add flat_stream:
flat_stream, previously in _experimental, is now a public API.
2019-02-07 17:37:18 -08:00
Vinnie Falco 3896f9aa9c Add stranded_stream 2019-02-07 17:37:18 -08:00
Vinnie Falco adcd4bc0c9 is_completion_handler, type_traits.hpp are deprecated (API Change):
* is_completion_handler is deprecated
* type_traits.hpp is a deprecated include

These items will be removed in the next version

* Include the new header file for the types needed:
  - stream_traits.hpp
  - file_base.hpp
* Use std::is_invocable instead of is_completion_handler
2019-02-05 14:16:30 -08:00
Vinnie Falco 11c708e29d Tidy up inline variable macro definition 2019-02-05 12:09:47 -08:00
Vinnie Falco d2669d2a78 is_invocable is in its own header file 2019-02-05 10:11:02 -08:00
Vinnie Falco 477cd75153 Stream traits are in stream_traits.hpp (API Change):
These metafunctions are moved from type_traits.hpp
to stream_traits.hpp:

- has_get_executor
- is_sync_stream
- is_sync_read_stream
- is_sync_write_stream
- is_async_stream
- is_async_read_stream
- is_async_write_stream

Actions Required:

* Include the file stream_traits.hpp as needed
2019-02-05 09:56:34 -08:00
Vinnie Falco 9cee4e053f Add executor_type trait 2019-02-05 07:46:09 -08:00
Vinnie Falco 42d83b221a Add stream_traits.hpp:
get_lowest_layer, lowest_layer_type are located here now.
2019-02-05 07:45:36 -08:00
Vinnie Falco 4b7c33d781 Remove unnecessary file 2019-02-04 19:53:11 -08:00
Vinnie Falco 9b88446ab8 Tidy up read implementation 2019-02-03 17:17:03 -08:00
Vinnie Falco 35dbd140d4 Add buffer_size 2019-02-03 12:59:11 -08:00
Vinnie Falco 49deee4a69 Add close_socket, beast_close_socket customization:
This algorithm allows a socket-like object to be closed in
a generic context. The customization point enables user-defined
types to define the close algorithm to use with `close_socket`.
2019-02-01 14:05:07 -08:00
Vinnie Falco 6a658b5c3a Remove lowest_layer, add get_lowest_layer (API Change):
fix #1417

* New get_lowest_layer free function works for any object
* New lowest_layer_type trait works for any object
* New examples and documentation on layered streams

API Changes:

* The member function lowest_layer is removed from all
  types provided by the library:

Actions Required:

* Call the free function get_lowest_layer instead of
  member lowest_layer.
2019-02-01 04:31:13 -08:00
Vinnie Falco 60c96104ec lowest_layer is removed (API Change):
The nested function lowest_layer and nested type lowest_layer_type
are removed from all stream layers.

Actions Required:

* Remove lowest_layer and lowest_layer_type from user-defined streams.
* Use the get_lowest_layer free function and the lowest_layer_type trait
  as needed.
2019-01-22 04:59:07 -08:00
Vinnie Falco 72ea142c5c Add basic_timeout_stream:
This stream wrapper replaces basic_stream_socket and
provides just the timeout functionality.

* basic_stream_socket is removed
2019-01-17 17:18:31 -08:00
Vinnie Falco 3599ccb09a Add tests for async_op_base 2019-01-11 20:06:56 -08:00
Vinnie Falco b4c63028e2 Add tests for bind_back_handler 2019-01-09 18:24:34 -08:00
Vinnie Falco 5292df6e72 async_op_base is a public interface:
This utility simplifies the authoring of composed
operations, see documentation for details.
2019-01-09 09:54:53 -08:00
Vinnie Falco b46953f1bd Use async_op_base:
Composed operation implementations use async_op_base and
stable_async_op_base, to eliminate redundant boilerplate.
2019-01-09 09:54:42 -08:00
Vinnie Falco 9e44ae7be5 Refactor async_op_base:
* Renamed to async_op_base (was operation_base)
* Executor1 is explicit
* Add stable_async_op_base refinement
2019-01-09 09:54:15 -08:00
Vinnie Falco 6caca92f0e New stream_socket:
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.
2018-12-30 16:49:09 -08:00
Vinnie Falco 7caa0b8132 Tidy up some buffer sequence iterators 2018-12-23 20:19:43 -08:00
Vinnie Falco 92e598ade3 Add bind_back_handler
fix #1384
2018-12-21 06:35:07 -08:00
Vinnie Falco e7b8cc73a5 Decay bound arguments in handler wrapper parameters:
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.
2018-12-20 01:01:33 -08:00
Vinnie Falco 321af29d25 Refactor static_buffer:
* Improve tests and coverage
* Add static_buffer_base::clear
* Use BOOST_BEAST_DECL
2018-12-19 20:59:20 -08:00
Vinnie Falco 0006ab3b2b make_printable replaces buffers rename (API Change):
* 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.
2018-12-19 20:59:20 -08:00
Vinnie Falco 991bae8486 Refactor ostream:
* Fix overflow
* Better calculation for prepare, no read_size
* Improve tests and code coverage
2018-12-19 20:59:20 -08:00
Vinnie Falco 81e3642fa7 Fix ostream prepare calculation for low limits:
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.
2018-12-19 20:59:20 -08:00
Vinnie Falco fa14af2696 Use new buffer traits, remove old unused traits 2018-12-19 20:59:20 -08:00
Vinnie Falco ca728e4022 Refactor buffers_range:
* Add tests
* Increase code coverage
* Correct behavior for default constructed iterators
2018-12-19 20:59:20 -08:00
Vinnie Falco c1d7a83af2 buffers_cat fixes and coverage:
* Fix operator== for default constructed iterators
* More tests and code coverage
2018-12-19 20:59:20 -08:00
Vinnie Falco e17a92f2a8 Workarounds for msvc-14 2018-12-13 19:38:44 -08:00
Vinnie Falco 2afe929bb7 Fix bind_handler, bind_front_handler:
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
2018-12-12 19:32:22 -08:00
Vinnie Falco 120d5481e2 Tidy up core files 2018-12-12 19:32:22 -08:00
Vinnie Falco d8a23776d4 Tidy up experimental files 2018-12-12 19:32:22 -08:00
Vinnie Falco 3e695d588a static_buffer improvements:
* Revise documentation
* Specify exception safety
* Mark more functions noexcept
2018-12-12 19:32:21 -08:00
Vinnie Falco 35e4f321bc Refactor HTTP operations (API Change):
* 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.
2018-12-06 15:50:26 -08:00
Damian Jarek 587929edf6 Remove unused type_traits
close #1337

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-12-02 19:51:34 -08:00
Vinnie Falco f995fd41a3 net is a namespace alias for boost::asio:
The namespace alias beast::net replaces boost::asio in all code
and documentation.
2018-12-02 17:51:43 -08:00
Vinnie Falco 49cdabca19 Add net namespace alias 2018-11-27 10:24:24 -08:00
Vinnie Falco 02fb4983f6 Fixes to timeout services (experimental) 2018-11-26 15:30:49 -08:00
Damian Jarek c0e5d1bd76 Use mp11::integer_sequence
Close #1317

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-26 15:30:48 -08:00
Vinnie Falco 2585625459 Fix static_string uninitialized warning 2018-11-22 08:08:55 -08:00
Damian Jarek 13322fa4bb Use mp11 in detail::variant
Reduce compilation cost for all components dependent on variant.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-22 07:39:26 -08:00
Damian Jarek 98ff568371 Use lean_tuple in bind_handler, bind_front_handler 2018-11-21 12:47:59 -08:00
Damian Jarek b97169f26b Add detail::lean_tuple
Provides a subset of std::tuple functionality, for internal use
to reduce the resources required during compilation.

Does not support reference-like semantics on assignment.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-21 12:47:38 -08:00
Damian Jarek 65827558b8 Simplify some type traits:
Several type traits are simplified and optimized to
reduce compile time and memory consumption.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-21 12:47:38 -08:00