Commit Graph
195 Commits
Author SHA1 Message Date
Vinnie Falco e6c0d698ee binary, text are members of stream (API Change):
fix #446

* message_type is removed

Actions Required:

* Change call sites which use message_type with set_option
  to call stream::binary or stream::text instead.
2017-07-20 08:12:19 -07:00
Vinnie Falco f22895224b auto_fragment is a member of stream (API Change):
fix #374, fix #446

* auto_fragment option struct is removed

Actions Required:

* Change call sites which use auto_fragment with set_option
  to call stream::auto_fragment instead.
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 7b56f352b4 Add construct, destroy to handler_alloc
fix #432
2017-07-20 08:12:19 -07:00
Vinnie Falco 196d9c60fa multi_buffer implementation change (API Change):
fix #440

WARNING

multi_buffer constructor now takes a maximum size instead of the
"allocation size". This is a breaking change. The allocation size
feature is removed. To update calling code, remove the allocation
size parameter from call sites.

* multi_buffer now uses a geometric growth algorithm for better performance.
2017-07-20 08:12:19 -07:00
Vinnie Falco 74c26a8869 DynamicBuffer benchmarks
fix #441
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 7952578e1d Tune up static_buffer (API Change):
The static buffer is updated:

* reset() is no longer a member. Use b.consume(b.size()) instead.

* Simplified implementaton, uses asio instead of custom types

* Better stream performance: consuming the input makes room
  available in the output. This class is now suitable for
  HTTP reads.

These changes permit the static_buffer wrapper to adapt a user
memory buffer if desired, including a stack based array.
The static_buffer_n class may also be used for this purpose,
it comes with its own storage.
2017-07-20 08:12:19 -07:00
Vinnie Falco 6203074c92 Fix chunk header parsing
fix #431, fix #430
2017-07-20 08:12:18 -07:00
Vinnie Falco 7d89fdc46f Remove obsolete serializer allocator (API Change) 2017-07-20 08:12:18 -07:00
Vinnie Falco aa752e4dce Remove message free functions (API Change) 2017-07-20 08:12:18 -07:00
Vinnie Falco 3340666ad3 Remove message connection settings (API Change) 2017-07-20 08:12:18 -07:00
Vinnie Falco 943830f6ed Fields concept work 2017-07-20 08:12:18 -07:00
Vinnie Falco fb2f777b4d Use field in basic_parser 2017-07-20 08:12:18 -07:00
Vinnie Falco ca25eee0dd Use field in basic_fields and call sites 2017-07-20 08:12:18 -07:00
Vinnie Falco ace99bd6c0 Protect basic_fields special members (API Change) 2017-07-20 08:12:18 -07:00
Vinnie Falco 67df48daa6 Documentation work 2017-07-20 08:12:18 -07:00
Vinnie Falco 2df6783468 Refactor prepare (API Change) 2017-07-20 08:12:18 -07:00
Vinnie Falco 2af19481a9 Derive header from Fields (API Change) 2017-07-20 08:12:18 -07:00
Vinnie Falco 5f2e7560b6 Use allocator more in basic_fields
Fix #392
2017-07-20 08:12:18 -07:00
Vinnie Falco ff216a89a8 Add verb to on_request for parsers (API Change) 2017-07-20 08:12:18 -07:00
Vinnie Falco 1c063f5bf6 Add field enumeration 2017-07-20 08:12:18 -07:00
Vinnie Falco 9f7abcbe2d Remove header_parser (API Change) 2017-07-20 08:12:18 -07:00
Vinnie Falco fa28cba515 parser is constructible from other body types 2017-07-20 08:12:18 -07:00
Vinnie Falco 4b866cea36 Documentation work 2017-07-20 08:12:18 -07:00
Vinnie Falco b38f8260b8 Add HEAD request example 2017-07-20 08:12:18 -07:00
Vinnie Falco 3803c38dbd Refactor header status, reason, and target (API Change):
* header::result is a family of functions to replace header::status

* header interface now uses status enum and also ints

* reason-phrase is no longer stored unless the user explicitly
  requests it.

* When serializing, the standard reason is used for the
  corresponding status code unless the user has changed it.
2017-07-20 08:12:18 -07:00
Vinnie Falco 4f91e632bc Tidy up empty_body writer error 2017-07-20 08:12:18 -07:00
Vinnie Falco aa2c915c96 Canonicalize string_view parameter types 2017-07-20 08:12:18 -07:00
Vinnie Falco 048ee7523c Refactor method and verb (API Change):
The verb interfaces now use verb::unknown instead of
boost::optional<verb> == boost::none to indicate that
the request-method is an unrecognized string.

The http::header interface is modified to focus more on the
verb enum rather than the string. For recognized verbs, the
implementation stores an integer instead of the string.
Unknown verbs are still stored as strings.

* header::method now returns a verb
* header::method_string returns the method text
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 4b158e45ba Remove detail::sync_ostream
fix #418
2017-07-20 08:12:18 -07:00
Vinnie Falco 78d9e3bbce Documentation work 2017-07-20 08:12:18 -07:00
Vinnie Falco 00667f3cf2 Rename to parser (API Change):
* message_parser is renamed to parser
2017-07-20 08:12:18 -07:00
Vinnie Falco 88600beab0 Consolidate parsers to parser.hpp
fix #405
2017-07-20 08:12:18 -07:00
Vinnie Falco 86ce017ffe Documentation work 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 2141fabcf9 Tidy up chunk decorator (API Change):
* Rename to no_chunk_decorator
* Decorator no longer has to append "\r\n" to the returned string
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 e5cfe9c11f Refactor treatment of status code and obsolete reason (API Change):
fix #398

A new enum status is added for the status code.

The function obsolete_reason returns default reason phrasing.

If a response has an empty reason, the serializer will
automatically insert the default reason phrase for the
status code.
2017-07-20 08:12:17 -07:00
Vinnie Falco f7211da154 Refactor treatment of request-method (API Change):
fix #397

method enum class is added to represent all known request methods.
Functions are provided to convert from strings to and from the method
enumeration.

The fields container is modified to also work with the enum.
2017-07-20 08:12:17 -07:00
Vinnie Falco 060f4a007b Refactor serialization algorithms:
serializer interface is changed to be buffer-only, no streams,
and placed in its own header file.

Operations on serializers are moved to free functions as part
of the HTTP write family of synchronous and asynchronous algorithms.
2017-07-20 08:12:17 -07:00
Vinnie Falco d0d08e81f9 Rename to make_serializer 2017-07-20 08:12:17 -07:00
Vinnie Falco 75b0571e83 Refactor type_traits (API Change):
fix #373

* concepts.hpp is renamed to type_traits.hpp

* Body reader and writer concepts are renamed
2017-07-20 08:12:17 -07:00
Vinnie Falco 3664329ea7 Refactor HTTP serialization (API Change):
A new class `serializer` is introduced to permit incremental
serialization of HTTP messages. Existing free functions are
re-implemented in terms of this new class.

* The BodyReader concept is refined to support a greater variety
of strategies for providing buffers representing the body to
the serialization algorithms.

* Added buffer_body, a new model of Body which allows the caller
to provide a series of owned buffers using their own serialization
loop.

* Added empty_body, a model of Body which is for serialization only,
to represent HTTP messages with no content body.

* Removed overloads of write and async_write which send only
the HTTP header.

* Removed public interfaces for performing low-level chunk encoding.
2017-07-20 08:12:17 -07:00
Vinnie Falco b9bdb1bbbc Remove HTTP header aliases (API Change):
fix #382

* request_header and response_header are removed
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