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.
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.
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:
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.
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.
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: