Commit Graph
53 Commits
Author SHA1 Message Date
Vinnie Falco 8ea282ee5e flat_static_buffer improvements (API Change):
* 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
2018-12-12 19:32:22 -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 29cf6ce61f Dynamic buffers improvements:
fix #1305

Applies to:

    flat_buffer
    flat_static_buffer
    multi_buffer
    static_buffer

Changes:

* Revised all javadocs
* Move construction does not invalidate in some cases
* non-const data() returns a mutable buffer sequence
* Add cdata() to also return constant readable bytes
* Eligible member functions are declared noexcept
2018-11-30 13:46:56 -08:00
Damian Jarek 836042fd24 Fix test::stream async_result transformation:
close #1322

async initiating functions must return init.result.get(). Returning the
result of post caused a compilation failure for custom completion tokens.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2018-11-26 16:02:44 -08:00
Vinnie Falco 15dd535c24 Use bind_front_handler:
The implementation uses bind_front_handler to reduce the
resources consumed when instantiating templates during
compilation.
2018-11-21 12:47:38 -08:00
Vinnie Falco 65434a0cba Partial support for BOOST_NO_EXCEPTIONS:
Some stream operations are modified to use a
helper function which supports BOOST_NO_EXCEPTIONS.
2018-11-01 21:10:54 -07:00
Vinnie Falco 6ea66fd89e Remove spurious assert
fix #1099
2018-05-18 17:25:56 -07:00
Vinnie Falco 86342dd72b Use executor_work_guard in composed operations:
fix #1076

As per Asio and Networking TS requirements, composed operations must
maintain an object of type executor_work_guard for the executor associated
with the I/O object, for the lifetime of the asynchronous operation.

This is in addition to the requirement for maintaining an object of type
executor_work_guard for the executor associated with the handler.
2018-04-10 08:03:04 -07:00
Vinnie Falco 12cc10f8bb Revert "Tidy up calls to post()"
This reverts commit 5eaa2be85e.
2018-03-22 20:13:39 -07:00
Vinnie Falco 5eaa2be85e Tidy up calls to post() 2018-03-04 13:19:17 -08:00
Vinnie Falco 726118468b Add asio_handler_invoke overloads for stream algorithms:
fix #1012

This fixes a bug where asynchronous stream alogrithms do not
work correctly with the legacy `io_service::strand` implementation.
2018-03-01 08:31:57 -08:00
Vinnie Falco d79950d95c DynamicBuffer input areas are not mutable
fix #1014
2018-02-21 13:19:14 -08:00
Vinnie Falco a4eb96fcb9 Don't use typeid 2018-02-19 18:36:30 -08:00
Vinnie Falco ab32400d00 Fix soft-mutex assert in websocket stream:
Fix #1000

This resolves the assert 'ws_.wr_block_ == tok_'.
2018-02-16 10:51:28 -08:00
Vinnie Falco d855bdefd8 Type check completion handlers
fix #988
2018-01-26 08:58:19 -08:00
Vinnie Falco cc43b46c42 Refactor WebSocket errors (API Change):
fix #949

* New error codes are introduced for WebSocket failures

* More verbose messages for error codes

* Error codes are mapped to conditions for ease of testing

* error::failed and error::handshake_failed are deprecated (don't use)

Actions Required:

* Code which explicitly compares error_code values against the
  constant `websocket::error::handshake_failed` should compare
  against `websocket::condition::handshake_failed` instead.

* Code which explicitly compares error_code values against the
  constant `websocket::error::failed` should compare
  against `websocket::condition::protocol_violation` instead.
2018-01-12 07:35:26 -08:00
Vinnie Falco 841ab8474b permessage-deflate is a compile-time feature (API Change):
fix #849

This adds an additional `bool` template parameter to
`websocket::stream`:

* When deflateSupported is `true`, the stream will be capable
  of negotiating the permessage-deflate websocket extension per
  the configured run-time settings.

* When deflateSupported is `false`, the stream will never negotiate
  the permessage-deflate websocket extension. Furthermore, all of the
  code necessary for implementing the permessage-deflate extension
  will be excluded from function instantiations. The resulting emitted
  object code should be smaller.
2017-12-30 13:23:41 -08:00
Vinnie Falco eddadacba7 Control callback is invoked on the execution context:
fix #954

Fix a defect where the control callback could execute
on the same stack as the initiating function.
2017-12-27 18:17:09 -08:00
Damian Jarek 200e898f7e Don't copy completion handlers:
All asynchronous operations will now be able to use move-only
CompletionHandlers.

Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
2017-12-04 12:14:40 -08:00
Vinnie Falco 3361df142c pausation always allocates 2017-12-04 12:14:39 -08:00
Vinnie Falco eb0cc97e1a Protect calls from macros
fix #918
2017-12-04 12:14:11 -08:00
Vinnie Falco 4053c1bb09 Handle invalid deflate frames:
This fixes a problem where an assert is generated or an
error is ignored when an invalid deflate stream is produced
after appending the final empty deflate block.
2017-12-04 12:05:36 -08:00
zerotypos-found 99bf3f5556 Fix some typos 2017-11-21 08:11:20 -08:00
Vinnie Falco 41e61a7458 Fix executor type compilation 2017-10-24 09:33:29 -07:00
Vinnie Falco 3a28e999af Update for Net-TS Asio (API Change):
fix #769

The following classes are removed:

* handler_type
* async_result
* async_completion
* is_dynamic_buffer
* is_const_buffer_sequence
* is_mutable_buffer_sequence
* handler_alloc

Actions Required:

* Use BOOST_ASIO_HANDLER_TYPE instead of handler_type
* Use BOOST_ASIO_INITFN_RESULT_TYPE instead of async_result
* Use boost::asio::async_completion
* Use boost::asio::is_dynamic_buffer
* Use boost::asio::is_const_buffer_sequence
* Use boost::asio::is_mutable_buffer_sequence
* boost::asio::associated_allocator_t replaces handler_alloc
2017-10-23 17:11:27 -07:00
Vinnie Falco a517df9090 assert on empty buffer in websocket read 2017-10-07 11:17:13 -07:00
Gyorgy Szekely 471638c60e Fix enum and non-enum in conditional exp. warning 2017-10-03 06:13:11 -07:00
Vinnie Falco 2c656a22f9 Remove buffers_suffix::get (API Change):
* buffers_suffix::get member function is removed

Actions Required:

* Avoid calling buffers_suffix::get
2017-09-20 08:31:36 -07:00
Vinnie Falco 38c2816539 buffers_front replaces buffer_front (API Change):
fix #773

* buffer_front is renamed to buffer_front

Actions Required:

* Use buffers_front instead of buffer_front
2017-09-15 12:52:59 -07:00
Vinnie Falco e94a65b04a buffers_prefix replaces buffer_prefix (API Change)
fix #773

* buffer_prefix is renamed to buffers_prefix
* buffer_prefix_view is renamed to buffers_prefix_view

Actions Required:

* Use buffers_prefix instead of buffer_prefix
* Use buffers_prefix_view instead of buffer_prefix_view
2017-09-15 12:52:58 -07:00
Vinnie Falco 795da80859 buffers_suffix replaces consuming_buffers (API Change):
fix #770

* consuming_buffers is renamed to buffers_suffix

Actions Required:

* Use buffers_suffix instead of consuming_buffers
2017-09-15 12:52:45 -07:00
Vinnie Falco 51a5a36118 Refactor stream operations and tests plus coverage 2017-08-31 17:52:36 -07:00
Vinnie Falco 30b98674d5 Refactor websocket stream: fixes and tests 2017-08-28 22:16:22 -07:00
Vinnie Falco 1d5b3f488e Refactor websocket stream members 2017-08-26 20:12:21 -07:00
Vinnie Falco 4c335a64cf Refactor stream open state variable 2017-08-26 20:12:04 -07:00
Vinnie Falco 53fa8a6589 websocket test fixes 2017-08-26 07:15:25 -07:00
Vinnie Falco df7b068fa7 websocket read tests 2017-08-25 07:40:05 -07:00
Vinnie Falco 96eff81cea websocket close fixes and tests 2017-08-23 14:34:13 -07:00
Vinnie Falco 7a96dc4e11 Fix async_read_some handler signature 2017-08-23 14:34:13 -07:00
Vinnie Falco e690528132 Rename frame and header buffer types
fix #736
2017-08-15 16:59:17 -07:00
Vinnie Falco 3d6a009a96 Fix utf8 check for compressed frames 2017-08-15 16:33:25 -07:00
Vinnie Falco a435dde2a3 Fix done state for WebSocket reads 2017-08-15 12:49:02 -07:00
Vinnie Falco 66b657a85f Autobahn|Testsuite fixes 2017-08-14 15:41:31 -07:00
Vinnie Falco 5940002c96 Websocket close will automatically drain:
fix #642

This changes websocket::stream close and async_close to automatically
read and discard incoming message frames before shutting down the
connection. It is no longer necessary to manually drain the connection.
2017-08-14 15:41:11 -07:00
Vinnie Falco fa087e19f1 Refactor read_op + fail_op 2017-08-14 15:40:13 -07:00
Vinnie Falco 470ef85982 Refactor read_op 2017-08-14 15:30:30 -07:00
Vinnie Falco 64327739f0 WebSocket close will automatically drain (API Change):
fix #642

* Calls to stream::close and stream::async_close will
  automatically perform the required read operations

Actions Required:

* Remove calling code which drains the connection after
  calling stream::close or stream::async_close
2017-08-04 19:02:13 -07:00
Vinnie Falco 56a9e6ba9a Call do_fail from read_some 2017-08-04 19:02:13 -07:00
Vinnie Falco 756de5d703 Refactor fail/clode code 2017-08-04 19:02:13 -07:00
Vinnie Falco cbb47a0ffd Fix websocket read of zero length message
fix #686
2017-07-27 19:09:15 -07:00