Commit Graph
137 Commits
Author SHA1 Message Date
Vinnie Falco d3a5a05424 Documentation work 2017-06-03 21:03:05 -07:00
Vinnie Falco acf18fba1b Tidy up traits
fix #406
2017-06-03 18:40:20 -07:00
Vinnie Falco 6cb188ea45 Remove detail::sync_ostream
fix #418
2017-06-03 18:25:15 -07:00
Vinnie Falco d6092bc5c8 Documentation work 2017-06-03 14:33:16 -07:00
Vinnie Falco 4707b21a68 Rename to parser (API Change):
* message_parser is renamed to parser
2017-06-03 11:29:49 -07:00
Vinnie Falco 3cb385dc2d Consolidate parsers to parser.hpp
fix #405
2017-06-03 11:29:48 -07:00
Vinnie Falco ef0b121c59 Rename to buffer_cat_view (API Change)
fix #408
2017-06-03 11:29:48 -07:00
Vinnie Falco b9df187557 Tidy up chunk decorator (API Change):
* Rename to no_chunk_decorator
* Decorator no longer has to append "\r\n" to the returned string
2017-06-03 11:29:41 -07:00
Vinnie Falco fe75a7ca2a 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-06-02 19:12:34 -07:00
Vinnie Falco d977bf2946 Disable operator<< for buffer_body
fix #363
2017-05-30 16:16:20 -07:00
Vinnie Falco 5db707a037 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-05-30 15:59:54 -07:00
Vinnie Falco 9a585a82d9 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-05-30 15:59:50 -07:00
Vinnie Falco 60047123ae Documentation work 2017-05-30 09:09:13 -07:00
Vinnie Falco 34ea0b37c4 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-05-28 19:35:20 -07:00
Vinnie Falco 407b0462d4 Rename to make_serializer 2017-05-28 16:00:06 -07:00
Vinnie Falco c29451a8dd Refactor type_traits (API Change):
fix #373

* concepts.hpp is renamed to type_traits.hpp

* Body reader and writer concepts are renamed
2017-05-28 16:00:05 -07:00
Vinnie Falco 8578419433 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-05-28 15:58:27 -07:00
Vinnie Falco f8612aa1df Remove HTTP header aliases (API Change):
fix #382

* request_header and response_header are removed
2017-05-28 15:55:58 -07:00
Vinnie Falco c23f1e2fbe Fix header::reason 2017-05-27 23:00:04 -07:00
Vinnie Falco 949504a03e Fix async return values in docs 2017-05-24 12:36:08 -07:00
Vinnie Falco cd9f41b1a0 Use BOOST_STATIC_ASSERT
fix #380
2017-05-24 12:36:08 -07:00
Vinnie Falco 1b1daa7b29 Tidy up read_size_helper and dynamic buffers
fix #376
2017-05-24 12:36:07 -07:00
Vinnie Falco bf0145da67 Use BOOST_THROW_EXCEPTION
fix #370
2017-05-24 12:36:07 -07:00
Vinnie Falco 0bdb148765 Make buffers_view a public interface 2017-05-18 19:38:58 -07:00
Vinnie Falco 88adbdd95e Remove handler helpers, tidy up hook invocations (API Change) 2017-05-14 15:00:52 -07:00
Vinnie Falco c3fd6f9087 Tidy up formal parameter names
fix #361
2017-05-14 15:00:51 -07:00
Vinnie Falco d81196294f 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-05-14 15:00:34 -07:00
Vinnie Falco bdae92a8b4 Replace asynchronous helper macros with template aliases (API Change) 2017-05-12 17:40:00 -07:00
Vinnie Falco b7184f3a69 Return http::error::end_of_stream on HTTP read eof (API Change)
fix #350
2017-05-10 10:03:51 -07:00
Vinnie Falco 5631936106 Tidy up HTTP reason_string (API Change):
fix #182

reason_string() is now located in <beast/http/message.hpp>
and returns a string view rather than char const*.
2017-05-09 07:23:10 -07:00
Vinnie Falco 2bf515069d 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-05-09 07:23:09 -07:00
Vinnie Falco 728e9d8e70 Tidy up basic_parser javadocs 2017-05-09 07:23:09 -07:00
Vinnie Falco 1c9067b1da Use beast::string_view alias 2017-05-09 07:23:09 -07:00
Vinnie Falco 24b66864d8 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-05-09 07:23:08 -07:00
Vinnie Falco 69259efe87 Rename to multi_buffer, basic_multi_buffer (API Change):
These classes are renamed:

* streambuf to multi_buffer
* basic_streambuf to basic_multi_buffer
2017-05-09 07:23:07 -07:00
Vinnie Falco a7ef4f53dc 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-05-08 15:46:03 -07:00
Vinnie Falco ff5e659545 Refactor http::header contents (API Change):
fix #124

The http::header data members "method", "url", and "reason"
are changed from data members, to pairs of get and set
functions which forward the call to the Fields type used
to instantiate the template.

Previously, these data members were implemented using
std::string. With this change, the implementation of the
Fields type used to instantiate the template is now in
control of the representation of those values. This permits
custom memory allocation strategies including uniform use of
the Allocator type already provided to beast::http::basic_fields.
2017-05-07 13:40:04 -07:00
Vinnie Falco 5596e97656 Prevent basic_fields operator[] assignment
fix #258
2017-05-07 13:39:41 -07:00
Vinnie Falco b14102092d Fix narrowing warning in table constants
fix #344
2017-05-07 13:18:41 -07:00
Vinnie Falco 21ef97d220 Rename to http::dynamic_body, consolidate header:
fix #284

* streambuf_body is renamed to dynamic_body
* basic_dynabuf_body is renamed to basic_dynamic_body
2017-05-05 21:00:56 -07:00
Vinnie Falco c86fee9513 Move everything in basic_fields.hpp to fields.hpp (API Change)
fix #320
2017-05-05 21:00:55 -07:00
Vinnie Falco dd2a514ef2 Tidy up doc declarations 2017-05-04 18:58:34 -07:00
Vinnie Falco 403011fdbe Remove http::empty_body (API Change) 2017-05-04 18:58:33 -07:00
Vinnie Falco f47b66179e New HTTP interfaces (API Change):
fix #123
fix #154
fix #265

This completely replaces the HTTP parser used to read and
parse incoming messages. The new version is faster than
the old one, and written in fewer lines. A summary of
changes:

* parse and async_parse renamed to read and async_read

* basic_parser is optimized for linear buffers,
  use flat_streambuf for the best performance with these
  functions:

  - http::read
  - http::read_some
  - http::async_read
  - http::async_read_some

* The overloads of read() and async_read() which take
  just a header have been removed, since they would
  throw away important parse metadata.

* The derived class callbacks for basic_parser have
  been streamlined. All strings passed to callbacks
  are presented in their entirety, instead of being
  provided in pieces.

These changes allow use-cases that were previously
difficult or impossible, such as:

- Efficient relaying

- Late body type commitment

- Expect: 100-continue handling
2017-05-04 18:58:33 -07:00
Vinnie Falco f6835b8db4 Rename to BEAST_DOXYGEN
fix #316
2017-05-04 18:58:33 -07:00
Vinnie Falco df661658ee Require Visual Studio 2015 Update 3 or later
fix #216
2017-04-12 18:36:59 -07:00
Vinnie Falco b893749e29 Remove http Writer suspend and resume feature (API Change):
fix #154

The resume_context parameter passed to instances
of Writer during HTTP serialization is removed.
2017-04-10 15:54:29 -07:00
Vinnie Falco 66cdb378f2 Fix illegal HTTP characters accepted as hex zero 2017-02-24 13:24:30 -05:00
Vinnie Falco 6dfd9f9fe8 Fix compilation error in non-template class
fix #267
2017-02-22 18:15:48 -05:00
Vinnie Falco 195f974872 Fix HTTP split parse edge case:
fix #257

This fixes a problem when doing split parsing (header then body).
The problem arises when the first buffer passed to the header
parser contains exactly the full header and nothing more. The
symptom is that when parsing the body, the parse will erroneously
be considered complete.
2017-02-07 19:59:04 -05:00