en	BuffersGenerator

en	A [*BuffersGenerator] provides a generalized interface for generating serialized data for sequential processing.

en	The generator will be asked to produce buffers. The consuming code will signal how much of the data has been consumed, and repeatedly query for buffers until no more data is available, or the generator indicates an error condition.

en	In this way, serializers can be adapted as [*BuffersGenerator], for example [link beast.ref.boost__beast__http__message_generator `http::message_generator`] which provides a type-erased interface for a variety of concrete http message types.

en	Overloads of [link beast.ref.boost__beast__write `write`] and [link beast.ref.boost__beast__async_write `async_write`] operations are provided as free functions. These operations will consume the output of a [*BuffersGenerator] and process the data by writing them to a __SyncWriteStream__ or __AsyncWriteStream__ respectively.

en	Associated Types

en	* [link beast.ref.boost__beast__is_buffers_generator `is_buffers_generator`] * __ConstBufferSequence__

en	Requirements

en	In this table:

en	* `G` denotes a type meeting the requirements of [*BuffersGenerator]. * `g` denotes a value of type `G`. * `c` denotes a possibly-const value of type `G`. * `n` is a value of type `std::size_t`. * `ec` is a value of type [link beast.ref.boost__beast__error_code `error_code&`].

en	Valid expressions

en	Expression

en	Type

en	Semantics, Pre/Post-conditions

en	`G::const_buffers_type`

en	A type which meets the requirements of __ConstBufferSequence__. This is the type of buffer returned by `g.prepare(ec)`.

en	`c.is_done()`

en	`bool`

en	Called to ask the generator for its completion status. A generator has completed when no new buffer will be produced and previously produced buffers have been fully consumed. [*Note:] The result of invoking `prepare` on `g` once it has completed is unspecified.

en	`g.prepare(ec)`

en	Called to ask the generator to produce buffers containing data for processing. The returned value is the __ConstBufferSequence__ representing unconsumed data. The function will ensure that `ec.failed()` is `false` if there was no error or set to the appropriate error code if there was one. If no unconsumed data is available, this operation shall make progress to eventually reach completion. The result of invoking `prepare` after completion or encountered error(s) is defined by the generator implementation. It can not be assumed to be meaningful or safe to do so, in general. The capacity of the buffer returned is defined by the generator implementation. [*Note:] Any buffers obtained by previous calls to `prepare` are invalidated.

en	`g.consume(n)`

en	This function is called to signal that the consumer (caller) of the generator has processed part of the data returned by the previous call to `prepare`. The value of `n` indicates how much of the data processed (in bytes). When `n` exceeds the number of bytes returned from the last call to `prepare`, `consume` shall behave as if `n` was equal to that number. Remaining unconsumed data will be returned from subsequent calls to `prepare`. [*Note:] Any buffers obtained by previous calls to `prepare` are invalidated.

en	`is_buffers_generator<G>`

en	`std::bool_constant`

en	An alias for `std::true_type` for `G`, otherwise an alias for `std::false_type`.

en	Exemplar

en	```

en	```

en	Models

en	* [link beast.ref.boost__beast__http__message_generator `http::message_generator`]

en	Algorithms

en	* [link beast.ref.boost__beast__async_write `async_write`] * [link beast.ref.boost__beast__write `write`]