[/ Copyright (c) 2013-2016 Vinnie Falco (vinnie dot falco at gmail dot com) Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] [section:Reader Reader requirements] Parsers provided by the implementation will construct the corresponding `reader` object during parsing. This customization point allows the Body to determine the strategy for storing incoming message body data. In this table: * `X` denotes a type meeting the requirements of [*`Reader`]. * `a` denotes a value of type `X`. * `n` is a value convertible to `std::size_t`. * `p` is a `void const*` to valid memory of at least `n` bytes. * `ec` is a value of type [link beast.ref.error_code `error_code&`]. * `m` denotes a value of type `message&` where `std::is_same::value == true`. [table Reader requirements [[operation] [type] [semantics, pre/post-conditions]] [ [`X a(m);`] [] [ `a` is constructible from `m`. The lifetime of `m` is guaranteed to end no earlier than after `a` is destroyed. The constructor will be called after all headers have been stored in `m`, and before any body data is deserialized. This function must be `noexcept`. ] ] [ [`a.init(ec)`] [`void`] [ Called immediately after construction. If the function sets an error code in `ec`, the parse is aborted and the error is propagated to the caller. This function must be `noexcept`. ] ] [ [`a.write(p, n, ec)`] [`void`] [ Deserializes the input sequence into the body. If `ec` is set, the deserialization is aborted and the error is propagated to the caller. If the message headers specify a chunked transfer encoding, the reader will receive the decoded version of the body. This function must be `noexcept`. ] ] ] [note Definitions for required `Reader` member functions should be declared inline so the generated code can become part of the implementation. ] [endsect]