Commit Graph

953 Commits

Author SHA1 Message Date
Vinnie Falco f22458539b Add write, async_write, operator<< for message_headers:
fix #155

This adds overloads of write, async_write, and operator<<
for message_headers.
2016-11-12 11:27:55 -05:00
Vinnie Falco ea48bcf4e6 Make chunk_encode public:
fix #154, fix #156

This adds public interfaces for transforming buffer
sequences into their chunk-encoded equivalents. The
transformations are O(1) in space and time.
2016-11-12 11:27:55 -05:00
Vinnie Falco f6dd744fd1 Refactor message and message_headers declarations:
message_headers is now a set of partial class template
specializations instead of a template class alias. This solves
a problem where template functions taking message_headers as a
parameter could not deduce argument types, since std::conditional
obscured the deduced context.

Both classes are refactored to share declarations using an #ifdef,
to eliminate an ugly set of extra declarations needed when building
the documentation.

Copy and move class special members are added.

A new function message::base() is provided which returns the
message_headers portion of a message.
2016-11-12 11:27:55 -05:00
Vinnie Falco 9fd8aede3d Move sync_ostream to core/detail 2016-11-12 11:27:54 -05:00
Vinnie Falco c98b2d3728 Optimize mask operations 2016-11-12 11:27:54 -05:00
Miguel Portilla d4dfc1ac74 Optimize utf8 validation 2016-11-12 11:27:54 -05:00
Vinnie Falco 7b4de4b951 Set version to 1.0.0-b18 2016-11-04 08:02:50 -04:00
Vinnie Falco feb520414c Add websocket::stream pong and async_pong 2016-11-03 18:58:31 -04:00
Vinnie Falco d4ffde5982 Close connection during async_read on close frame:
fix #163
2016-11-01 09:01:02 -04:00
Vinnie Falco 644d518db5 Move clamp to core 2016-11-01 09:01:01 -04:00
Vinnie Falco 427ba388f7 Fix write_frame masking and auto-fragment handling 2016-11-01 09:01:01 -04:00
Vinnie Falco 54a51b1232 Write buffer option does not change capacity 2016-11-01 09:01:01 -04:00
Vinnie Falco 591dbc07f5 Meet DynamicBuffer requirements for static_streambuf 2016-11-01 09:01:00 -04:00
Vinnie Falco 46d5e7256c Reorganize source files and definitions 2016-11-01 09:01:00 -04:00
Mike Ellery efa4b8f30f Override incremental link flags:
fix #160

Disable incremental linking for RelWithDebInfo builds on MSVC.
2016-11-01 09:00:59 -04:00
Vinnie Falco eef6e8608d Higher optimization settings for MSVC builds 2016-11-01 09:00:59 -04:00
Vinnie Falco b6f3a3654d Check invariants in parse_op:
This adds more assertions, comments, and clarification.
2016-10-30 18:56:00 -04:00
Vinnie Falco 47b0fa662f Remove unused field in test 2016-10-30 18:55:19 -04:00
Vinnie Falco 8b8e57eaad unit_test improvements:
* New overload of fail() specifies file and line
* BEAST_EXPECTS only evaluates the reason string on a failure
  - This speeds up tests that call BEAST_EXPECTS
2016-10-30 18:55:15 -04:00
Vinnie Falco e90725267d Clean up message docs 2016-10-30 18:55:10 -04:00
Vinnie Falco 1e3543f63e Set version to 1.0.0-b17 2016-10-20 17:26:17 -04:00
Vinnie Falco de97a69012 Trim unused code 2016-10-20 17:22:42 -04:00
Vinnie Falco 796b484bab Doc fixes 2016-10-20 17:22:41 -04:00
Andrew Whatson 95c37e23f0 Fix unused parameter warnings and missing includes:
fix #127

* Added beast::detail::ignore_unused based on boost::ignore_unused
* Added -Wextra compilation flag when building with gcc
* Fixed all unused parameter warnings with ignore_unused
* Fixed all missing includes when building each .hpp separately
2016-10-20 17:22:40 -04:00
Miguel Portilla 8b0d2857b8 Refactor read_size_helper 2016-10-20 17:22:40 -04:00
Denis Andrejew 97a9dcb598 Improve websocket example in README.md
fix #138

* Refactoring for clarity
2016-10-20 17:22:40 -04:00
Vinnie Falco 236caef873 Engaged invokable is destructible:
fix #147
2016-10-20 17:22:39 -04:00
Vinnie Falco d107ba1c1d Add headers_parser:
This allows just the HTTP headers to be parsed, and
the choice of body to be deferred to a subsequent
call to parse.
2016-10-20 17:22:39 -04:00
Vinnie Falco 2f90627dd6 Fix handling of body_what::pause in basic_parser_v1 2016-10-20 17:22:38 -04:00
Vinnie Falco 9353d043b0 Add basic_parser_v1::reset 2016-10-20 17:22:38 -04:00
Vinnie Falco 658e03ca35 Add on_body_what parser callback (API Change):
These changes support parsing the headers separately from the body.

* on_headers now returns void
* on_body_what is a new required callback which returns body_what
2016-10-20 17:22:37 -04:00
Vinnie Falco 50bd4460cb Fix parser traits detection (API Change):
basic_parser_v1 now requires that all callbacks appropriate
to the message are present and have the correct signatures.
Compile errors will result from compiling parsers which are
missing callbacks.
2016-10-20 17:22:37 -04:00
Vinnie Falco df8d306909 Tidy up documentation:
fix #135

* Fix broken references
* Move doc debug headers to extras/
* Add rfc7230 utility classes to quick reference
2016-10-20 17:22:37 -04:00
Vinnie Falco 47105f8454 Tidy up basic_headers for documentation 2016-10-20 17:22:36 -04:00
Vinnie Falco ada1f60e3e Refine message class hierarchy:
Two new objects, request_headers and response_headers,
represent the portion of HTTP messages excluding the body.
2016-10-20 17:22:36 -04:00
Vinnie Falco cf43f516d2 Rework HTTP concepts (API Change):
fix #139, fix #140

* Writer uses write instead of operator()
* Refactor traits to use void_t
* Remove is_ReadableBody, is_WritableBody
* Add has_reader, has_writer, is_Reader, is_Writer
* More friendly compile errors on failed concept checks
2016-10-17 11:11:57 -04:00
Vinnie Falco 8a261ca923 HTTP Reader (API Change):
fix #114, fix #117, fix #136

* Added init() to Reader requirements
* Reader must be nothrow constructible
* Reader is now constructed right before reading the body
  - The message passed on construction is filled in
2016-10-17 11:11:57 -04:00
Vinnie Falco 183055a74c Parser callbacks may not throw (API Change) 2016-10-17 11:11:56 -04:00
Vinnie Falco ebebe52612 Add basic_streambuf::alloc_size
fix #133
2016-10-17 11:11:56 -04:00
Vinnie Falco c9cd171c19 Fix basic_streambuf::capacity 2016-10-17 11:11:56 -04:00
Vinnie Falco 0eb0e485c3 Tidying:
fix #85

* Remove unnecessary boost/system includes
* Remove unused headers_type from write_preparation
* Use braced-init style construction
* handler_alloc doc update
2016-10-17 11:11:51 -04:00
Evgeniy c5c436d5a3 Change implicit_value to default_value 2016-10-17 11:11:33 -04:00
Vinnie Falco 01f939d68e Set version to 1.0.0-b16 2016-10-14 16:14:05 -04:00
Vinnie Falco 206d0a9b65 Fix websocket failure tests 2016-10-14 16:13:59 -04:00
Vinnie Falco 6b4fb28cee Fix Writer exemplar in docs 2016-10-14 15:03:58 -04:00
Vinnie Falco 4224a3a2db Relax ForwardIterator requirements in FieldSequence 2016-10-14 15:03:58 -04:00
Vinnie Falco 14d7f8d362 Refactor base_parser_v1 callback traits:
When the derived class provides a member function with the
corresponding callback name, but the signature is different,
a compile error will be generated instead of silently ignoring
the member function.
2016-10-14 14:12:43 -04:00
Vinnie Falco d81234435f Add pause option to on_headers interface:
* on_headers returns enum body_what
* body_what::pause lets caller receive headers during the parse
2016-10-14 14:12:42 -04:00
Vinnie Falco c59bd53f48 Improve first line serialization 2016-10-14 14:12:42 -04:00
Vinnie Falco 78ff20b005 Constrain parser_v1 constructor 2016-10-14 14:12:42 -04:00