[/
    Copyright (c) 2016-2019 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)

    Official repository: https://github.com/boostorg/beast
]

[section:FieldsWriter 字段写入器]

[*FieldsWriter] 提供了一种算法，用于获取表示一组字段的完整序列化 HTTP/1 标头的缓冲区序列。实现会在需要时构造该类型的实例，并仅调用一次以获取缓冲区。

[heading 关联类型]

* __FieldsWriter__

[heading 要求]

[warning
    这些要求可能会发生非向后兼容的变更
    changes in subsequent versions.
]

在下表中：

* `W` 表示满足 [*FieldsWriter] 要求的类型。
* `F` 表示 __Fields__，其中
      `std::is_same<W, F::writer>::value == true`.
* `a` 是类型为 `W` 的值。
* `f` 是类型为 `F` 的值。
* `v` 是表示 HTTP 版本的 `unsigned` 值。
* `c` 是表示 HTTP 状态码的 `unsigned` 值。
* `m` 是 [link beast.ref.boost__beast__http__verb `verb`] 类型的值。

[table 有效表达式
[[表达式][类型][语义，前置/后置条件]]
[
    [`W::const_buffers_type`]
    []
    [一种满足 __ConstBufferSequence__ 要求的类型。该类型是 `W::get` 返回的缓冲区类型。]
][
    [`W{f,v,m}`]
    []
    [实现调用该构造函数，用于表示正在序列化的字段属于 HTTP 请求。该对象 `f` 的生命周期保证在 `W` 销毁之后才会结束。]
][
    [`W{f,v,c}`]
    []
    [实现调用该构造函数，用于表示正在序列化的字段属于 HTTP 响应。该对象 `f` 的生命周期保证在 `W` 销毁之后才会结束。]
][
    [`W{f}`]
    []
    [实现调用该构造函数，用于表示正在序列化的字段属于分块传输编码的最终块尾部。该对象 `f` 的生命周期保证在 `W` 销毁之后才会结束。]
][
    [`a.get()`]
    [`W::const_buffers_type`]
    [该函数在构造后仅被调用一次，用于返回一个常量缓冲区序列。该序列包含 HTTP 请求或响应的序列化表示，以及最终的换行回车序列（"\r\n"）。

返回的序列可以被拷贝，但底层内存仍由该写入器持有。实现会在销毁该对象 `a` 之前，销毁该缓冲区序列的所有拷贝。]
]]

[heading 示例]

[concept_FieldsWriter]

[heading 模型]

* [link beast.ref.boost__beast__http__basic_fields.writer `basic_fields::writer`]

[endsect]
