Commit Graph
183 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 0ce8ebbefd Fix posix_file::close handling of EINTR:
fix #1445

These changes optimize for Linux at the possible
expense of non-conforming platforms like HP-UX.
2019-02-10 05:52:12 -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 98834967c3 dynamic_buffer_ref tests and tidy 2019-02-08 10:57:41 -08:00
Vinnie Falco 55d319a9d9 multi_buffer::clear preserves capacity 2019-02-07 17:37:18 -08:00
Vinnie Falco c3125e8358 flat_buffer::clear preserves capacity 2019-02-07 17:37:18 -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
Benjamin Buch cdc6e76ab7 Remove extra semicolon
fix #1436
2019-02-07 08:38:06 -08:00
Vinnie Falco dc02f63050 close_socket is in stream_traits.hpp 2019-02-05 21:03:20 -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 8ea8f41bba is_file is in file_base.hpp (API Change):
* The metafunction `is_file` is part of file_base.hpp

Actions Required

* Include file_base.hpp as needed
2019-02-05 09:56:49 -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 28858c60fd Better handling of stream timeouts 2019-02-04 07:26:02 -08:00
Vinnie Falco b70966ad47 Fix stable_async_op_base javadoc 2019-02-03 17:17:59 -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 17ada67f0d Add dynamic_buffer_ref 2019-02-02 16:14:10 -08:00
Vinnie Falco bfb500110b Spelling 2019-02-02 13:19:30 -08:00
Vinnie Falco a142969c5d Qualify buffer_copy, don't qualify buffer_size:
fix #1416

* Calls to buffer_copy are qualified as net::buffer_copy
* Calls to buffer_size are made unqualified, permitting
  argument dependent lookup to take effect.
2019-02-02 13:01:27 -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 1da611fa04 Pass the correct handler in basic_timeout_stream 2019-01-22 21:25:06 -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 cf2dbdc0be Use new saved_handler in websocket 2019-01-15 11:42:05 -08:00
Vinnie Falco 3092e43879 saved_handler is a public interface:
This container allows completion handlers to be safely
suspended and resumed later, or destroyed.
2019-01-12 18:42:32 -08:00
Vinnie Falco 3595eb2221 Update networking refresher doc 2019-01-12 13:11:00 -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 522ca9e78b Tidy up basic_stream_socket docs 2019-01-09 09:54:05 -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 2d3912751b Add core errors and conditions 2018-12-30 12:51:34 -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 c4f4087888 Add buffers_range_ref (replaces reference_wrapper parameter) 2018-12-19 21:51:49 -08:00
Vinnie Falco 61a35bd936 Remove file_mode::append_new (API Change):
* 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
2018-12-19 21:51:49 -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