Commit Graph
209 Commits
Author SHA1 Message Date
Vinnie Falco 8f4e7fd0a0 Fix unused variable warnings 2017-07-20 08:15:28 -07:00
Vinnie Falco e477574681 Remove make_serializer (API Change):
Actions Required:

* Replace calls to make_serializer with variable declarations
2017-07-20 08:15:28 -07:00
Vinnie Falco b2ab40f09c Doc tidying
fix #521, fix #524
2017-07-20 08:15:28 -07:00
Vinnie Falco bd4d1cbe91 async_write requires a non-const message:
This is necessary to meet the requirements for
asynchronous operations:

http://www.boost.org/doc/libs/1_64_0/doc/html/boost_asio/reference/asynchronous_operations.html

Specifically, that the caller must ensure the validity of the message
argument until the handler is invoked.

object
2017-07-20 08:15:28 -07:00
Vinnie Falco 5613ce7e97 Add http::is_fields trait
fix #515
2017-07-20 08:15:27 -07:00
Vinnie Falco 56a561da9a message::prepare_payload replaces message::prepare (API Change):
Actions Required:

* Change calls to msg.prepare to msg.prepare_payload. For messages
  with a user-defined Fields, provide the function prepare_payload_impl
  in the fields type according to the Fields requirements.
2017-07-20 08:15:27 -07:00
Vinnie Falco f9f6e1e0cc Refine FieldsReader concept (API Change)
* FieldsReader now requires chunked() and keep_alive()

* serializer logic calls into the reader to calculate
  the message metadata

* Removed some of the previous requirements of FieldsReader

Actions Required:

* Implement chunked() and keep_alive() for user defined FieldsReader types.
2017-07-20 08:15:27 -07:00
Vinnie Falco 50902c3938 parser requires basic_fields (API Change):
* `parser` is now templated on Allocator

* `parser` only produces messages using `basic_fields<Allocator>`
  as the Fields type.

* message-oriented read and async_read only work on messages
  using basic_fields as the Fields type.

Actions Required:

* Callers using `parser` with Fields types other than basic_fields
  will need to create their own subclass of basic_parser to work
  with their custom fields type.
2017-07-20 08:15:27 -07:00
Vinnie Falco 4d393f4c2a Clear the error faster 2017-07-20 08:15:27 -07:00
Vinnie Falco 8f627b0748 Fix shadowing warnings
fix #510
2017-07-20 08:15:27 -07:00
Vinnie Falco c8b8439ebc Tidy up names in error categories 2017-07-20 08:15:27 -07:00
Vinnie Falco 5a2d78849f status-codes is unsigned (API Change) 2017-07-20 08:15:27 -07:00
Vinnie Falco 798ff25795 header::version is unsigned (API Change) 2017-07-20 08:15:27 -07:00
Vinnie Falco 8c3cc96a27 Add message::header_part() 2017-07-20 08:15:27 -07:00
Vinnie Falco b5306a5712 String comparisons are public interfaces 2017-07-20 08:15:26 -07:00
Vinnie Falco 611e610c0c Change Body::size signature (API Change):
fix #497

This changes the function signature to accept the `value_type`
instead of the entire message.

Actions Required:

* For any user-defined models of Body, change the function signature
  to accept `value_type const&` and modify the function definition
  accordingly.
2017-07-20 08:15:26 -07:00
Vinnie Falco e5a7ff300f Better message formal parameter names
fix #476
2017-07-20 08:15:26 -07:00
Vinnie Falco dba4be01ab Fix parsing chunk size with leading zeroes
fix #496
2017-07-20 08:15:26 -07:00
Vinnie Falco 5808fa247b Remove redundant code 2017-07-20 08:15:26 -07:00
Vinnie Falco 500fa6aaaa Use static string in basic_fields::reader
fix #493
2017-07-20 08:15:26 -07:00
Vinnie Falco b4c2073973 basic_parser::put doc
fix #494
2017-07-20 08:15:26 -07:00
Vinnie Falco 648d1bc789 basic_fields::set optimization:
fix #495
2017-07-20 08:15:26 -07:00
Vinnie Falco f64109d79a Fix basic_fields insert ordering 2017-07-20 08:15:26 -07:00
Vinnie Falco eb7e971c7a Renamed to basic_fields::set (API Change):
* `replace` is renamed to `set`

Actions Required:

* Rename calls to `basic_fields::replace` to `basic_fields::set`
2017-07-20 08:15:26 -07:00
Vinnie Falco 6531a3c6d3 Specification for http read 2017-07-20 08:15:26 -07:00
Vinnie Falco 02419f53fa Qualify size_t in message template 2017-07-20 08:15:26 -07:00
Vinnie Falco 164569157a Update doc/ for docca 2017-07-20 08:15:26 -07:00
Vinnie Falco 8fa756aee6 Documentation work 2017-07-20 08:12:20 -07:00
Vinnie Falco 61a83ba769 Fix message.hpp javadocs 2017-07-20 08:12:20 -07:00
Vinnie Falco ca109693fb Reset error codes
fix #478
2017-07-20 08:12:20 -07:00
Vinnie Falco 5058217c35 HTTP/1 is the default version
fix #482
2017-07-20 08:12:20 -07:00
Vinnie Falco 0eb3a6b77e Call on_chunk when the extension is empty
fix #435
2017-07-20 08:12:20 -07:00
Vinnie Falco 7712ca09b2 Add string_view_body 2017-07-20 08:12:20 -07:00
Vinnie Falco 0f54bc72a4 Add provisional IANA header field names
fix #473
2017-07-20 08:12:20 -07:00
Vinnie Falco a49c096042 read_size replaces read_size_helper:
* detail::read_size_helper is removed

* public function read_size helps determine the optimum
  size for calls to a DynamicBuffer's prepare function.

* special case for Asio types which don't conform to
  the concept but have their own helper function.
2017-07-20 08:12:20 -07:00
Vinnie Falco ff8be0e931 Avoid a parser allocation using non-flat buffer:
When the parser is presented with an input buffer
sequence with length greater than one, the input is
flattened using stack space instead of dynamic
allocation if the buffer size is no greater than 8192.
2017-07-20 08:12:19 -07:00
Vinnie Falco 87c6e69d9f Don't allocate memory to handle obs-fold 2017-07-20 08:12:19 -07:00
Vinnie Falco 857fc22667 Fix incorrect use of [[fallthrough]]
fix #468
2017-07-20 08:12:19 -07:00
Vinnie Falco f44380159a Retain ownership when reading using a message
fix #469
2017-07-20 08:12:19 -07:00
Vinnie Falco 8c4136bb73 basic_fields refactor (API Change):
* Container interface more closely matches std::vector

* While preserving the invariant that duplicate fields
  with the same case-insensitive name have their order
  preserved.
2017-07-20 08:12:19 -07:00
Vinnie Falco 49a2b33b82 basic_fields members and coverage 2017-07-20 08:12:19 -07:00
Vinnie Falco 78f4858e98 Fix read_size_helper usage:
read_size_helper can return zero if the buffer reaches
its maximum size, causing infinite loops in HTTP. The
function maybe_read_size_helper is provided to throw
an exception instead of returning a value for this case.
2017-07-20 08:12:19 -07:00
Vinnie Falco e4fdeecc3b Fix basic_parser::maybe_flatten (#462) 2017-07-20 08:12:19 -07:00
Vinnie Falco 44995bf071 Documentation work 2017-07-20 08:12:19 -07:00
Vinnie Falco b49b23ee83 finish(error_code&) is a BodyReader requirement (API Change) 2017-07-20 08:12:19 -07:00
Vinnie Falco 669b1feae1 Documentation work 2017-07-20 08:12:19 -07:00
Vinnie Falco 04522398e0 Fix infinite loop in basic_parser
fix #452
2017-07-20 08:12:19 -07:00
Vinnie Falco 55358835c6 Use BOOST_FALLTHROUGH
fix #437
2017-07-20 08:12:19 -07:00
Vinnie Falco cff5be3837 Documentation work 2017-07-20 08:12:19 -07:00
Vinnie Falco 0a5fec1e9d Fix operator<< for header 2017-07-20 08:12:19 -07:00