<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">Message Containers</string>
    <string name="">Beast provides a single class template __message__ and some aliases which model HTTP/1 and [@https://tools.ietf.org/html/rfc7540 HTTP/2] messages:</string>
    <string name="">Message</string>
    <string name="17">Name</string>
    <string name="17">Description</string>
    <string name="">__message__</string>
    <string name="">"/// An HTTP message\ntemplate&lt;\nbool isRequest,             // `true` for requests, `false` for responses\nclass Body,                 // Controls the container and algorithms used for the body\nclass Fields = fields&gt;      // The type of container to store the fields\nclass message;"</string>
    <string name="">[link beast.ref.boost__beast__http__request `request`]</string>
    <string name="">/// A typical HTTP request\ntemplate&lt;class Body, class Fields = fields&gt;\nusing request = message&lt;true, Body, Fields&gt;;</string>
    <string name="">[link beast.ref.boost__beast__http__response `response`]</string>
    <string name="">/// A typical HTTP response\ntemplate&lt;class Body, class Fields = fields&gt;\nusing response = message&lt;false, Body, Fields&gt;;</string>
    <string name="">The container offers value semantics including move and copy if supported by __Body__ and __Fields__. User defined template function parameters can accept any message, or can use partial specialization to accept just requests or responses. The default __fields__ is a provided associative container using the standard allocator and supporting modification and inspection of fields. As per __rfc7230__, a non-case-sensitive comparison is used for field names. User defined types for fields are possible. The `Body` type determines the type of the container used to represent the body as well as the algorithms for transferring buffers to and from the container. The library comes with a collection of common body types. As with fields, user defined body types are possible.</string>
    <string name="">Sometimes it is desired to only work with a header. Beast provides a single class template __header__ and some aliases to model HTTP/1 and HTTP/2 headers:</string>
    <string name="">Header</string>
    <string name="66">Name</string>
    <string name="66">Description</string>
    <string name="">__header__</string>
    <string name="">"/// An HTTP header\ntemplate&lt;\nbool isRequest,             // `true` for requests, `false` for responses\nclass Fields = fields&gt;      // The type of container to store the fields\nclass header;"</string>
    <string name="">[link beast.ref.boost__beast__http__request_header `request_header`]</string>
    <string name="">/// A typical HTTP request header\ntemplate&lt;class Fields&gt;\nusing request_header = header&lt;true, Fields&gt;;</string>
    <string name="">[link beast.ref.boost__beast__http__response_header `response_header`]</string>
    <string name="">/// A typical HTTP response header\ntemplate&lt;class Fields&gt;\nusing response_header = header&lt;false, Fields&gt;;</string>
    <string name="">Requests and responses share the version, fields, and body but have a few members unique to the type. This is implemented by declaring the header classes as partial specializations of `isRequest`. __message__ is derived from __header__; a message may be passed as an argument to a function taking a suitably typed header as a parameter. Additionally, `header` is publicly derived from `Fields`; a message inherits all the member functions of `Fields`. This diagram shows the inheritance relationship between header and message, along with some of the notable differences in members in each partial specialization:</string>
    <string name="">Body Types</string>
    <string name="">Beast defines the __Body__ concept, which determines both the type of the [link beast.ref.boost__beast__http__message.body `message::body`] member (as seen in the diagram above) and may also include algorithms for transferring buffers in and out. These algorithms are used during parsing and serialization. Users may define their own body types which meet the requirements, or use the ones that come with the library:</string>
    <string name="">[link beast.ref.boost__beast__http__buffer_body `buffer_body`]</string>
    <string name="">A body whose [link beast.ref.boost__beast__http__buffer_body__value_type `value_type`] holds a raw pointer and size to a caller-provided buffer. This allows for serialization of body data coming from external sources, and incremental parsing of message body content using a fixed size buffer.</string>
    <string name="">[link beast.ref.boost__beast__http__dynamic_body `dynamic_body`]\n\n[link beast.ref.boost__beast__http__basic_dynamic_body `basic_dynamic_body`]</string>
    <string name="">A body whose `value_type` is a __DynamicBuffer__. It inherits the insertion complexity of the underlying choice of dynamic buffer. Messages with this body type may be serialized and parsed.</string>
    <string name="">[link beast.ref.boost__beast__http__empty_body `empty_body`]</string>
    <string name="">A special body with an empty `value_type` indicating that the message has no body. Messages with this body may be serialized and parsed; however, body octets received while parsing a message with this body will generate a unique error.</string>
    <string name="">[link beast.ref.boost__beast__http__file_body `file_body`]\n\n[link beast.ref.boost__beast__http__basic_file_body `basic_file_body`]</string>
    <string name="">This body is represented by a file opened for either reading or writing. Messages with this body may be serialized and parsed. HTTP algorithms will use the open file for reading and writing, for streaming and incremental sends and receives.</string>
    <string name="">[link beast.ref.boost__beast__http__span_body `span_body`]</string>
    <string name="">A body whose `value_type` is a [@boost:/libs/core/doc/html/core/span.html `span`], a non-owning reference to a single linear buffer of bytes. Messages with this body type may be serialized and parsed.</string>
    <string name="">[link beast.ref.boost__beast__http__string_body `string_body`]\n\n[link beast.ref.boost__beast__http__basic_string_body `basic_string_body`]</string>
    <string name="">A body whose `value_type` is `std::basic_string` or `std::string`. Insertion complexity is amortized constant time, while capacity grows geometrically. Messages with this body type may be serialized and parsed. This is the type of body used in the examples.</string>
    <string name="">[link beast.ref.boost__beast__http__vector_body `vector_body`]</string>
    <string name="">A body whose `value_type` is `std::vector`. Insertion complexity is amortized constant time, while capacity grows geometrically. Messages with this body type may be serialized and parsed.</string>
    <string name="">Usage</string>
    <string name="">These examples show how to create and fill in request and response objects: Here we build an [@https://tools.ietf.org/html/rfc7231#section-4.3.1 HTTP GET] request with an empty message body:</string>
    <string name="">Create Request</string>
    <string name="193">Statements</string>
    <string name="193">Serialized Result</string>
    <string name="">[http_snippet_2]</string>
    <string name="">GET /index.htm HTTP/1.1\\r\\n\nAccept: text/html\\r\\n\nUser-Agent: Beast\\r\\n\n\\r\\n</string>
    <string name="">In this code we create an HTTP response with a status code indicating success. This message has a body with a non-zero length. The function [link beast.ref.boost__beast__http__message.prepare_payload `message::prepare_payload`] automatically sets the Content-Length or Transfer-Encoding field depending on the content and type of the `body` member. Use of this function is optional; these fields may also be set explicitly.</string>
    <string name="">Create Response</string>
    <string name="214">Statements</string>
    <string name="214">Serialized Result</string>
    <string name="">[http_snippet_3]</string>
    <string name="">HTTP/1.1 200 OK\\r\\n\nServer: Beast\\r\\n\nContent-Length: 13\\r\\n\n\\r\\n\nHello, world!</string>
    <string name="">The implementation will automatically fill in the obsolete [@https://tools.ietf.org/html/rfc7230#section-3.1.2 reason-phrase] from the status code when serializing a message. Or it may be set directly using [link beast.ref.boost__beast__http__header.reason.overload2 `header::reason`].</string>
</resources>
