Commit Graph
63 Commits
Author SHA1 Message Date
Vinnie Falco 67df48daa6 Documentation work 2017-07-20 08:12:18 -07:00
Vinnie Falco 8a22350119 Tidy up traits
fix #406
2017-07-20 08:12:18 -07:00
Vinnie Falco 982d20001f Rename to buffer_cat_view (API Change)
fix #408
2017-07-20 08:12:18 -07:00
Vinnie Falco 02d5aedc29 Refactor HTTP serialization and parsing (API Change):
fix #404

Parsing and serialization interfaces have been fine tuned and unified.

For parsing these stream operations are defined:

* read
* read_header
* read_some
* async_read
* async_read_header
* async_read_some

For serialization these stream operations are defined:

* write
* write_header
* write_some
* async_write
* async_write_header
* async_write_some
2017-07-20 08:12:17 -07:00
Vinnie Falco 4ed6a7fe21 Disable reverse_iterator buffer_view test 2017-07-20 08:12:17 -07:00
Vinnie Falco f62ac819f5 Better test::enable_yield_to 2017-07-20 08:12:17 -07:00
Vinnie Falco 7c47668cbb Tidy up is_dynamic_buffer traits test 2017-07-20 08:12:17 -07:00
Vinnie Falco 2178524832 Add buffers_adapter regression test
fix #386
2017-07-20 08:12:17 -07:00
Vinnie Falco 24fd5ec8af Use BOOST_STATIC_ASSERT
fix #380
2017-07-20 08:12:17 -07:00
Vinnie Falco 02033c7412 Tidy up and make get_lowest_layer public
fix #379
2017-07-20 08:12:17 -07:00
Vinnie Falco 929174d4d8 Tidy up read_size_helper and dynamic buffers
fix #376
2017-07-20 08:12:17 -07:00
Vinnie Falco 39697ea37f Additional constructors for consuming_buffers 2017-07-20 08:12:17 -07:00
Vinnie Falco b76d19c3cb Tidy up buffer_prefix overloads and test 2017-07-20 08:12:17 -07:00
Vinnie Falco 9e16e24ec4 Make buffers_view a public interface 2017-07-20 08:12:17 -07:00
Vinnie Falco 68a0f3af4f Rename prepare_buffer(s) to buffer_prefix (API Change) 2017-07-20 08:12:17 -07:00
Vinnie Falco 51f11f0902 Concept revision and documentation (API Change):
The concept type traits are renamed for consistency,
and consolidated into a single header file <beast/core/type_traits.hpp>

A new section, Core Concepts, is added to the documentation describing all
of the core utility classes and functions. This also includes a complete
explanation and sample program describing how to write asynchronous initiation
functions and their associated composed operations.
2017-07-20 08:12:16 -07:00
Vinnie Falco 043386aeb3 Move prepare_buffers to prepare_buffer.hpp (API Change)
fix #338
2017-07-20 08:12:16 -07:00
Vinnie Falco 7d8e40537a Remove placeholders (API Change) 2017-07-20 08:12:16 -07:00
Vinnie Falco f097f401cb Consolidate get_lowest_layer in type_traits.hpp
fix #347
2017-07-20 08:12:16 -07:00
Vinnie Falco 4edd797611 Add to_static_string:
This function converts integers to their decimal
representation as a static string.

In addition, static_string::resize no longer initializes
characters if the new size is larger.
2017-07-20 08:12:16 -07:00
Vinnie Falco 5c9e6c0fc0 Increase ostream test coverage 2017-07-20 08:12:16 -07:00
Vinnie Falco d9562ff525 Harmonize concepts and identifiers with net-ts (API Change):
fix #321

This synchronizes identifier names and some implementation details
with the Networking-TS document and reference implementation.
The following interfaces have changed:

* async_completion
* is_buffer_sequence (removed)
* is_const_buffer_sequence (was is_ConstBufferSequence)
* is_dynamic_buffer (was is_DynamicBuffer)
* is_mutable_buffer_sequence (was is_MutableBufferSequence)
* async_result (new)
* BEAST_HANDLER_TYPE macro (new)
* BEAST_INITFN_RESULT_TYPE macro (new)

Filename changes:

* async_result.hpp (was async_completion.hpp)
2017-07-20 08:12:16 -07:00
Vinnie Falco 84ece031f2 Use beast::string_view alias 2017-07-20 08:12:16 -07:00
Vinnie Falco fc0e356149 Rename to buffered_read_stream (API Change):
dynabuf_readstream is renamed to buffered_read_stream.
2017-07-20 08:12:16 -07:00
Vinnie Falco aa9f42cd06 Rename to static_buffer, static_buffer_n (API Change):
These classes are renamed:

* static_streambuf to static_buffer
* static_streambuf_n to static_buffer_n
2017-07-20 08:12:16 -07:00
Vinnie Falco 6e47e9a0ac Rename to flat_buffer, basic_flat_buffer (API Change):
These classes are renamed:

* flat_streambuf to flat_buffer
* basic_flat_streambuf to basic_flat_buffer
2017-07-20 08:12:16 -07:00
Vinnie Falco 24fd254690 Rename to multi_buffer, basic_multi_buffer (API Change):
These classes are renamed:

* streambuf to multi_buffer
* basic_streambuf to basic_multi_buffer
2017-07-20 08:12:16 -07:00
Vinnie Falco 38b473902a New buffers() replaces to_string() (API Change):
A new function, buffers(), returns an implementation defined object
which wraps a ConstBufferSequence and supports formatting to a
std::ostream.

The function to_string is removed, as the new implementation allows
conversion to string using boost::lexical_cast on the return value
of the call to buffers(). Streaming to an output stream is more
efficient: no dynamic allocations are performed.

Example:

    streambuf sb;
    std::cout << buffers(sb.data()) << std::endl;
2017-07-20 08:12:16 -07:00
Vinnie Falco 3add5f293c New ostream() returns dynamic buffer output stream (API Change):
This eliminates beast::write output for dynamic buffers and replaces
it with the function ostream() that wraps a caller provided dynamic
buffer and returns the result as a std::ostream derived object.
Callers may now produce formatted output into any object meeting the
requirements of DynamicBuffer using operator<< and the standard stream
modifiers such as std::endl.

This new technique is more efficient, as implementations of operator<<
can now write directly into the output using std::ostream::write and
std::ostream::put.

Example of use:

  beast::streambuf sb;
  beast::ostream(sb) << "Hello, world!" << std::endl;
2017-07-20 08:12:16 -07:00
Vinnie Falco f9996eee30 More flat_streambuf tests 2017-07-20 08:12:16 -07:00
Vinnie Falco b1f88a99b6 Add test_allocator to extras/test 2017-07-20 08:12:16 -07:00
Vinnie Falco 3c0d2a998e Simplify get_lowest_layer test 2017-07-20 08:12:16 -07:00
Vinnie Falco 040323305e Refactor static_string:
static_string interface now closely matches std::basic_string.
2017-07-20 08:12:16 -07:00
Vinnie Falco 4b19600dd2 Rename to detail::is_invocable
Fix #323
2017-07-20 08:12:15 -07:00
Vinnie Falco e7319aade1 Add flat_streambuf:
Objects of this type meet the requirements of DynamicBuffer
and offer an additional invariant: buffer sequences returned
by data() and prepare() are always of length one.
2017-07-20 08:12:15 -07:00
Sergey Lyubimov 3641521af7 Update CMake scripts for finding packages:
These changes require CMake version 3.7.2 or later.
2017-07-20 08:12:15 -07:00
Vinnie Falco 1f52f4a791 Split out and rename test stream classes 2017-07-20 08:12:15 -07:00
Vinnie Falco c468158a09 Update copyright dates 2017-07-20 08:12:14 -07:00
Vinnie Falco 51aa614a10 Tidy up tests and docs:
* Add handler_ptr test and increase coverage
* Add test for prepare_buffer
* Move is_call_possible tests to a .cpp file
* Tidy up docs and declarations
2017-07-20 08:12:14 -07:00
Vinnie Falco 7ef72b6ebc Move basic_streambuf to streambuf.hpp (API Change):
* Also change allocator element type to char
2017-07-20 08:12:14 -07:00
Vinnie Falco 911617c43f Add permessage-deflate WebSocket extension:
This implements the permessage-deflate WebSocket
extension as described in HyBi Working Group
draft-ietf-hybi-permessage-compression-28:
https://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-28

This extension allows messages to be compressed using
the raw "deflate" algorithm described in RFC 1951,
"DEFLATE Compressed Data Format Specification version 1.3":
https://www.ietf.org/rfc/rfc1951.txt
2017-07-20 08:12:14 -07:00
Vinnie Falco c594bbac3f Add optional yield_to arguments 2017-07-20 08:12:14 -07:00
Vinnie Falco 01e1fa2dc9 Implement asio dealloc-before-invoke guarantee:
fix #215

This change guarantees that temporary memory allocated
through the asio hooks by the Beast implementation is
deallocated before invoking the final handler when performing
composed operations.

The change is accomplished by replacing std::shared_ptr with
a thread-safe custom container handler_ptr to manage composed
operation state. The container tracks other instances which
manage the same object and resets them in a safe way before
invoking the final handler.

handler_ptr is provided as a public interface so that users of
this library can utilize the same idiom to write their own
composed operations.
2017-07-20 08:12:14 -07:00
Vinnie Falco 5089cf59ee Add zlib module:
The zlib module is a port of ZLib's raw deflate
algorithm to header-only C++11.
2017-07-20 08:12:14 -07:00
Vinnie Falco be67224390 Better buffer_cat:
buffer_cat now determines if all of the buffer sequences in
the list of passed buffer sequences each have value types which
are convertible to mutable_buffer. The returned concatenated
sequence will be a MutableBufferSequence if all the passed
buffer sequences meet the requirements of MutableBufferSequence,
else the returned concatenated sequence will be a ConstBufferSequence.
2017-07-20 08:12:13 -07:00
Vinnie Falco 6afa6afc98 Fix consuming_buffers value_type (API Change):
This fixes a bug where instantiations of consuming_buffers with
buffer sequence types whose value_type is not const_buffer or
mutable_buffer can cause compilation errors.

The function consumed_buffers is removed.
2017-07-20 08:12:13 -07:00
Vinnie Falco 5b041193f2 Increase code coverage 2017-07-20 08:12:13 -07:00
Vinnie Falco 6d2195514d Boost library min/max guidance:
fix #170
2017-07-20 08:12:13 -07:00
Vinnie Falco a2ea4f38c1 Move clamp to core 2017-07-20 08:12:13 -07:00
Vinnie Falco 1a53f52e34 Check invariants in parse_op:
This adds more assertions, comments, and clarification.
2017-07-20 08:12:13 -07:00