<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">Chunked Encoding</string>
    <string name="">For message payloads whose size is not known ahead of time, HTTP version 1.1 defines the [@https://tools.ietf.org/html/rfc7230#section-4.1 [\'chunked]] transfer coding. This coding consists of zero or more [@https://tools.ietf.org/html/rfc7230#section-4.1 [\'chunked bodies]], followed by a [@https://tools.ietf.org/html/rfc7230#section-4.1 [\'last chunk]]. Each chunked body may contain optional application-defined, connection-specific [@https://tools.ietf.org/html/rfc7230#section-4.1.1 [\'chunk-extensions]]. The last chunk may contain additional HTTP field values in a section of the last chunk called a [@https://tools.ietf.org/html/rfc7230#section-4.1.2 [\'chunk-trailer]]. The field values are \"promised\" in the header as a comma delimited list of field names in the [@https://tools.ietf.org/html/rfc7230#section-4.4 [*Trailer]] field value. Clients indicate their willingness to accept trailers by including the \"trailers\" token in the [@https://tools.ietf.org/html/rfc7230#section-4.3 [*TE]] field value.</string>
    <string name="">Serializing Chunks</string>
    <string name="">The __serializer__ automatically applies the chunked transfer encoding when a message returns `true` from [link beast.ref.boost__beast__http__message.chunked.overload1 `message::chunked`]. The boundaries between chunks emitted by the serializer are implementation defined. Chunk extensions and trailers are omitted. Applications which need precise control over the chunk boundaries, extensions, and trailers may use a set of helper classes which enable manual emission of message payloads using chunk encoding.</string>
    <string name="">To use these helper classes, first serialize the header portion of the message using the standard interface. Then prepare the buffers, chunk extensions, and desired trailers, and use them with these helpers:</string>
    <string name="">Chunking Helpers</string>
    <string name="47">Name</string>
    <string name="47">Description</string>
    <string name="">[link beast.ref.boost__beast__http__chunk_body `chunk_body`]</string>
    <string name="">A buffer sequence representing a complete chunk body.</string>
    <string name="">[link beast.ref.boost__beast__http__chunk_crlf `chunk_crlf`]</string>
    <string name="">A buffer sequence representing the CRLF (`\"\\r\\n\"`) delimiter. This class is used when the caller desires to emit the chunk body in two or more individual stream operations.</string>
    <string name="">[link beast.ref.boost__beast__http__chunk_extensions `chunk_extensions`]\n\n[link beast.ref.boost__beast__http__basic_chunk_extensions `basic_chunk_extensions`]</string>
    <string name="">This is a simple, allocating container which lets callers easily build up a set of chunk extensions.</string>
    <string name="">[link beast.ref.boost__beast__http__chunk_header `chunk_header`]</string>
    <string name="">A buffer sequence representing a hex-encoded chunk size, followed by an optional set of chunk extensions, including the terminating CRLF (`\"\\r\\n\"`) delimiter which precedes the chunk body. This class is used when the caller desires to emit the chunk body in two or more individual stream operations.</string>
    <string name="">[link beast.ref.boost__beast__http__chunk_last `chunk_last`]</string>
    <string name="">A buffer sequence representing a last chunk. The last chunk indicates the end of the chunked message payload, and may contain optional trailer fields.</string>
    <string name="">[link beast.ref.boost__beast__http__make_chunk `make_chunk`]\n\n[link beast.ref.boost__beast__http__make_chunk_last `make_chunk_last`]</string>
    <string name="">These helper functions are used to construct a chunk or last chunk directly at call sites.</string>
    <string name="">We demonstrate the use of these objects first by declaring a function which returns the next buffer sequence to use as a chunk body:</string>
    <string name="">This example demonstrates sending a complete chunked message payload manually. No chunk extensions or trailers are emitted:</string>
    <string name="">The following code sends additional chunks, and sets chunk extensions using the helper container. The container automatically quotes values in the serialized output when necessary:</string>
    <string name="">Callers can take over the generation and management of the extensions buffer by passing a non-owning string. Note that this requires the string contents to adhere to the correct syntax for chunk extensions, including the needed double quotes for values which contain spaces:</string>
    <string name="">The next code sample emits a chunked response which promises two trailer fields and delivers them in the last chunk. The implementation allocates memory using the default or a passed-in allocator to hold the state information required to serialize the trailer:</string>
    <string name="">Using a custom allocator to serialize the last chunk:</string>
    <string name="">Alternatively, callers can take over the generation and lifetime management of the serialized trailer fields by passing in a non-owning string:</string>
    <string name="">For the ultimate level of control, a caller can manually compose the chunk itself by first emitting a header with the correct chunk body size, and then by emitting the chunk body in multiple calls to the stream write function. In this case the caller is responsible for also emitting the terminating CRLF (`\"\\r\\n\"`):</string>
    <string name="">Parsing Chunks</string>
    <string name="">The __parser__ automatically removes the chunked transfer coding when it is the last encoding in the list. However, it also discards the chunk extensions and does not provide a way to determine the boundaries between chunks. Advanced applications which need to access the chunk extensions or read complete individual chunks may use a callback interface provided by __parser__:</string>
    <string name="">Chunking Parse Callbacks</string>
    <string name="158">Name</string>
    <string name="158">Description</string>
    <string name="">[link beast.ref.boost__beast__http__parser.on_chunk_header `on_chunk_header`]</string>
    <string name="">Set a callback to be invoked on each chunk header.\n\nThe callback will be invoked once for every chunk in the message payload, as well as once for the last chunk. The invocation happens after the chunk header is available but before any body octets have been parsed.\n\nThe extensions are provided in raw, validated form, use [link beast.ref.boost__beast__http__basic_chunk_extensions.parse `chunk_extensions::parse`] to parse the extensions into a structured container for easier access. The implementation type-erases the callback without requiring a dynamic allocation. For this reason, the callback object is passed by a non-constant reference.\n\nThe function object will be called with this equivalent signature:</string>
    <string name="">[link beast.ref.boost__beast__http__parser.on_chunk_body `on_chunk_body`]</string>
    <string name="">Set a callback to be invoked on chunk body data.\n\nThe callback will be invoked one or more times to provide buffers corresponding to the chunk body for the current chunk. The callback receives the number of octets remaining in this chunk body including the octets in the buffer provided.\n\nThe callback must return the number of octets actually consumed. Any octets not consumed will be presented again in a subsequent invocation of the callback. The implementation type-erases the callback without requiring a dynamic allocation. For this reason, the callback object is passed by a non-constant reference.\n\nThe function object will be called with this equivalent signature:</string>
    <string name="">This example will read a message header from the stream, and then manually read each chunk. It recognizes the chunk boundaries and outputs the contents of each chunk as it comes in. Any chunk extensions are printed, each extension on its own line. Finally, any trailers promised in the header are printed.</string>
    <string name="">Given the HTTP response as input on the left, the output of the function shown above is shown on the right:</string>
    <string name="">Chunk Parsing Example Output</string>
    <string name="">Input</string>
    <string name="">Output</string>
    <string name="">HTTP/1.1 200 OK\\r\\n\nServer: test\\r\\n\nTrailer: Expires, Content-MD5\\r\\n\nTransfer-Encoding: chunked\\r\\n\n\\r\\n\n5\\r\\n\nFirst\\r\\n\nd;quality=1.0\\r\\n\nHello, world!\\r\\n\ne;file=abc.txt;quality=0.7\\r\\n\nThe Next Chunk\\r\\n\n8;last\\r\\n\nLast one\\r\\n\n0\\r\\n\nExpires: never\\r\\n\nContent-MD5: f4a5c16584f03d90\\r\\n\n\\r\\n</string>
    <string name="">Chunk Body: First\nExtension: quality = 1.0\nChunk Body: Hello, world!\nExtension: file = abc.txt\nExtension: quality = 0.7\nChunk Body: The Next Chunk\nExtension: last\nChunk Body: Last one\nExpires: never\nContent-MD5: f4a5c16584f03d90</string>
</resources>
