Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / beast / doc / qbk / reference.qbk
1 [/
2     Copyright (c) 2013-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
3
4     Distributed under the Boost Software License, Version 1.0. (See accompanying
5     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 ]
7
8 [section:boost__beast__allocate_stable allocate_stable]\r[indexterm1 allocate_stable]\r
9 Allocate a temporary object to hold stable asynchronous operation state. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/async_base.hpp]\r\r\r\r```\rtemplate<\r    class State,\r    class __Handler__,\r    class __Executor1__,\r    class __Allocator__,\r    class... Args>\rState&\rallocate_stable(\r    stable_async_base< Handler, Executor1, Allocator >& base,\r    Args&&... args);\r\r```\r\r[heading Description]\r
10 The object will be destroyed just before the completion handler is invoked, or when the base is destroyed.
11 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`State`][\r    
12 The type of object to allocate.\r  ]]\r]\r
13 [heading Parameters]\r[table [[Name][Description]]\r  [[`base`][\r    
14 The helper to allocate from.\r  ]]\r  [[`args`][\r    
15 An optional list of parameters to forward to the constructor of the object being allocated.\r  ]]\r]\r
16 [heading See Also]\r
17 [link beast.ref.boost__beast__stable_async_base `stable_async_base`] 
18 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__async_base async_base]\r
19 Base class to assist writing composed operations. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/async_base.hpp]\r\r\r\r```\rtemplate<\r    class __Handler__,\r    class __Executor1__,\r    class __Allocator__ = std::allocator<void>>\rclass async_base\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__async_base.allocator_type [*allocator_type]]]\r    [\r      The type of allocator associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.executor_type [*executor_type]]]\r    [\r      The type of executor associated with this object. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__async_base.async_base [*async_base]]]\r    [\r      Constructor. \r\r      Move Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.complete [*complete]]]\r    [\r      Invoke the final completion handler, maybe using post. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.complete_now [*complete_now]]]\r    [\r      Invoke the final completion handler. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.get_allocator [*get_allocator]]]\r    [\r      Returns the allocator associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.get_executor [*get_executor]]]\r    [\r      Returns the executor associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.handler [*handler]]]\r    [\r      Returns the handler associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.operator_eq_ [*operator=]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.release_handler [*release_handler]]]\r    [\r      Returns ownership of the handler associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__async_base.async_base_dtor_ [*~async_base]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r
20 A function object submitted to intermediate initiating functions during a composed operation may derive from this type to inherit all of the boilerplate to forward the executor, allocator, and legacy customization points associated with the completion handler invoked at the end of the composed operation.
21 The composed operation must be typical; that is, associated with one executor of an I/O object, and invoking a caller-provided completion handler when the operation is finished. Classes derived from [link beast.ref.boost__beast__async_base `async_base`] will acquire these properties:
22
23 * Ownership of the final completion handler provided upon construction.
24
25
26 * If the final handler has an associated allocator, this allocator will be propagated to the composed operation subclass. Otherwise, the associated allocator will be the type specified in the allocator template parameter, or the default of `std::allocator<void>` if the parameter is omitted.
27
28
29 * If the final handler has an associated executor, then it will be used as the executor associated with the composed operation. Otherwise, the specified `Executor1` will be the type of executor associated with the composed operation.
30
31
32 * An instance of `net::executor_work_guard` for the instance of `Executor1` shall be maintained until either the final handler is invoked, or the operation base is destroyed, whichever comes first.
33
34
35 * Calls to the legacy customization points `asio_handler_invoke`, `asio_handler_allocate`, `asio_handler_deallocate`, and `asio_handler_is_continuation`, which use argument-dependent lookup, will be forwarded to the legacy customization points associated with the handler.
36
37 [heading Example]
38
39 The following code demonstrates how [link beast.ref.boost__beast__async_base `async_base`] may be be used to assist authoring an asynchronous initiating function, by providing all of the boilerplate to manage the final completion handler in a way that maintains the allocator and executor associations:
40 \r```\r  // Asynchronously read into a buffer until the buffer is full, or an error occurs
41   template<class AsyncReadStream, class ReadHandler>
42   typename net::async_result<ReadHandler, void(error_code, std::size_t)>::return_type
43   async_read(AsyncReadStream& stream, net::mutable_buffer buffer, ReadHandler&& handler)
44   {
45       using handler_type = BOOST_ASIO_HANDLER_TYPE(ReadHandler, void(error_code, std::size_t));
46       using base_type = async_base<handler_type, typename AsyncReadStream::executor_type>;
47
48       struct op : base_type
49       {
50           AsyncReadStream& stream_;
51           net::mutable_buffer buffer_;
52           std::size_t total_bytes_transferred_;
53
54           op(
55               AsyncReadStream& stream,
56               net::mutable_buffer buffer,
57               handler_type& handler)
58               : base_type(std::move(handler), stream.get_executor())
59               , stream_(stream)
60               , buffer_(buffer)
61               , total_bytes_transferred_(0)
62           {
63               (*this)({}, 0, false); // start the operation
64           }
65
66           void operator()(error_code ec, std::size_t bytes_transferred, bool is_continuation = true)
67           {
68               // Adjust the count of bytes and advance our buffer
69               total_bytes_transferred_ += bytes_transferred;
70               buffer_ = buffer_ + bytes_transferred;
71
72               // Keep reading until buffer is full or an error occurs
73               if(! ec && buffer_.size() > 0)
74                   return stream_.async_read_some(buffer_, std::move(*this));
75
76               // Call the completion handler with the result. If `is_continuation` is
77               // false, which happens on the first time through this function, then
78               // `net::post` will be used to call the completion handler, otherwise
79               // the completion handler will be invoked directly.
80
81               this->complete(is_continuation, ec, total_bytes_transferred_);
82           }
83       };
84
85       net::async_completion<ReadHandler, void(error_code, std::size_t)> init{handler};
86       op(stream, buffer, init.completion_handler);
87       return init.result.get();
88   }
89 ```\r
90 Data members of composed operations implemented as completion handlers do not have stable addresses, as the composed operation object is move constructed upon each call to an initiating function. For most operations this is not a problem. For complex operations requiring stable temporary storage, the class [link beast.ref.boost__beast__stable_async_base `stable_async_base`] is provided which offers additional functionality:
91
92 * The free function [link beast.ref.boost__beast__allocate_stable `allocate_stable`] may be used to allocate one or more temporary objects associated with the composed operation.
93
94
95 * Memory for stable temporary objects is allocated using the allocator associated with the composed operation.
96
97
98 * Stable temporary objects are automatically destroyed, and the memory freed using the associated allocator, either before the final completion handler is invoked (a Networking requirement) or when the composed operation is destroyed, whichever occurs first.
99
100 [heading Temporary Storage Example]
101
102 The following example demonstrates how a composed operation may store a temporary object.
103 \r```\r```\r
104 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Handler`][\r    
105 The type of the completion handler to store. This type must meet the requirements of ['CompletionHandler].\r  ]]\r  [[`Executor1`][\r    
106 The type of the executor used when the handler has no associated executor. An instance of this type must be provided upon construction. The implementation will maintain an executor work guard and a copy of this instance.\r  ]]\r  [[`Allocator`][\r    
107 The allocator type to use if the handler does not have an associated allocator. If this parameter is omitted, then `std::allocator<void>` will be used. If the specified allocator is not default constructible, an instance of the type must be provided upon construction.\r  ]]\r]\r
108 [heading See Also]\r
109 [link beast.ref.boost__beast__stable_async_base `stable_async_base`] 
110 [section:allocator_type async_base::allocator_type]\r[indexterm2 allocator_type..async_base]\r
111 The type of allocator associated with this object. \r[heading Synopsis]\r\r```\rusing allocator_type = net::associated_allocator_t< Handler, Allocator >;\r```\r\r[heading Description]\r
112 If a class derived from [link beast.ref.boost__beast__async_base `async_base`] is a completion handler, then the associated allocator of the derived class will be this type. [endsect]\r[section:async_base async_base::async_base]\r[indexterm2 async_base..async_base]\r
113 Constructor. ```\rtemplate<\r    class __Handler__>\r``[link beast.ref.boost__beast__async_base.async_base.overload1 async_base]``(\r    Handler&& handler,\r    Executor1 const& ex1,\r    Allocator const& alloc = Allocator());\r  ``[''''&raquo;''' [link beast.ref.boost__beast__async_base.async_base.overload1 more...]]``\r\r```\r
114 Move Constructor. ```\r``[link beast.ref.boost__beast__async_base.async_base.overload2 async_base]``(\r    async_base&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__async_base.async_base.overload2 more...]]``\r\r``[link beast.ref.boost__beast__async_base.async_base.overload3 async_base]``(\r    async_base const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__async_base.async_base.overload3 more...]]``\r```\r[section:overload1 async_base::async_base (1 of 3 overloads)]\r
115 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class __Handler__>\rasync_base(\r    Handler&& handler,\r    Executor1 const& ex1,\r    Allocator const& alloc = Allocator());\r```\r\r[heading Description]\r
116 [heading Parameters]\r[table [[Name][Description]]\r  [[`handler`][\r    
117 The final completion handler. The type of this object must meet the requirements of ['CompletionHandler]. The implementation takes ownership of the handler by performing a decay-copy.\r  ]]\r  [[`ex1`][\r    
118 The executor associated with the implied I/O object target of the operation. The implementation shall maintain an executor work guard for the lifetime of the operation, or until the final completion handler is invoked, whichever is shorter.\r  ]]\r  [[`alloc`][\r    
119 The allocator to be associated with objects derived from this class. If `Allocator` is default-constructible, this parameter is optional and may be omitted. \r  ]]\r]\r
120 [endsect]\r[section:overload2 async_base::async_base (2 of 3 overloads)]\r
121 Move Constructor. \r[heading Synopsis]\r```\rasync_base(\r    async_base&& other);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 async_base::async_base (3 of 3 overloads)]\r\r[heading Synopsis]\r```\rasync_base(\r    async_base const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:complete async_base::complete]\r[indexterm2 complete..async_base]\r
122 Invoke the final completion handler, maybe using post. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rvoid\rcomplete(\r    bool is_continuation,\r    Args&&... args);\r```\r\r[heading Description]\r
123 This invokes the final completion handler with the specified arguments forwarded. It is undefined to call either of [link beast.ref.boost__beast__async_base.complete `async_base::complete`] or [link beast.ref.boost__beast__async_base.complete_now `async_base::complete_now`] more than once.
124 Any temporary objects allocated with [link beast.ref.boost__beast__allocate_stable `allocate_stable`] will be automatically destroyed before the final completion handler is invoked.
125 [heading Parameters]\r[table [[Name][Description]]\r  [[`is_continuation`][\r    
126 If this value is `false`, then the handler will be submitted to the executor using `net::post`. Otherwise the handler will be invoked as if by calling [link beast.ref.boost__beast__async_base.complete_now `async_base::complete_now`].\r  ]]\r  [[`args`][\r    
127 A list of optional parameters to invoke the handler with. The completion handler must be invocable with the parameter list, or else a compilation error will result. \r  ]]\r]\r
128 [endsect]\r[section:complete_now async_base::complete_now]\r[indexterm2 complete_now..async_base]\r
129 Invoke the final completion handler. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rvoid\rcomplete_now(\r    Args&&... args);\r```\r\r[heading Description]\r
130 This invokes the final completion handler with the specified arguments forwarded. It is undefined to call either of [link beast.ref.boost__beast__async_base.complete `async_base::complete`] or [link beast.ref.boost__beast__async_base.complete_now `async_base::complete_now`] more than once.
131 Any temporary objects allocated with [link beast.ref.boost__beast__allocate_stable `allocate_stable`] will be automatically destroyed before the final completion handler is invoked.
132 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
133 A list of optional parameters to invoke the handler with. The completion handler must be invocable with the parameter list, or else a compilation error will result. \r  ]]\r]\r
134 [endsect]\r[section:executor_type async_base::executor_type]\r[indexterm2 executor_type..async_base]\r
135 The type of executor associated with this object. \r[heading Synopsis]\r\r```\rusing executor_type = net::associated_executor_t< Handler, Executor1 >;\r```\r\r[heading Description]\r
136 If a class derived from [link beast.ref.boost__beast__async_base `async_base`] is a completion handler, then the associated executor of the derived class will be this type. [endsect]\r[section:get_allocator async_base::get_allocator]\r[indexterm2 get_allocator..async_base]\r
137 Returns the allocator associated with this object. \r[heading Synopsis]\r```\rallocator_type\rget_allocator() const;\r```\r\r[heading Description]\r
138 If a class derived from [link beast.ref.boost__beast__async_base `async_base`] is a completion handler, then the object returned from this function will be used as the associated allocator of the derived class. [endsect]\r[section:get_executor async_base::get_executor]\r[indexterm2 get_executor..async_base]\r
139 Returns the executor associated with this object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor() const;\r```\r\r[heading Description]\r
140 If a class derived from [link beast.ref.boost__beast__async_base `async_base`] is a completion handler, then the object returned from this function will be used as the associated executor of the derived class. [endsect]\r[section:handler async_base::handler]\r[indexterm2 handler..async_base]\r
141 Returns the handler associated with this object. \r[heading Synopsis]\r```\rHandler const &\rhandler() const;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ async_base::operator=]\r[indexterm2 operator=..async_base]\r\r[heading Synopsis]\r```\rasync_base&\roperator=(\r    async_base const&);\r```\r\r[heading Description]\r[endsect]\r[section:release_handler async_base::release_handler]\r[indexterm2 release_handler..async_base]\r
142 Returns ownership of the handler associated with this object. \r[heading Synopsis]\r```\rHandler\rrelease_handler();\r```\r\r[heading Description]\r
143 This function is used to transfer ownership of the handler to the caller, by move-construction. After the move, the only valid operations on the base object are move construction and destruction. [endsect]\r[section:async_base_dtor_ async_base::~async_base]\r[indexterm2 ~async_base..async_base]\r\r[heading Synopsis]\r```\rvirtual\r~async_base();\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__async_detect_ssl async_detect_ssl]\r[indexterm1 async_detect_ssl]\r
144 Detect a TLS/SSL handshake asynchronously on a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/detect_ssl.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncReadStream__,\r    class __DynamicBuffer__,\r    class __CompletionToken__ = net::default_completion_token_t<beast::executor_type<AsyncReadStream>>>\r``__deduced__``\rasync_detect_ssl(\r    AsyncReadStream& stream,\r    DynamicBuffer& buffer,\r    CompletionToken&& token = net::default_completion_token_t< beast::executor_type< AsyncReadStream >>{});\r\r```\r\r[heading Description]\r
145 This function reads asynchronously from a stream to determine if a client handshake message is being received.
146 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
147
148 * A TLS client opening handshake is detected,
149
150
151 * The received data is invalid for a TLS client handshake, or
152
153
154 * An error occurs.
155
156 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` function. The program must ensure that no other calls to `async_read_some` are performed until this operation completes.
157 Bytes read from the stream will be stored in the passed dynamic buffer, which may be used to perform the TLS handshake if the detector returns true, or be otherwise consumed by the caller based on the expected protocol.
158 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
159 The stream to read from. This type must meet the requirements of ['AsyncReadStream].\r  ]]\r  [[`buffer`][\r    
160 The dynamic buffer to use. This type must meet the requirements of ['DynamicBuffer].\r  ]]\r  [[`token`][\r    
161 The completion token used to determine the method used to provide the result of the asynchronous operation. If this is a completion handler, the implementation takes ownership of the handler by performing a decay-copy, and the equivalent function signature of the handler must be: \r```\r  void handler(
162       error_code const& error,    // Set to the error, if any
163       bool result                 // The result of the detector
164   );
165 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
166 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__async_teardown async_teardown]\r[indexterm1 async_teardown]\r
167 Start tearing down a `net::ssl::stream`. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/ssl.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncStream__,\r    class TeardownHandler>\rvoid\rasync_teardown(\r    role_type role,\r    net::ssl::stream< AsyncStream >& stream,\r    TeardownHandler&& handler);\r\r```\r\r[heading Description]\r
168 This begins tearing down a connection asynchronously. The implementation will call the overload of this function based on the `Stream` parameter used to consruct the socket. When `Stream` is a user defined type, and not a `net::ip::tcp::socket` or any `net::ssl::stream`, callers are responsible for providing a suitable overload of this function.
169 [heading Parameters]\r[table [[Name][Description]]\r  [[`role`][\r    
170 The role of the local endpoint\r  ]]\r  [[`stream`][\r    
171 The stream to tear down.\r  ]]\r  [[`handler`][\r    
172 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
173       error_code const& error // result of operation
174   );
175 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
176 \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__basic_flat_buffer basic_flat_buffer]\r
177 A dynamic buffer providing buffer sequences of length one. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/flat_buffer.hpp]\r\r\r\r```\rtemplate<\r    class __Allocator__>\rclass basic_flat_buffer\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.allocator_type [*allocator_type]]]\r    [\r      The type of allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer [*basic_flat_buffer]]]\r    [\r      Constructor. \r\r      Move Constructor. \r\r      Copy Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.capacity [*capacity]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.clear [*clear]]]\r    [\r      Set the size of the readable and writable bytes to zero. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.get_allocator [*get_allocator]]]\r    [\r      Returns a copy of the allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.max_size [*max_size]]]\r    [\r      Set the maximum allowed capacity. \r\r      Return the maximum number of bytes, both readable and writable, that can ever be held. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.operator_eq_ [*operator=]]]\r    [\r      Move Assignment. \r\r      Copy Assignment. \r\r      Copy assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.reserve [*reserve]]]\r    [\r      Guarantee a minimum capacity. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.shrink_to_fit [*shrink_to_fit]]]\r    [\r      Reallocate the buffer to fit the readable bytes exactly. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer_dtor_ [*~basic_flat_buffer]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Friends]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.swap [*swap]]]\r    [\r      Exchange two dynamic buffers. \r    ]\r  ]\r]\r\r[heading Description]\r
178 A dynamic buffer encapsulates memory storage that may be automatically resized as required, where the memory is divided into two regions: readable bytes followed by writable bytes. These memory regions are internal to the dynamic buffer, but direct access to the elements is provided to permit them to be efficiently used with I/O operations.
179 Objects of this type meet the requirements of ['DynamicBuffer] and have the following additional properties:
180
181 * A mutable buffer sequence representing the readable bytes is returned by [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] when `this` is non-const.
182
183
184 * A configurable maximum buffer size may be set upon construction. Attempts to exceed the buffer size will throw `std::length_error`.
185
186
187 * Buffer sequences representing the readable and writable bytes, returned by [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] and [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`], will have length one.
188
189 Upon construction, a maximum size for the buffer may be specified. If this limit is exceeded, the `std::length_error` exception will be thrown.
190 [heading Remarks]\r
191 This class is designed for use with algorithms that take dynamic buffers as parameters, and are optimized for the case where the input sequence or output sequence is stored in a single contiguous buffer. 
192 [section:allocator_type basic_flat_buffer::allocator_type]\r[indexterm2 allocator_type..basic_flat_buffer]\r
193 The type of allocator used. \r[heading Synopsis]\r\r```\rusing allocator_type = Allocator;\r```\r\r[heading Description]\r[endsect]\r[section:basic_flat_buffer basic_flat_buffer::basic_flat_buffer]\r[indexterm2 basic_flat_buffer..basic_flat_buffer]\r
194 Constructor. ```\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload1 basic_flat_buffer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload1 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload2 basic_flat_buffer]``(\r    std::size_t limit);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload2 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload3 basic_flat_buffer]``(\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload3 more...]]``\r\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload4 basic_flat_buffer]``(\r    std::size_t limit,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload4 more...]]``\r\r```\r
195 Move Constructor. ```\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload5 basic_flat_buffer]``(\r    basic_flat_buffer&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload5 more...]]``\r\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload6 basic_flat_buffer]``(\r    basic_flat_buffer&& other,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload6 more...]]``\r\r```\r
196 Copy Constructor. ```\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload7 basic_flat_buffer]``(\r    basic_flat_buffer const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload7 more...]]``\r\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload8 basic_flat_buffer]``(\r    basic_flat_buffer const& other,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload8 more...]]``\r\rtemplate<\r    class OtherAlloc>\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload9 basic_flat_buffer]``(\r    basic_flat_buffer< OtherAlloc > const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload9 more...]]``\r\rtemplate<\r    class OtherAlloc>\r``[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload10 basic_flat_buffer]``(\r    basic_flat_buffer< OtherAlloc > const& other,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer.overload10 more...]]``\r```\r[section:overload1 basic_flat_buffer::basic_flat_buffer (1 of 10 overloads)]\r
197 Constructor. \r[heading Synopsis]\r```\rbasic_flat_buffer();\r```\r\r[heading Description]\r
198 After construction, [link beast.ref.boost__beast__basic_flat_buffer.capacity `basic_flat_buffer::capacity`] will return zero, and [link beast.ref.boost__beast__basic_flat_buffer.max_size `basic_flat_buffer::max_size`] will return the largest value which may be passed to the allocator's `allocate` function. [endsect]\r[section:overload2 basic_flat_buffer::basic_flat_buffer (2 of 10 overloads)]\r
199 Constructor. \r[heading Synopsis]\r```\rbasic_flat_buffer(\r    std::size_t limit);\r```\r\r[heading Description]\r
200 After construction, [link beast.ref.boost__beast__basic_flat_buffer.capacity `basic_flat_buffer::capacity`] will return zero, and [link beast.ref.boost__beast__basic_flat_buffer.max_size `basic_flat_buffer::max_size`] will return the specified value of `limit`.
201 [heading Parameters]\r[table [[Name][Description]]\r  [[`limit`][\r    
202 The desired maximum size. \r  ]]\r]\r
203 [endsect]\r[section:overload3 basic_flat_buffer::basic_flat_buffer (3 of 10 overloads)]\r
204 Constructor. \r[heading Synopsis]\r```\rbasic_flat_buffer(\r    Allocator const& alloc);\r```\r\r[heading Description]\r
205 After construction, [link beast.ref.boost__beast__basic_flat_buffer.capacity `basic_flat_buffer::capacity`] will return zero, and [link beast.ref.boost__beast__basic_flat_buffer.max_size `basic_flat_buffer::max_size`] will return the largest value which may be passed to the allocator's `allocate` function.
206 [heading Parameters]\r[table [[Name][Description]]\r  [[`alloc`][\r    
207 The allocator to use for the object.\r  ]]\r]\r
208 [heading Exception Safety]
209
210 No-throw guarantee. [endsect]\r[section:overload4 basic_flat_buffer::basic_flat_buffer (4 of 10 overloads)]\r
211 Constructor. \r[heading Synopsis]\r```\rbasic_flat_buffer(\r    std::size_t limit,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
212 After construction, [link beast.ref.boost__beast__basic_flat_buffer.capacity `basic_flat_buffer::capacity`] will return zero, and [link beast.ref.boost__beast__basic_flat_buffer.max_size `basic_flat_buffer::max_size`] will return the specified value of `limit`.
213 [heading Parameters]\r[table [[Name][Description]]\r  [[`limit`][\r    
214 The desired maximum size.\r  ]]\r  [[`alloc`][\r    
215 The allocator to use for the object.\r  ]]\r]\r
216 [heading Exception Safety]
217
218 No-throw guarantee. [endsect]\r[section:overload5 basic_flat_buffer::basic_flat_buffer (5 of 10 overloads)]\r
219 Move Constructor. \r[heading Synopsis]\r```\rbasic_flat_buffer(\r    basic_flat_buffer&& other);\r```\r\r[heading Description]\r
220 The container is constructed with the contents of `other` using move semantics. The maximum size will be the same as the moved-from object.
221 Buffer sequences previously obtained from `other` using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] remain valid after the move.
222 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
223 The object to move from. After the move, the moved-from object will have zero capacity, zero readable bytes, and zero writable bytes.\r  ]]\r]\r
224 [heading Exception Safety]
225
226 No-throw guarantee. [endsect]\r[section:overload6 basic_flat_buffer::basic_flat_buffer (6 of 10 overloads)]\r
227 Move Constructor. \r[heading Synopsis]\r```\rbasic_flat_buffer(\r    basic_flat_buffer&& other,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
228 Using `alloc` as the allocator for the new container, the contents of `other` are moved. If `alloc != other.get_allocator()`, this results in a copy. The maximum size will be the same as the moved-from object.
229 Buffer sequences previously obtained from `other` using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] become invalid after the move.
230 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
231 The object to move from. After the move, the moved-from object will have zero capacity, zero readable bytes, and zero writable bytes.\r  ]]\r  [[`alloc`][\r    
232 The allocator to use for the object.\r  ]]\r]\r
233 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
234 if `other.size()` exceeds the maximum allocation size of `alloc`. \r  ]]\r]\r
235 [endsect]\r[section:overload7 basic_flat_buffer::basic_flat_buffer (7 of 10 overloads)]\r
236 Copy Constructor. \r[heading Synopsis]\r```\rbasic_flat_buffer(\r    basic_flat_buffer const& other);\r```\r\r[heading Description]\r
237 This container is constructed with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
238 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
239 The object to copy from.\r  ]]\r]\r
240 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
241 if `other.size()` exceeds the maximum allocation size of the allocator. \r  ]]\r]\r
242 [endsect]\r[section:overload8 basic_flat_buffer::basic_flat_buffer (8 of 10 overloads)]\r
243 Copy Constructor. \r[heading Synopsis]\r```\rbasic_flat_buffer(\r    basic_flat_buffer const& other,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
244 This container is constructed with the contents of `other` using copy semantics and the specified allocator. The maximum size will be the same as the copied object.
245 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
246 The object to copy from.\r  ]]\r  [[`alloc`][\r    
247 The allocator to use for the object.\r  ]]\r]\r
248 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
249 if `other.size()` exceeds the maximum allocation size of `alloc`. \r  ]]\r]\r
250 [endsect]\r[section:overload9 basic_flat_buffer::basic_flat_buffer (9 of 10 overloads)]\r
251 Copy Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_flat_buffer(\r    basic_flat_buffer< OtherAlloc > const& other);\r```\r\r[heading Description]\r
252 This container is constructed with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
253 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
254 The object to copy from.\r  ]]\r]\r
255 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
256 if `other.size()` exceeds the maximum allocation size of the allocator. \r  ]]\r]\r
257 [endsect]\r[section:overload10 basic_flat_buffer::basic_flat_buffer (10 of 10 overloads)]\r
258 Copy Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_flat_buffer(\r    basic_flat_buffer< OtherAlloc > const& other,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
259 This container is constructed with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
260 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
261 The object to copy from.\r  ]]\r  [[`alloc`][\r    
262 The allocator to use for the object.\r  ]]\r]\r
263 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
264 if `other.size()` exceeds the maximum allocation size of `alloc`. \r  ]]\r]\r
265 [endsect]\r[endsect]\r\r[section:capacity basic_flat_buffer::capacity]\r[indexterm2 capacity..basic_flat_buffer]\r
266 Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r[heading Synopsis]\r```\rstd::size_t\rcapacity() const;\r```\r\r[heading Description]\r[endsect]\r[section:cdata basic_flat_buffer::cdata]\r[indexterm2 cdata..basic_flat_buffer]\r
267 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rcdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:clear basic_flat_buffer::clear]\r[indexterm2 clear..basic_flat_buffer]\r
268 Set the size of the readable and writable bytes to zero. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
269 This clears the buffer without changing capacity. Buffer sequences previously obtained using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] become invalid.
270 [heading Exception Safety]
271
272 No-throw guarantee. [endsect]\r[section:commit basic_flat_buffer::commit]\r[indexterm2 commit..basic_flat_buffer]\r
273 Append writable bytes to the readable bytes. \r[heading Synopsis]\r```\rvoid\rcommit(\r    std::size_t n);\r```\r\r[heading Description]\r
274 Appends n bytes from the start of the writable bytes to the end of the readable bytes. The remainder of the writable bytes are discarded. If n is greater than the number of writable bytes, all writable bytes are appended to the readable bytes.
275 All buffers sequences previously obtained using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] become invalid.
276 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
277 The number of bytes to append. If this number is greater than the number of writable bytes, all writable bytes are appended.\r  ]]\r]\r
278 [heading Exception Safety]
279
280 No-throw guarantee. [endsect]\r[section:const_buffers_type basic_flat_buffer::const_buffers_type]\r[indexterm2 const_buffers_type..basic_flat_buffer]\r
281 The ConstBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing const_buffers_type = net::const_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:consume basic_flat_buffer::consume]\r[indexterm2 consume..basic_flat_buffer]\r
282 Remove bytes from beginning of the readable bytes. \r[heading Synopsis]\r```\rvoid\rconsume(\r    std::size_t n);\r```\r\r[heading Description]\r
283 Removes n bytes from the beginning of the readable bytes.
284 All buffers sequences previously obtained using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] become invalid.
285 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
286 The number of bytes to remove. If this number is greater than the number of readable bytes, all readable bytes are removed.\r  ]]\r]\r
287 [heading Exception Safety]
288
289 No-throw guarantee. [endsect]\r[section:data basic_flat_buffer::data]\r[indexterm2 data..basic_flat_buffer]\r
290 Returns a constant buffer sequence representing the readable bytes. ```\rconst_buffers_type\r``[link beast.ref.boost__beast__basic_flat_buffer.data.overload1 data]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.data.overload1 more...]]``\r\r```\r
291 Returns a mutable buffer sequence representing the readable bytes. ```\rmutable_data_type\r``[link beast.ref.boost__beast__basic_flat_buffer.data.overload2 data]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.data.overload2 more...]]``\r```\r[section:overload1 basic_flat_buffer::data (1 of 2 overloads)]\r
292 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 basic_flat_buffer::data (2 of 2 overloads)]\r
293 Returns a mutable buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rmutable_data_type\rdata();\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:get_allocator basic_flat_buffer::get_allocator]\r[indexterm2 get_allocator..basic_flat_buffer]\r
294 Returns a copy of the allocator used. \r[heading Synopsis]\r```\rallocator_type\rget_allocator() const;\r```\r\r[heading Description]\r[endsect]\r[section:max_size basic_flat_buffer::max_size]\r[indexterm2 max_size..basic_flat_buffer]\r
295 Set the maximum allowed capacity. ```\rvoid\r``[link beast.ref.boost__beast__basic_flat_buffer.max_size.overload1 max_size]``(\r    std::size_t n);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.max_size.overload1 more...]]``\r\r```\r
296 Return the maximum number of bytes, both readable and writable, that can ever be held. ```\rstd::size_t\r``[link beast.ref.boost__beast__basic_flat_buffer.max_size.overload2 max_size]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.max_size.overload2 more...]]``\r```\r[section:overload1 basic_flat_buffer::max_size (1 of 2 overloads)]\r
297 Set the maximum allowed capacity. \r[heading Synopsis]\r```\rvoid\rmax_size(\r    std::size_t n);\r```\r\r[heading Description]\r
298 This function changes the currently configured upper limit on capacity to the specified value.
299 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
300 The maximum number of bytes ever allowed for capacity.\r  ]]\r]\r
301 [heading Exception Safety]
302
303 No-throw guarantee. [endsect]\r[section:overload2 basic_flat_buffer::max_size (2 of 2 overloads)]\r
304 Return the maximum number of bytes, both readable and writable, that can ever be held. \r[heading Synopsis]\r```\rstd::size_t\rmax_size() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:mutable_buffers_type basic_flat_buffer::mutable_buffers_type]\r[indexterm2 mutable_buffers_type..basic_flat_buffer]\r
305 The MutableBufferSequence used to represent the writable bytes. \r[heading Synopsis]\r\r```\rusing mutable_buffers_type = net::mutable_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_data_type basic_flat_buffer::mutable_data_type]\r[indexterm2 mutable_data_type..basic_flat_buffer]\r
306 The MutableBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing mutable_data_type = net::mutable_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ basic_flat_buffer::operator=]\r[indexterm2 operator=..basic_flat_buffer]\r
307 Move Assignment. ```\rbasic_flat_buffer&\r``[link beast.ref.boost__beast__basic_flat_buffer.operator_eq_.overload1 operator=]``(\r    basic_flat_buffer&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.operator_eq_.overload1 more...]]``\r\r```\r
308 Copy Assignment. ```\rbasic_flat_buffer&\r``[link beast.ref.boost__beast__basic_flat_buffer.operator_eq_.overload2 operator=]``(\r    basic_flat_buffer const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.operator_eq_.overload2 more...]]``\r\r```\r
309 Copy assignment. ```\rtemplate<\r    class OtherAlloc>\rbasic_flat_buffer&\r``[link beast.ref.boost__beast__basic_flat_buffer.operator_eq_.overload3 operator=]``(\r    basic_flat_buffer< OtherAlloc > const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_flat_buffer.operator_eq_.overload3 more...]]``\r```\r[section:overload1 basic_flat_buffer::operator= (1 of 3 overloads)]\r
310 Move Assignment. \r[heading Synopsis]\r```\rbasic_flat_buffer&\roperator=(\r    basic_flat_buffer&& other);\r```\r\r[heading Description]\r
311 The container is assigned with the contents of `other` using move semantics. The maximum size will be the same as the moved-from object.
312 Buffer sequences previously obtained from `other` using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] remain valid after the move.
313 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
314 The object to move from. After the move, the moved-from object will have zero capacity, zero readable bytes, and zero writable bytes.\r  ]]\r]\r
315 [heading Exception Safety]
316
317 No-throw guarantee. [endsect]\r[section:overload2 basic_flat_buffer::operator= (2 of 3 overloads)]\r
318 Copy Assignment. \r[heading Synopsis]\r```\rbasic_flat_buffer&\roperator=(\r    basic_flat_buffer const& other);\r```\r\r[heading Description]\r
319 The container is assigned with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
320 After the copy, `this` will have zero writable bytes.
321 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
322 The object to copy from.\r  ]]\r]\r
323 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
324 if `other.size()` exceeds the maximum allocation size of the allocator. \r  ]]\r]\r
325 [endsect]\r[section:overload3 basic_flat_buffer::operator= (3 of 3 overloads)]\r
326 Copy assignment. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_flat_buffer&\roperator=(\r    basic_flat_buffer< OtherAlloc > const& other);\r```\r\r[heading Description]\r
327 The container is assigned with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
328 After the copy, `this` will have zero writable bytes.
329 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
330 The object to copy from.\r  ]]\r]\r
331 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
332 if `other.size()` exceeds the maximum allocation size of the allocator. \r  ]]\r]\r
333 [endsect]\r[endsect]\r\r[section:prepare basic_flat_buffer::prepare]\r[indexterm2 prepare..basic_flat_buffer]\r
334 Returns a mutable buffer sequence representing writable bytes. \r[heading Synopsis]\r```\rmutable_buffers_type\rprepare(\r    std::size_t n);\r```\r\r[heading Description]\r
335 Returns a mutable buffer sequence representing the writable bytes containing exactly `n` bytes of storage. Memory may be reallocated as needed.
336 All buffers sequences previously obtained using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] become invalid.
337 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
338 The desired number of bytes in the returned buffer sequence.\r  ]]\r]\r
339 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
340 if `size() + n` exceeds either `max_size()` or the allocator's maximum allocation size.\r  ]]\r]\r
341 [heading Exception Safety]
342
343 Strong guarantee. [endsect]\r[section:reserve basic_flat_buffer::reserve]\r[indexterm2 reserve..basic_flat_buffer]\r
344 Guarantee a minimum capacity. \r[heading Synopsis]\r```\rvoid\rreserve(\r    std::size_t n);\r```\r\r[heading Description]\r
345 This function adjusts the internal storage (if necessary) to guarantee space for at least `n` bytes.
346 Buffer sequences previously obtained using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] become invalid.
347 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
348 The minimum number of byte for the new capacity. If this value is greater than the maximum size, then the maximum size will be adjusted upwards to this value.\r  ]]\r]\r
349 [heading Exception Safety]
350
351 Basic guarantee.
352 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
353 if n is larger than the maximum allocation size of the allocator. \r  ]]\r]\r
354 [endsect]\r[section:shrink_to_fit basic_flat_buffer::shrink_to_fit]\r[indexterm2 shrink_to_fit..basic_flat_buffer]\r
355 Reallocate the buffer to fit the readable bytes exactly. \r[heading Synopsis]\r```\rvoid\rshrink_to_fit();\r```\r\r[heading Description]\r
356 Buffer sequences previously obtained using [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] or [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`] become invalid.
357 [heading Exception Safety]
358
359 Strong guarantee. [endsect]\r[section:size basic_flat_buffer::size]\r[indexterm2 size..basic_flat_buffer]\r
360 Returns the number of readable bytes. \r[heading Synopsis]\r```\rstd::size_t\rsize() const;\r```\r\r[heading Description]\r[endsect]\r[section:swap basic_flat_buffer::swap]\r[indexterm2 swap..basic_flat_buffer]\r
361 Exchange two dynamic buffers. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/flat_buffer.hpp]\r\r\r```\rtemplate<\r    class Alloc>\rfriend void\rswap(\r    basic_flat_buffer< Alloc >&,\r    basic_flat_buffer< Alloc >&);\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:basic_flat_buffer_dtor_ basic_flat_buffer::~basic_flat_buffer]\r[indexterm2 ~basic_flat_buffer..basic_flat_buffer]\r
362 Destructor. \r[heading Synopsis]\r```\r~basic_flat_buffer();\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__basic_multi_buffer basic_multi_buffer]\r
363 A dynamic buffer providing sequences of variable length. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/multi_buffer.hpp]\r\r\r\r```\rtemplate<\r    class __Allocator__>\rclass basic_multi_buffer\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.allocator_type [*allocator_type]]]\r    [\r      The type of allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer [*basic_multi_buffer]]]\r    [\r      Constructor. \r\r      Move Constructor. \r\r      Copy Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.capacity [*capacity]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.clear [*clear]]]\r    [\r      Set the size of the readable and writable bytes to zero. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.get_allocator [*get_allocator]]]\r    [\r      Returns a copy of the allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.max_size [*max_size]]]\r    [\r      Set the maximum allowed capacity. \r\r      Return the maximum number of bytes, both readable and writable, that can ever be held. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.operator_eq_ [*operator=]]]\r    [\r      Move Assignment. \r\r      Copy Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.reserve [*reserve]]]\r    [\r      Guarantee a minimum capacity. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.shrink_to_fit [*shrink_to_fit]]]\r    [\r      Reallocate the buffer to fit the readable bytes exactly. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer_dtor_ [*~basic_multi_buffer]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Friends]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.swap [*swap]]]\r    [\r      Exchange two dynamic buffers. \r    ]\r  ]\r]\r\r[heading Description]\r
364 A dynamic buffer encapsulates memory storage that may be automatically resized as required, where the memory is divided into two regions: readable bytes followed by writable bytes. These memory regions are internal to the dynamic buffer, but direct access to the elements is provided to permit them to be efficiently used with I/O operations.
365 The implementation uses a sequence of one or more byte arrays of varying sizes to represent the readable and writable bytes. Additional byte array objects are appended to the sequence to accommodate changes in the desired size. The behavior and implementation of this container is most similar to `std::deque`.
366 Objects of this type meet the requirements of ['DynamicBuffer] and have the following additional properties:
367
368 * A mutable buffer sequence representing the readable bytes is returned by [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] when `this` is non-const.
369
370
371 * Buffer sequences representing the readable and writable bytes, returned by [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] and [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`], may have length greater than one.
372
373
374 * A configurable maximum size may be set upon construction and adjusted afterwards. Calls to [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] that would exceed this size will throw `std::length_error`.
375
376
377 * Sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] remain valid after calls to [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] or [link beast.ref.boost__beast__basic_multi_buffer.commit `basic_multi_buffer::commit`].
378
379 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Allocator`][\r    
380 The allocator to use for managing memory. \r  ]]\r]\r
381 [section:allocator_type basic_multi_buffer::allocator_type]\r[indexterm2 allocator_type..basic_multi_buffer]\r
382 The type of allocator used. \r[heading Synopsis]\r\r```\rusing allocator_type = Allocator;\r```\r\r[heading Description]\r[endsect]\r[section:basic_multi_buffer basic_multi_buffer::basic_multi_buffer]\r[indexterm2 basic_multi_buffer..basic_multi_buffer]\r
383 Constructor. ```\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload1 basic_multi_buffer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload1 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload2 basic_multi_buffer]``(\r    std::size_t limit);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload2 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload3 basic_multi_buffer]``(\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload3 more...]]``\r\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload4 basic_multi_buffer]``(\r    std::size_t limit,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload4 more...]]``\r\r```\r
384 Move Constructor. ```\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload5 basic_multi_buffer]``(\r    basic_multi_buffer&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload5 more...]]``\r\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload6 basic_multi_buffer]``(\r    basic_multi_buffer&& other,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload6 more...]]``\r\r```\r
385 Copy Constructor. ```\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload7 basic_multi_buffer]``(\r    basic_multi_buffer const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload7 more...]]``\r\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload8 basic_multi_buffer]``(\r    basic_multi_buffer const& other,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload8 more...]]``\r\rtemplate<\r    class OtherAlloc>\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload9 basic_multi_buffer]``(\r    basic_multi_buffer< OtherAlloc > const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload9 more...]]``\r\rtemplate<\r    class OtherAlloc>\r``[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload10 basic_multi_buffer]``(\r    basic_multi_buffer< OtherAlloc > const& other,\r    allocator_type const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer.overload10 more...]]``\r```\r[section:overload1 basic_multi_buffer::basic_multi_buffer (1 of 10 overloads)]\r
386 Constructor. \r[heading Synopsis]\r```\rbasic_multi_buffer();\r```\r\r[heading Description]\r
387 After construction, [link beast.ref.boost__beast__basic_multi_buffer.capacity `basic_multi_buffer::capacity`] will return zero, and [link beast.ref.boost__beast__basic_multi_buffer.max_size `basic_multi_buffer::max_size`] will return the largest value which may be passed to the allocator's `allocate` function. [endsect]\r[section:overload2 basic_multi_buffer::basic_multi_buffer (2 of 10 overloads)]\r
388 Constructor. \r[heading Synopsis]\r```\rbasic_multi_buffer(\r    std::size_t limit);\r```\r\r[heading Description]\r
389 After construction, [link beast.ref.boost__beast__basic_multi_buffer.capacity `basic_multi_buffer::capacity`] will return zero, and [link beast.ref.boost__beast__basic_multi_buffer.max_size `basic_multi_buffer::max_size`] will return the specified value of `limit`.
390 [heading Parameters]\r[table [[Name][Description]]\r  [[`limit`][\r    
391 The desired maximum size. \r  ]]\r]\r
392 [endsect]\r[section:overload3 basic_multi_buffer::basic_multi_buffer (3 of 10 overloads)]\r
393 Constructor. \r[heading Synopsis]\r```\rbasic_multi_buffer(\r    Allocator const& alloc);\r```\r\r[heading Description]\r
394 After construction, [link beast.ref.boost__beast__basic_multi_buffer.capacity `basic_multi_buffer::capacity`] will return zero, and [link beast.ref.boost__beast__basic_multi_buffer.max_size `basic_multi_buffer::max_size`] will return the largest value which may be passed to the allocator's `allocate` function.
395 [heading Parameters]\r[table [[Name][Description]]\r  [[`alloc`][\r    
396 The allocator to use for the object.\r  ]]\r]\r
397 [heading Exception Safety]
398
399 No-throw guarantee. [endsect]\r[section:overload4 basic_multi_buffer::basic_multi_buffer (4 of 10 overloads)]\r
400 Constructor. \r[heading Synopsis]\r```\rbasic_multi_buffer(\r    std::size_t limit,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
401 After construction, [link beast.ref.boost__beast__basic_multi_buffer.capacity `basic_multi_buffer::capacity`] will return zero, and [link beast.ref.boost__beast__basic_multi_buffer.max_size `basic_multi_buffer::max_size`] will return the specified value of `limit`.
402 [heading Parameters]\r[table [[Name][Description]]\r  [[`limit`][\r    
403 The desired maximum size.\r  ]]\r  [[`alloc`][\r    
404 The allocator to use for the object.\r  ]]\r]\r
405 [heading Exception Safety]
406
407 No-throw guarantee. [endsect]\r[section:overload5 basic_multi_buffer::basic_multi_buffer (5 of 10 overloads)]\r
408 Move Constructor. \r[heading Synopsis]\r```\rbasic_multi_buffer(\r    basic_multi_buffer&& other);\r```\r\r[heading Description]\r
409 The container is constructed with the contents of `other` using move semantics. The maximum size will be the same as the moved-from object.
410 Buffer sequences previously obtained from `other` using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] or [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] remain valid after the move.
411 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
412 The object to move from. After the move, the moved-from object will have zero capacity, zero readable bytes, and zero writable bytes.\r  ]]\r]\r
413 [heading Exception Safety]
414
415 No-throw guarantee. [endsect]\r[section:overload6 basic_multi_buffer::basic_multi_buffer (6 of 10 overloads)]\r
416 Move Constructor. \r[heading Synopsis]\r```\rbasic_multi_buffer(\r    basic_multi_buffer&& other,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
417 Using `alloc` as the allocator for the new container, the contents of `other` are moved. If `alloc != other.get_allocator()`, this results in a copy. The maximum size will be the same as the moved-from object.
418 Buffer sequences previously obtained from `other` using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] or [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] become invalid after the move.
419 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
420 The object to move from. After the move, the moved-from object will have zero capacity, zero readable bytes, and zero writable bytes.\r  ]]\r  [[`alloc`][\r    
421 The allocator to use for the object.\r  ]]\r]\r
422 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
423 if `other.size()` exceeds the maximum allocation size of `alloc`. \r  ]]\r]\r
424 [endsect]\r[section:overload7 basic_multi_buffer::basic_multi_buffer (7 of 10 overloads)]\r
425 Copy Constructor. \r[heading Synopsis]\r```\rbasic_multi_buffer(\r    basic_multi_buffer const& other);\r```\r\r[heading Description]\r
426 This container is constructed with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
427 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
428 The object to copy from.\r  ]]\r]\r
429 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
430 if `other.size()` exceeds the maximum allocation size of the allocator. \r  ]]\r]\r
431 [endsect]\r[section:overload8 basic_multi_buffer::basic_multi_buffer (8 of 10 overloads)]\r
432 Copy Constructor. \r[heading Synopsis]\r```\rbasic_multi_buffer(\r    basic_multi_buffer const& other,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
433 This container is constructed with the contents of `other` using copy semantics and the specified allocator. The maximum size will be the same as the copied object.
434 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
435 The object to copy from.\r  ]]\r  [[`alloc`][\r    
436 The allocator to use for the object.\r  ]]\r]\r
437 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
438 if `other.size()` exceeds the maximum allocation size of `alloc`. \r  ]]\r]\r
439 [endsect]\r[section:overload9 basic_multi_buffer::basic_multi_buffer (9 of 10 overloads)]\r
440 Copy Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_multi_buffer(\r    basic_multi_buffer< OtherAlloc > const& other);\r```\r\r[heading Description]\r
441 This container is constructed with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
442 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
443 The object to copy from.\r  ]]\r]\r
444 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
445 if `other.size()` exceeds the maximum allocation size of the allocator. \r  ]]\r]\r
446 [endsect]\r[section:overload10 basic_multi_buffer::basic_multi_buffer (10 of 10 overloads)]\r
447 Copy Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_multi_buffer(\r    basic_multi_buffer< OtherAlloc > const& other,\r    allocator_type const& alloc);\r```\r\r[heading Description]\r
448 This container is constructed with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
449 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
450 The object to copy from.\r  ]]\r  [[`alloc`][\r    
451 The allocator to use for the object.\r  ]]\r]\r
452 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
453 if `other.size()` exceeds the maximum allocation size of `alloc`. \r  ]]\r]\r
454 [endsect]\r[endsect]\r\r[section:capacity basic_multi_buffer::capacity]\r[indexterm2 capacity..basic_multi_buffer]\r
455 Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r[heading Synopsis]\r```\rstd::size_t\rcapacity() const;\r```\r\r[heading Description]\r[endsect]\r[section:cdata basic_multi_buffer::cdata]\r[indexterm2 cdata..basic_multi_buffer]\r
456 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rcdata() const;\r```\r\r[heading Description]\r
457 [heading Remarks]\r
458 The sequence may contain multiple contiguous memory regions. 
459 [endsect]\r[section:clear basic_multi_buffer::clear]\r[indexterm2 clear..basic_multi_buffer]\r
460 Set the size of the readable and writable bytes to zero. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
461 This clears the buffer without changing capacity. Buffer sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] or [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] become invalid.
462 [heading Exception Safety]
463
464 No-throw guarantee. [endsect]\r[section:commit basic_multi_buffer::commit]\r[indexterm2 commit..basic_multi_buffer]\r
465 Append writable bytes to the readable bytes. \r[heading Synopsis]\r```\rvoid\rcommit(\r    size_type n);\r```\r\r[heading Description]\r
466 Appends n bytes from the start of the writable bytes to the end of the readable bytes. The remainder of the writable bytes are discarded. If n is greater than the number of writable bytes, all writable bytes are appended to the readable bytes.
467 All buffer sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] are invalidated. Buffer sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] remain valid.
468 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
469 The number of bytes to append. If this number is greater than the number of writable bytes, all writable bytes are appended.\r  ]]\r]\r
470 [heading Exception Safety]
471
472 No-throw guarantee. [endsect]\r[section:const_buffers_type basic_multi_buffer::const_buffers_type]\r[indexterm2 const_buffers_type..basic_multi_buffer]\r
473 The ConstBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing const_buffers_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:consume basic_multi_buffer::consume]\r[indexterm2 consume..basic_multi_buffer]\r
474 Remove bytes from beginning of the readable bytes. \r[heading Synopsis]\r```\rvoid\rconsume(\r    size_type n);\r```\r\r[heading Description]\r
475 Removes n bytes from the beginning of the readable bytes.
476 All buffers sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] or [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] are invalidated.
477 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
478 The number of bytes to remove. If this number is greater than the number of readable bytes, all readable bytes are removed.\r  ]]\r]\r
479 [heading Exception Safety]
480
481 No-throw guarantee. [endsect]\r[section:data basic_multi_buffer::data]\r[indexterm2 data..basic_multi_buffer]\r
482 Returns a constant buffer sequence representing the readable bytes. ```\rconst_buffers_type\r``[link beast.ref.boost__beast__basic_multi_buffer.data.overload1 data]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.data.overload1 more...]]``\r\r```\r
483 Returns a mutable buffer sequence representing the readable bytes. ```\rmutable_data_type\r``[link beast.ref.boost__beast__basic_multi_buffer.data.overload2 data]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.data.overload2 more...]]``\r```\r[section:overload1 basic_multi_buffer::data (1 of 2 overloads)]\r
484 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rdata() const;\r```\r\r[heading Description]\r
485 [heading Remarks]\r
486 The sequence may contain multiple contiguous memory regions. 
487 [endsect]\r[section:overload2 basic_multi_buffer::data (2 of 2 overloads)]\r
488 Returns a mutable buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rmutable_data_type\rdata();\r```\r\r[heading Description]\r
489 [heading Remarks]\r
490 The sequence may contain multiple contiguous memory regions. 
491 [endsect]\r[endsect]\r\r[section:get_allocator basic_multi_buffer::get_allocator]\r[indexterm2 get_allocator..basic_multi_buffer]\r
492 Returns a copy of the allocator used. \r[heading Synopsis]\r```\rallocator_type\rget_allocator() const;\r```\r\r[heading Description]\r[endsect]\r[section:max_size basic_multi_buffer::max_size]\r[indexterm2 max_size..basic_multi_buffer]\r
493 Set the maximum allowed capacity. ```\rvoid\r``[link beast.ref.boost__beast__basic_multi_buffer.max_size.overload1 max_size]``(\r    std::size_t n);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.max_size.overload1 more...]]``\r\r```\r
494 Return the maximum number of bytes, both readable and writable, that can ever be held. ```\rsize_type\r``[link beast.ref.boost__beast__basic_multi_buffer.max_size.overload2 max_size]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.max_size.overload2 more...]]``\r```\r[section:overload1 basic_multi_buffer::max_size (1 of 2 overloads)]\r
495 Set the maximum allowed capacity. \r[heading Synopsis]\r```\rvoid\rmax_size(\r    std::size_t n);\r```\r\r[heading Description]\r
496 This function changes the currently configured upper limit on capacity to the specified value.
497 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
498 The maximum number of bytes ever allowed for capacity.\r  ]]\r]\r
499 [heading Exception Safety]
500
501 No-throw guarantee. [endsect]\r[section:overload2 basic_multi_buffer::max_size (2 of 2 overloads)]\r
502 Return the maximum number of bytes, both readable and writable, that can ever be held. \r[heading Synopsis]\r```\rsize_type\rmax_size() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:mutable_buffers_type basic_multi_buffer::mutable_buffers_type]\r[indexterm2 mutable_buffers_type..basic_multi_buffer]\r
503 The MutableBufferSequence used to represent the writable bytes. \r[heading Synopsis]\r\r```\rusing mutable_buffers_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_data_type basic_multi_buffer::mutable_data_type]\r[indexterm2 mutable_data_type..basic_multi_buffer]\r
504 The MutableBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing mutable_data_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ basic_multi_buffer::operator=]\r[indexterm2 operator=..basic_multi_buffer]\r
505 Move Assignment. ```\rbasic_multi_buffer&\r``[link beast.ref.boost__beast__basic_multi_buffer.operator_eq_.overload1 operator=]``(\r    basic_multi_buffer&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.operator_eq_.overload1 more...]]``\r\r```\r
506 Copy Assignment. ```\rbasic_multi_buffer&\r``[link beast.ref.boost__beast__basic_multi_buffer.operator_eq_.overload2 operator=]``(\r    basic_multi_buffer const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.operator_eq_.overload2 more...]]``\r\rtemplate<\r    class OtherAlloc>\rbasic_multi_buffer&\r``[link beast.ref.boost__beast__basic_multi_buffer.operator_eq_.overload3 operator=]``(\r    basic_multi_buffer< OtherAlloc > const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer.operator_eq_.overload3 more...]]``\r```\r[section:overload1 basic_multi_buffer::operator= (1 of 3 overloads)]\r
507 Move Assignment. \r[heading Synopsis]\r```\rbasic_multi_buffer&\roperator=(\r    basic_multi_buffer&& other);\r```\r\r[heading Description]\r
508 The container is assigned with the contents of `other` using move semantics. The maximum size will be the same as the moved-from object.
509 Buffer sequences previously obtained from `other` using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] or [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] remain valid after the move.
510 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
511 The object to move from. After the move, the moved-from object will have zero capacity, zero readable bytes, and zero writable bytes. \r  ]]\r]\r
512 [endsect]\r[section:overload2 basic_multi_buffer::operator= (2 of 3 overloads)]\r
513 Copy Assignment. \r[heading Synopsis]\r```\rbasic_multi_buffer&\roperator=(\r    basic_multi_buffer const& other);\r```\r\r[heading Description]\r
514 The container is assigned with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
515 After the copy, `this` will have zero writable bytes.
516 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
517 The object to copy from.\r  ]]\r]\r
518 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
519 if `other.size()` exceeds the maximum allocation size of the allocator. \r  ]]\r]\r
520 [endsect]\r[section:overload3 basic_multi_buffer::operator= (3 of 3 overloads)]\r
521 Copy Assignment. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_multi_buffer&\roperator=(\r    basic_multi_buffer< OtherAlloc > const& other);\r```\r\r[heading Description]\r
522 The container is assigned with the contents of `other` using copy semantics. The maximum size will be the same as the copied object.
523 After the copy, `this` will have zero writable bytes.
524 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
525 The object to copy from.\r  ]]\r]\r
526 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
527 if `other.size()` exceeds the maximum allocation size of the allocator. \r  ]]\r]\r
528 [endsect]\r[endsect]\r\r[section:prepare basic_multi_buffer::prepare]\r[indexterm2 prepare..basic_multi_buffer]\r
529 Returns a mutable buffer sequence representing writable bytes. \r[heading Synopsis]\r```\rmutable_buffers_type\rprepare(\r    size_type n);\r```\r\r[heading Description]\r
530 Returns a mutable buffer sequence representing the writable bytes containing exactly `n` bytes of storage. Memory may be reallocated as needed.
531 All buffer sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] are invalidated. Buffer sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] remain valid.
532 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
533 The desired number of bytes in the returned buffer sequence.\r  ]]\r]\r
534 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
535 if `size() + n` exceeds `max_size()`.\r  ]]\r]\r
536 [heading Exception Safety]
537
538 Strong guarantee. [endsect]\r[section:reserve basic_multi_buffer::reserve]\r[indexterm2 reserve..basic_multi_buffer]\r
539 Guarantee a minimum capacity. \r[heading Synopsis]\r```\rvoid\rreserve(\r    std::size_t n);\r```\r\r[heading Description]\r
540 This function adjusts the internal storage (if necessary) to guarantee space for at least `n` bytes.
541 Buffer sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] remain valid, while buffer sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] become invalid.
542 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
543 The minimum number of byte for the new capacity. If this value is greater than the maximum size, then the maximum size will be adjusted upwards to this value.\r  ]]\r]\r
544 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
545 if n is larger than the maximum allocation size of the allocator.\r  ]]\r]\r
546 [heading Exception Safety]
547
548 Strong guarantee. [endsect]\r[section:shrink_to_fit basic_multi_buffer::shrink_to_fit]\r[indexterm2 shrink_to_fit..basic_multi_buffer]\r
549 Reallocate the buffer to fit the readable bytes exactly. \r[heading Synopsis]\r```\rvoid\rshrink_to_fit();\r```\r\r[heading Description]\r
550 Buffer sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] or [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] become invalid.
551 [heading Exception Safety]
552
553 Strong guarantee. [endsect]\r[section:size basic_multi_buffer::size]\r[indexterm2 size..basic_multi_buffer]\r
554 Returns the number of readable bytes. \r[heading Synopsis]\r```\rsize_type\rsize() const;\r```\r\r[heading Description]\r[endsect]\r[section:swap basic_multi_buffer::swap]\r[indexterm2 swap..basic_multi_buffer]\r
555 Exchange two dynamic buffers. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/multi_buffer.hpp]\r\r\r```\rtemplate<\r    class Alloc>\rfriend void\rswap(\r    basic_multi_buffer< Alloc >& lhs,\r    basic_multi_buffer< Alloc >& rhs);\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:basic_multi_buffer_dtor_ basic_multi_buffer::~basic_multi_buffer]\r[indexterm2 ~basic_multi_buffer..basic_multi_buffer]\r
556 Destructor. \r[heading Synopsis]\r```\r~basic_multi_buffer();\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__basic_multi_buffer__element basic_multi_buffer::element]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/multi_buffer.hpp]\r\r\r\r```\rclass element :\r    public boost::intrusive::list_base_hook< boost::intrusive::link_mode< boost::intrusive::normal_link > >\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer__element.data [*data]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer__element.element [*element]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer__element.size [*size]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r[section:data basic_multi_buffer::element::data]\r[indexterm2 data..basic_multi_buffer::element]\r\r[heading Synopsis]\r```\rchar*\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:element basic_multi_buffer::element::element]\r[indexterm2 element..basic_multi_buffer::element]\r```\r``[link beast.ref.boost__beast__basic_multi_buffer__element.element.overload1 element]``(\r    element const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer__element.element.overload1 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__basic_multi_buffer__element.element.overload2 element]``(\r    size_type n);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_multi_buffer__element.element.overload2 more...]]``\r```\r[section:overload1 basic_multi_buffer::element::element (1 of 2 overloads)]\r\r[heading Synopsis]\r```\relement(\r    element const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 basic_multi_buffer::element::element (2 of 2 overloads)]\r\r[heading Synopsis]\r```\relement(\r    size_type n);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:size basic_multi_buffer::element::size]\r[indexterm2 size..basic_multi_buffer::element]\r\r[heading Synopsis]\r```\rsize_type\rsize() const;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__basic_multi_buffer__readable_bytes basic_multi_buffer::readable_bytes]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/multi_buffer.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass readable_bytes\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__basic_stream basic_stream]\r
557 A stream socket wrapper with timeouts, an executor, and a rate limit policy. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/basic_stream.hpp]\r\r\r\r```\rtemplate<\r    class __Protocol__,\r    class __Executor__ = net::executor,\r    class __RatePolicy__ = unlimited_rate_policy>\rclass basic_stream\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream__rebind_executor [*rebind_executor]]]\r    [\r      Rebinds the stream type to another executor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.endpoint_type [*endpoint_type]]]\r    [\r      The endpoint type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.executor_type [*executor_type]]]\r    [\r      The type of the executor associated with the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.protocol_type [*protocol_type]]]\r    [\r      The protocol type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.socket_type [*socket_type]]]\r    [\r      The type of the underlying socket. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_connect [*async_connect]]]\r    [\r      Connect the stream to the specified endpoint asynchronously. \r\r      Establishes a connection by trying each endpoint in a sequence asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_read_some [*async_read_some]]]\r    [\r      Read some data asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_write_some [*async_write_some]]]\r    [\r      Write some data asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.basic_stream [*basic_stream]]]\r    [\r      Constructor. \r\r      Move constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.cancel [*cancel]]]\r    [\r      Cancel all asynchronous operations associated with the socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.close [*close]]]\r    [\r      Close the timed stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.connect [*connect]]]\r    [\r      Connect the stream to the specified endpoint. \r\r      Establishes a connection by trying each endpoint in a sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_after [*expires_after]]]\r    [\r      Set the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_at [*expires_at]]]\r    [\r      Set the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_never [*expires_never]]]\r    [\r      Disable the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.get_executor [*get_executor]]]\r    [\r      Get the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.operator_eq_ [*operator=]]]\r    [\r      Move assignment (deleted). \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.rate_policy [*rate_policy]]]\r    [\r      Returns the rate policy associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.read_some [*read_some]]]\r    [\r      Read some data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.release_socket [*release_socket]]]\r    [\r      Release ownership of the underlying socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.socket [*socket]]]\r    [\r      Return a reference to the underlying socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.write_some [*write_some]]]\r    [\r      Write some data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.basic_stream_dtor_ [*~basic_stream]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
558 This stream wraps a `net::basic_stream_socket` to provide the following features:
559
560 * An ['Executor] may be associated with the stream, which will be used to invoke any completion handlers which do not already have an associated executor. This achieves support for [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html [P1322R0] Networking TS enhancement to enable custom I/O executors].
561
562
563 * Timeouts may be specified for each logical asynchronous operation performing any reading, writing, or connecting.
564
565
566 * A ['RatePolicy] may be associated with the stream, to implement rate limiting through the policy's interface.
567
568 Although the stream supports multiple concurrent outstanding asynchronous operations, the stream object is not thread-safe. The caller is responsible for ensuring that the stream is accessed from only one thread at a time. This includes the times when the stream, and its underlying socket, are accessed by the networking implementation. To meet this thread safety requirement, all asynchronous operations must be performed by the stream within the same implicit strand (only one thread `net::io_context::run`) or within the same explicit strand, such as an instance of `net::strand`.
569 Completion handlers with explicit associated executors (such as those arising from use of `net::bind_executor`) will be invoked by the stream using the associated executor. Otherwise, the completion handler will be invoked by the executor associated with the stream upon construction. The type of executor used with this stream must meet the following requirements:
570
571 * Function objects submitted to the executor shall never run concurrently with each other.
572
573 The executor type `net::strand` meets these requirements. Use of a strand as the executor in the stream class template offers an additional notational convenience: the strand does not need to be specified in each individual initiating function call.
574 Unlike other stream wrappers, the underlying socket is accessed through the [link beast.ref.boost__beast__basic_stream.socket `basic_stream::socket`] member function instead of `next_layer`. This causes the [link beast.ref.boost__beast__basic_stream `basic_stream`] to be returned in calls to [link beast.ref.boost__beast__get_lowest_layer `get_lowest_layer`].
575 [heading Usage]
576
577 To use this stream declare an instance of the class. Then, before each logical operation for which a timeout is desired, call [link beast.ref.boost__beast__basic_stream.expires_after `basic_stream::expires_after`] with a duration, or call [link beast.ref.boost__beast__basic_stream.expires_at `basic_stream::expires_at`] with a time point. Alternatively, call [link beast.ref.boost__beast__basic_stream.expires_never `basic_stream::expires_never`] to disable the timeout for subsequent logical operations. A logical operation is any series of one or more direct or indirect calls to the timeout stream's asynchronous read, asynchronous write, or asynchronous connect functions.
578 When a timeout is set and a mixed operation is performed (one that includes both reads and writes, for example) the timeout applies to all of the intermediate asynchronous operations used in the enclosing operation. This allows timeouts to be applied to stream algorithms which were not written specifically to allow for timeouts, when those algorithms are passed a timeout stream with a timeout set.
579 When a timeout occurs the socket will be closed, canceling any pending I/O operations. The completion handlers for these canceled operations will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
580 [heading Examples]
581
582 This function reads an HTTP request with a timeout, then sends the HTTP response with a different timeout.
583 \r```\r  void process_http_1 (tcp_stream& stream, net::yield_context yield)
584   {
585       flat_buffer buffer;
586       http::request<http::empty_body> req;
587
588       // Read the request, with a 15 second timeout
589       stream.expires_after(std::chrono::seconds(15));
590       http::async_read(stream, buffer, req, yield);
591
592       // Calculate the response
593       http::response<http::string_body> res = make_response(req);
594
595       // Send the response, with a 30 second timeout.
596       stream.expires_after (std::chrono::seconds(30));
597       http::async_write (stream, res, yield);
598   }
599 ```\r
600 The example above could be expressed using a single timeout with a simple modification. The function that follows first reads an HTTP request then sends the HTTP response, with a single timeout that applies to the entire combined operation of reading and writing:
601 \r```\r  void process_http_2 (tcp_stream& stream, net::yield_context yield)
602   {
603       flat_buffer buffer;
604       http::request<http::empty_body> req;
605
606       // Require that the read and write combined take no longer than 30 seconds
607       stream.expires_after(std::chrono::seconds(30));
608
609       http::async_read(stream, buffer, req, yield);
610
611       http::response<http::string_body> res = make_response(req);
612       http::async_write (stream, res, yield);
613   }
614 ```\r
615 Some stream algorithms, such as `ssl::stream::async_handshake` perform both reads and writes. A timeout set before calling the initiating function of such composite stream algorithms will apply to the entire composite operation. For example, a timeout may be set on performing the SSL handshake thusly:
616 \r```\r  void do_ssl_handshake (net::ssl::stream<tcp_stream>& stream, net::yield_context yield)
617   {
618       // Require that the SSL handshake take no longer than 10 seconds
619       stream.expires_after(std::chrono::seconds(10));
620
621       stream.async_handshake(net::ssl::stream_base::client, yield);
622   }
623 ```\r
624 [heading Blocking I/O]
625
626 Synchronous functions behave identically as that of the wrapped `net::basic_stream_socket`. Timeouts are not available when performing blocking calls.
627 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Protocol`][\r    
628 A type meeting the requirements of ['Protocol] representing the protocol the protocol to use for the basic stream socket. A common choice is `net::ip::tcp`.\r  ]]\r  [[`Executor`][\r    
629 A type meeting the requirements of ['Executor] to be used for submitting all completion handlers which do not already have an associated executor. If this type is omitted, the default of `net::executor` will be used.\r  ]]\r]\r
630 [heading Thread Safety]
631 ['Distinct objects]: Safe.\r\r['Shared objects]: Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
632 [heading See Also]\r
633
634
635 * [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html [P1322R0] Networking TS enhancement to enable custom I/O executors]. 
636
637 [section:async_connect basic_stream::async_connect]\r[indexterm2 async_connect..basic_stream]\r
638 Connect the stream to the specified endpoint asynchronously. ```\rtemplate<\r    class __ConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__basic_stream.async_connect.overload1 async_connect]``(\r    endpoint_type const& ep,\r    ConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.async_connect.overload1 more...]]``\r\r```\r
639 Establishes a connection by trying each endpoint in a sequence asynchronously. ```\rtemplate<\r    class __EndpointSequence__,\r    class __RangeConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__basic_stream.async_connect.overload2 async_connect]``(\r    EndpointSequence const& endpoints,\r    RangeConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.async_connect.overload2 more...]]``\r\rtemplate<\r    class __EndpointSequence__,\r    class __ConnectCondition__,\r    class __RangeConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__basic_stream.async_connect.overload3 async_connect]``(\r    EndpointSequence const& endpoints,\r    ConnectCondition connect_condition,\r    RangeConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.async_connect.overload3 more...]]``\r\rtemplate<\r    class Iterator,\r    class __IteratorConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__basic_stream.async_connect.overload4 async_connect]``(\r    Iterator begin,\r    Iterator end,\r    IteratorConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.async_connect.overload4 more...]]``\r\rtemplate<\r    class Iterator,\r    class __ConnectCondition__,\r    class __IteratorConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__basic_stream.async_connect.overload5 async_connect]``(\r    Iterator begin,\r    Iterator end,\r    ConnectCondition connect_condition,\r    IteratorConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.async_connect.overload5 more...]]``\r```\r[section:overload1 basic_stream::async_connect (1 of 5 overloads)]\r
640 Connect the stream to the specified endpoint asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __ConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_connect(\r    endpoint_type const& ep,\r    ConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
641 This function is used to asynchronously connect the underlying socket to the specified remote endpoint. The function call always returns immediately. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
642 If the timeout timer expires while the operation is outstanding, the operation will be canceled and the completion handler will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
643 [heading Parameters]\r[table [[Name][Description]]\r  [[`ep`][\r    
644 The remote endpoint to which the underlying socket will be connected. Copies will be made of the endpoint object as required.\r  ]]\r  [[`handler`][\r    
645 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
646       error_code ec         // Result of operation
647   );
648 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
649 [heading See Also]\r
650 [link beast.ref.boost__beast__basic_stream.async_connect `basic_stream::async_connect`] 
651 [endsect]\r[section:overload2 basic_stream::async_connect (2 of 5 overloads)]\r
652 Establishes a connection by trying each endpoint in a sequence asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __EndpointSequence__,\r    class __RangeConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_connect(\r    EndpointSequence const& endpoints,\r    RangeConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
653 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
654 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the underlying socket's `async_connect` function.
655 If the timeout timer expires while the operation is outstanding, the current connection attempt will be canceled and the completion handler will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
656 [heading Parameters]\r[table [[Name][Description]]\r  [[`endpoints`][\r    
657 A sequence of endpoints. This this object must meet the requirements of ['EndpointSequence].\r  ]]\r  [[`handler`][\r    
658 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
659       // Result of operation. if the sequence is empty, set to
660       // net::error::not_found. Otherwise, contains the
661       // error from the last connection attempt.
662       error_code const& error,
663
664       // On success, the successfully connected endpoint.
665       // Otherwise, a default-constructed endpoint.
666       typename Protocol::endpoint const& endpoint
667   );
668 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
669 [endsect]\r[section:overload3 basic_stream::async_connect (3 of 5 overloads)]\r
670 Establishes a connection by trying each endpoint in a sequence asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __EndpointSequence__,\r    class __ConnectCondition__,\r    class __RangeConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_connect(\r    EndpointSequence const& endpoints,\r    ConnectCondition connect_condition,\r    RangeConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
671 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
672 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the underlying socket's `async_connect` function.
673 If the timeout timer expires while the operation is outstanding, the current connection attempt will be canceled and the completion handler will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
674 [heading Parameters]\r[table [[Name][Description]]\r  [[`endpoints`][\r    
675 A sequence of endpoints. This this object must meet the requirements of ['EndpointSequence].\r  ]]\r  [[`connect_condition`][\r    
676 A function object that is called prior to each connection attempt. The signature of the function object must be: \r```\r  bool connect_condition(
677       error_code const& ec,
678       typename Protocol::endpoint const& next);
679 ```\rThe `ec` parameter contains the result from the most recent connect operation. Before the first connection attempt, `ec` is always set to indicate success. The `next` parameter is the next endpoint to be tried. The function object should return true if the next endpoint should be tried, and false if it should be skipped.\r  ]]\r  [[`handler`][\r    
680 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
681       // Result of operation. if the sequence is empty, set to
682       // net::error::not_found. Otherwise, contains the
683       // error from the last connection attempt.
684       error_code const& error,
685
686       // On success, the successfully connected endpoint.
687       // Otherwise, a default-constructed endpoint.
688       typename Protocol::endpoint const& endpoint
689   );
690 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
691 [heading Example]
692 The following connect condition function object can be used to output information about the individual connection attempts: \r```\r  struct my_connect_condition
693   {
694       bool operator()(
695           error_code const& ec,
696           net::ip::tcp::endpoint const& next)
697       {
698           if (ec)
699               std::cout << "Error: " << ec.message() << std::endl;
700           std::cout << "Trying: " << next << std::endl;
701           return true;
702       }
703   };
704 ```\r
705 [endsect]\r[section:overload4 basic_stream::async_connect (4 of 5 overloads)]\r
706 Establishes a connection by trying each endpoint in a sequence asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class Iterator,\r    class __IteratorConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_connect(\r    Iterator begin,\r    Iterator end,\r    IteratorConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
707 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
708 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the underlying socket's `async_connect` function.
709 If the timeout timer expires while the operation is outstanding, the current connection attempt will be canceled and the completion handler will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
710 [heading Parameters]\r[table [[Name][Description]]\r  [[`begin`][\r    
711 An iterator pointing to the start of a sequence of endpoints.\r  ]]\r  [[`end`][\r    
712 An iterator pointing to the end of a sequence of endpoints.\r  ]]\r  [[`handler`][\r    
713 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
714       // Result of operation. if the sequence is empty, set to
715       // net::error::not_found. Otherwise, contains the
716       // error from the last connection attempt.
717       error_code const& error,
718
719       // On success, an iterator denoting the successfully
720       // connected endpoint. Otherwise, the end iterator.
721       Iterator iterator
722   );
723 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
724 [endsect]\r[section:overload5 basic_stream::async_connect (5 of 5 overloads)]\r
725 Establishes a connection by trying each endpoint in a sequence asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class Iterator,\r    class __ConnectCondition__,\r    class __IteratorConnectHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_connect(\r    Iterator begin,\r    Iterator end,\r    ConnectCondition connect_condition,\r    IteratorConnectHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
726 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the underlying socket's `async_connect` function.
727 If the timeout timer expires while the operation is outstanding, the current connection attempt will be canceled and the completion handler will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
728 [heading Parameters]\r[table [[Name][Description]]\r  [[`begin`][\r    
729 An iterator pointing to the start of a sequence of endpoints.\r  ]]\r  [[`end`][\r    
730 An iterator pointing to the end of a sequence of endpoints.\r  ]]\r  [[`connect_condition`][\r    
731 A function object that is called prior to each connection attempt. The signature of the function object must be: \r```\r  bool connect_condition(
732       error_code const& ec,
733       Iterator next);
734 ```\r\r  ]]\r  [[`handler`][\r    
735 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
736       // Result of operation. if the sequence is empty, set to
737       // net::error::not_found. Otherwise, contains the
738       // error from the last connection attempt.
739       error_code const& error,
740
741       // On success, an iterator denoting the successfully
742       // connected endpoint. Otherwise, the end iterator.
743       Iterator iterator
744   );
745 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
746 [endsect]\r[endsect]\r\r[section:async_read_some basic_stream::async_read_some]\r[indexterm2 async_read_some..basic_stream]\r
747 Read some data asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__,\r    class __ReadHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_read_some(\r    MutableBufferSequence const& buffers,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
748 This function is used to asynchronously read data from the stream.
749 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
750
751 * One or more bytes are read from the stream.
752
753
754 * An error occurs.
755
756 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` function. The program must ensure that no other calls to [link beast.ref.boost__beast__basic_stream.read_some `basic_stream::read_some`] or [link beast.ref.boost__beast__basic_stream.async_read_some `basic_stream::async_read_some`] are performed until this operation completes.
757 If the timeout timer expires while the operation is outstanding, the operation will be canceled and the completion handler will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
758 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
759 The buffers into which the data will be read. If the size of the buffers is zero bytes, the operation always completes immediately with no error. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
760 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
761       error_code error,               // Result of operation.
762       std::size_t bytes_transferred   // Number of bytes read.
763   );
764 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
765 [heading Remarks]\r
766 The `async_read_some` operation may not receive all of the requested number of bytes. Consider using the function `net::async_read` if you need to ensure that the requested amount of data is read before the asynchronous operation completes. 
767 [endsect]\r[section:async_write_some basic_stream::async_write_some]\r[indexterm2 async_write_some..basic_stream]\r
768 Write some data asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class __WriteHandler__ = net::default_completion_token_t<Executor>>\r``__deduced__``\rasync_write_some(\r    ConstBufferSequence const& buffers,\r    WriteHandler&& handler = net::default_completion_token_t< Executor >{});\r```\r\r[heading Description]\r
769 This function is used to asynchronously write data to the underlying socket.
770 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
771
772 * One or more bytes are written to the stream.
773
774
775 * An error occurs.
776
777 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_write_some` function. The program must ensure that no other calls to [link beast.ref.boost__beast__basic_stream.async_write_some `basic_stream::async_write_some`] are performed until this operation completes.
778 If the timeout timer expires while the operation is outstanding, the operation will be canceled and the completion handler will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
779 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
780 The buffers from which the data will be written. If the size of the buffers is zero bytes, the operation always completes immediately with no error. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
781 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
782       error_code error,               // Result of operation.
783       std::size_t bytes_transferred   // Number of bytes written.
784   );
785 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
786 [heading Remarks]\r
787 The `async_write_some` operation may not transmit all of the requested number of bytes. Consider using the function `net::async_write` if you need to ensure that the requested amount of data is sent before the asynchronous operation completes. 
788 [endsect]\r[section:basic_stream basic_stream::basic_stream]\r[indexterm2 basic_stream..basic_stream]\r
789 Constructor. ```\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__basic_stream.basic_stream.overload1 basic_stream]``(\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.basic_stream.overload1 more...]]``\r\rtemplate<\r    class RatePolicy_,\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__basic_stream.basic_stream.overload2 basic_stream]``(\r    RatePolicy_&& policy,\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.basic_stream.overload2 more...]]``\r\r```\r
790 Move constructor. ```\r``[link beast.ref.boost__beast__basic_stream.basic_stream.overload3 basic_stream]``(\r    basic_stream&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.basic_stream.overload3 more...]]``\r```\r[section:overload1 basic_stream::basic_stream (1 of 3 overloads)]\r
791 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rbasic_stream(\r    Args&&... args);\r```\r\r[heading Description]\r
792 This constructor creates the stream by forwarding all arguments to the underlying socket. The socket then needs to be open and connected or accepted before data can be sent or received on it.
793 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
794 A list of parameters forwarded to the constructor of the underlying socket. \r  ]]\r]\r
795 [endsect]\r[section:overload2 basic_stream::basic_stream (2 of 3 overloads)]\r
796 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class RatePolicy_,\r    class... Args>\rbasic_stream(\r    RatePolicy_&& policy,\r    Args&&... args);\r```\r\r[heading Description]\r
797 This constructor creates the stream with the specified rate policy, and forwards all remaining arguments to the underlying socket. The socket then needs to be open and connected or accepted before data can be sent or received on it.
798 [heading Parameters]\r[table [[Name][Description]]\r  [[`policy`][\r    
799 The rate policy object to use. The stream will take ownership of this object by decay-copy.\r  ]]\r  [[`args`][\r    
800 A list of parameters forwarded to the constructor of the underlying socket. \r  ]]\r]\r
801 [endsect]\r[section:overload3 basic_stream::basic_stream (3 of 3 overloads)]\r
802 Move constructor. \r[heading Synopsis]\r```\rbasic_stream(\r    basic_stream&& other);\r```\r\r[heading Description]\r
803 [heading Parameters]\r[table [[Name][Description]]\r  [[`other`][\r    
804 The other object from which the move will occur.\r  ]]\r]\r
805 [heading Remarks]\r
806 Following the move, the moved-from object is in the same state as if newly constructed. 
807 [endsect]\r[endsect]\r\r[section:cancel basic_stream::cancel]\r[indexterm2 cancel..basic_stream]\r
808 Cancel all asynchronous operations associated with the socket. \r[heading Synopsis]\r```\rvoid\rcancel();\r```\r\r[heading Description]\r
809 This function causes all outstanding asynchronous connect, read, and write operations to finish immediately. Completion handlers for cancelled operations will receive the error `net::error::operation_aborted`. Completion handlers not yet invoked whose operations have completed, will receive the error corresponding to the result of the operation (which may indicate success). [endsect]\r[section:close basic_stream::close]\r[indexterm2 close..basic_stream]\r
810 Close the timed stream. \r[heading Synopsis]\r```\rvoid\rclose();\r```\r\r[heading Description]\r
811 This cancels all of the outstanding asynchronous operations as if by calling [link beast.ref.boost__beast__basic_stream.cancel `basic_stream::cancel`], and closes the underlying socket. [endsect]\r[section:connect basic_stream::connect]\r[indexterm2 connect..basic_stream]\r
812 Connect the stream to the specified endpoint. ```\rvoid\r``[link beast.ref.boost__beast__basic_stream.connect.overload1 connect]``(\r    endpoint_type const& ep);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__basic_stream.connect.overload2 connect]``(\r    endpoint_type const& ep,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload2 more...]]``\r\r```\r
813 Establishes a connection by trying each endpoint in a sequence. ```\rtemplate<\r    class __EndpointSequence__>\rProtocol::endpoint\r``[link beast.ref.boost__beast__basic_stream.connect.overload3 connect]``(\r    EndpointSequence const& endpoints);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload3 more...]]``\r\rtemplate<\r    class __EndpointSequence__>\rProtocol::endpoint\r``[link beast.ref.boost__beast__basic_stream.connect.overload4 connect]``(\r    EndpointSequence const& endpoints,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload4 more...]]``\r\rtemplate<\r    class Iterator>\rIterator\r``[link beast.ref.boost__beast__basic_stream.connect.overload5 connect]``(\r    Iterator begin,\r    Iterator end);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload5 more...]]``\r\rtemplate<\r    class Iterator>\rIterator\r``[link beast.ref.boost__beast__basic_stream.connect.overload6 connect]``(\r    Iterator begin,\r    Iterator end,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload6 more...]]``\r\rtemplate<\r    class __EndpointSequence__,\r    class __ConnectCondition__>\rProtocol::endpoint\r``[link beast.ref.boost__beast__basic_stream.connect.overload7 connect]``(\r    EndpointSequence const& endpoints,\r    ConnectCondition connect_condition);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload7 more...]]``\r\rtemplate<\r    class __EndpointSequence__,\r    class __ConnectCondition__>\rProtocol::endpoint\r``[link beast.ref.boost__beast__basic_stream.connect.overload8 connect]``(\r    EndpointSequence const& endpoints,\r    ConnectCondition connect_condition,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload8 more...]]``\r\rtemplate<\r    class Iterator,\r    class __ConnectCondition__>\rIterator\r``[link beast.ref.boost__beast__basic_stream.connect.overload9 connect]``(\r    Iterator begin,\r    Iterator end,\r    ConnectCondition connect_condition);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload9 more...]]``\r\rtemplate<\r    class Iterator,\r    class __ConnectCondition__>\rIterator\r``[link beast.ref.boost__beast__basic_stream.connect.overload10 connect]``(\r    Iterator begin,\r    Iterator end,\r    ConnectCondition connect_condition,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.connect.overload10 more...]]``\r```\r[section:overload1 basic_stream::connect (1 of 10 overloads)]\r
814 Connect the stream to the specified endpoint. \r[heading Synopsis]\r```\rvoid\rconnect(\r    endpoint_type const& ep);\r```\r\r[heading Description]\r
815 This function is used to connect the underlying socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
816 [heading Parameters]\r[table [[Name][Description]]\r  [[`ep`][\r    
817 The remote endpoint to connect to.\r  ]]\r]\r
818 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
819 Thrown on failure.\r  ]]\r]\r
820 [heading See Also]\r
821 [link beast.ref.boost__beast__basic_stream.connect `basic_stream::connect`] 
822 [endsect]\r[section:overload2 basic_stream::connect (2 of 10 overloads)]\r
823 Connect the stream to the specified endpoint. \r[heading Synopsis]\r```\rvoid\rconnect(\r    endpoint_type const& ep,\r    error_code& ec);\r```\r\r[heading Description]\r
824 This function is used to connect the underlying socket to the specified remote endpoint. The function call will block until the connection is successfully made or an error occurs. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
825 [heading Parameters]\r[table [[Name][Description]]\r  [[`ep`][\r    
826 The remote endpoint to connect to.\r  ]]\r  [[`ec`][\r    
827 Set to indicate what error occurred, if any.\r  ]]\r]\r
828 [heading See Also]\r
829 [link beast.ref.boost__beast__basic_stream.connect `basic_stream::connect`] 
830 [endsect]\r[section:overload3 basic_stream::connect (3 of 10 overloads)]\r
831 Establishes a connection by trying each endpoint in a sequence. \r[heading Synopsis]\r```\rtemplate<\r    class __EndpointSequence__>\rProtocol::endpoint\rconnect(\r    EndpointSequence const& endpoints);\r```\r\r[heading Description]\r
832 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
833 The algorithm, known as a ['composed operation], is implemented in terms of calls to the underlying socket's `connect` function.
834 [heading Parameters]\r[table [[Name][Description]]\r  [[`endpoints`][\r    
835 A sequence of endpoints.\r  ]]\r]\r
836 [heading Return Value]
837 The successfully connected endpoint.
838 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
839 Thrown on failure. If the sequence is empty, the associated error code is `net::error::not_found`. Otherwise, contains the error from the last connection attempt. \r  ]]\r]\r
840 [endsect]\r[section:overload4 basic_stream::connect (4 of 10 overloads)]\r
841 Establishes a connection by trying each endpoint in a sequence. \r[heading Synopsis]\r```\rtemplate<\r    class __EndpointSequence__>\rProtocol::endpoint\rconnect(\r    EndpointSequence const& endpoints,\r    error_code& ec);\r```\r\r[heading Description]\r
842 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
843 The algorithm, known as a ['composed operation], is implemented in terms of calls to the underlying socket's `connect` function.
844 [heading Parameters]\r[table [[Name][Description]]\r  [[`endpoints`][\r    
845 A sequence of endpoints.\r  ]]\r  [[`ec`][\r    
846 Set to indicate what error occurred, if any. If the sequence is empty, set to `net::error::not_found`. Otherwise, contains the error from the last connection attempt.\r  ]]\r]\r
847 [heading Return Value]
848 On success, the successfully connected endpoint. Otherwise, a default-constructed endpoint. 
849 [endsect]\r[section:overload5 basic_stream::connect (5 of 10 overloads)]\r
850 Establishes a connection by trying each endpoint in a sequence. \r[heading Synopsis]\r```\rtemplate<\r    class Iterator>\rIterator\rconnect(\r    Iterator begin,\r    Iterator end);\r```\r\r[heading Description]\r
851 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
852 The algorithm, known as a ['composed operation], is implemented in terms of calls to the underlying socket's `connect` function.
853 [heading Parameters]\r[table [[Name][Description]]\r  [[`begin`][\r    
854 An iterator pointing to the start of a sequence of endpoints.\r  ]]\r  [[`end`][\r    
855 An iterator pointing to the end of a sequence of endpoints.\r  ]]\r]\r
856 [heading Return Value]
857 An iterator denoting the successfully connected endpoint.
858 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
859 Thrown on failure. If the sequence is empty, the associated error code is `net::error::not_found`. Otherwise, contains the error from the last connection attempt. \r  ]]\r]\r
860 [endsect]\r[section:overload6 basic_stream::connect (6 of 10 overloads)]\r
861 Establishes a connection by trying each endpoint in a sequence. \r[heading Synopsis]\r```\rtemplate<\r    class Iterator>\rIterator\rconnect(\r    Iterator begin,\r    Iterator end,\r    error_code& ec);\r```\r\r[heading Description]\r
862 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
863 The algorithm, known as a ['composed operation], is implemented in terms of calls to the underlying socket's `connect` function.
864 [heading Parameters]\r[table [[Name][Description]]\r  [[`begin`][\r    
865 An iterator pointing to the start of a sequence of endpoints.\r  ]]\r  [[`end`][\r    
866 An iterator pointing to the end of a sequence of endpoints.\r  ]]\r  [[`ec`][\r    
867 Set to indicate what error occurred, if any. If the sequence is empty, set to boost::asio::error::not\_found. Otherwise, contains the error from the last connection attempt.\r  ]]\r]\r
868 [heading Return Value]
869 On success, an iterator denoting the successfully connected endpoint. Otherwise, the end iterator. 
870 [endsect]\r[section:overload7 basic_stream::connect (7 of 10 overloads)]\r
871 Establishes a connection by trying each endpoint in a sequence. \r[heading Synopsis]\r```\rtemplate<\r    class __EndpointSequence__,\r    class __ConnectCondition__>\rProtocol::endpoint\rconnect(\r    EndpointSequence const& endpoints,\r    ConnectCondition connect_condition);\r```\r\r[heading Description]\r
872 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
873 The algorithm, known as a ['composed operation], is implemented in terms of calls to the underlying socket's `connect` function.
874 [heading Parameters]\r[table [[Name][Description]]\r  [[`endpoints`][\r    
875 A sequence of endpoints.\r  ]]\r  [[`connect_condition`][\r    
876 A function object that is called prior to each connection attempt. The signature of the function object must be: \r```\r  bool connect_condition(
877       error_code const& ec,
878       typename Protocol::endpoint const& next);
879 ```\rThe `ec` parameter contains the result from the most recent connect operation. Before the first connection attempt, `ec` is always set to indicate success. The `next` parameter is the next endpoint to be tried. The function object should return true if the next endpoint should be tried, and false if it should be skipped.\r  ]]\r]\r
880 [heading Return Value]
881 The successfully connected endpoint.
882 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
883 Thrown on failure. If the sequence is empty, the associated error code is `net::error::not_found`. Otherwise, contains the error from the last connection attempt. \r  ]]\r]\r
884 [endsect]\r[section:overload8 basic_stream::connect (8 of 10 overloads)]\r
885 Establishes a connection by trying each endpoint in a sequence. \r[heading Synopsis]\r```\rtemplate<\r    class __EndpointSequence__,\r    class __ConnectCondition__>\rProtocol::endpoint\rconnect(\r    EndpointSequence const& endpoints,\r    ConnectCondition connect_condition,\r    error_code& ec);\r```\r\r[heading Description]\r
886 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
887 The algorithm, known as a ['composed operation], is implemented in terms of calls to the underlying socket's `connect` function.
888 [heading Parameters]\r[table [[Name][Description]]\r  [[`endpoints`][\r    
889 A sequence of endpoints.\r  ]]\r  [[`connect_condition`][\r    
890 A function object that is called prior to each connection attempt. The signature of the function object must be: \r```\r  bool connect_condition(
891       error_code const& ec,
892       typename Protocol::endpoint const& next);
893 ```\rThe `ec` parameter contains the result from the most recent connect operation. Before the first connection attempt, `ec` is always set to indicate success. The `next` parameter is the next endpoint to be tried. The function object should return true if the next endpoint should be tried, and false if it should be skipped.\r  ]]\r  [[`ec`][\r    
894 Set to indicate what error occurred, if any. If the sequence is empty, set to `net::error::not_found`. Otherwise, contains the error from the last connection attempt.\r  ]]\r]\r
895 [heading Return Value]
896 On success, the successfully connected endpoint. Otherwise, a default-constructed endpoint. 
897 [endsect]\r[section:overload9 basic_stream::connect (9 of 10 overloads)]\r
898 Establishes a connection by trying each endpoint in a sequence. \r[heading Synopsis]\r```\rtemplate<\r    class Iterator,\r    class __ConnectCondition__>\rIterator\rconnect(\r    Iterator begin,\r    Iterator end,\r    ConnectCondition connect_condition);\r```\r\r[heading Description]\r
899 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
900 The algorithm, known as a ['composed operation], is implemented in terms of calls to the underlying socket's `connect` function.
901 [heading Parameters]\r[table [[Name][Description]]\r  [[`begin`][\r    
902 An iterator pointing to the start of a sequence of endpoints.\r  ]]\r  [[`end`][\r    
903 An iterator pointing to the end of a sequence of endpoints.\r  ]]\r  [[`connect_condition`][\r    
904 A function object that is called prior to each connection attempt. The signature of the function object must be: \r```\r  bool connect_condition(
905       error_code const& ec,
906       typename Protocol::endpoint const& next);
907 ```\rThe `ec` parameter contains the result from the most recent connect operation. Before the first connection attempt, `ec` is always set to indicate success. The `next` parameter is the next endpoint to be tried. The function object should return true if the next endpoint should be tried, and false if it should be skipped.\r  ]]\r]\r
908 [heading Return Value]
909 An iterator denoting the successfully connected endpoint.
910 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
911 Thrown on failure. If the sequence is empty, the associated `error_code` is `net::error::not_found`. Otherwise, contains the error from the last connection attempt. \r  ]]\r]\r
912 [endsect]\r[section:overload10 basic_stream::connect (10 of 10 overloads)]\r
913 Establishes a connection by trying each endpoint in a sequence. \r[heading Synopsis]\r```\rtemplate<\r    class Iterator,\r    class __ConnectCondition__>\rIterator\rconnect(\r    Iterator begin,\r    Iterator end,\r    ConnectCondition connect_condition,\r    error_code& ec);\r```\r\r[heading Description]\r
914 This function attempts to connect the stream to one of a sequence of endpoints by trying each endpoint until a connection is successfully established. The underlying socket is automatically opened if needed. An automatically opened socket is not returned to the closed state upon failure.
915 The algorithm, known as a ['composed operation], is implemented in terms of calls to the underlying socket's `connect` function.
916 [heading Parameters]\r[table [[Name][Description]]\r  [[`begin`][\r    
917 An iterator pointing to the start of a sequence of endpoints.\r  ]]\r  [[`end`][\r    
918 An iterator pointing to the end of a sequence of endpoints.\r  ]]\r  [[`connect_condition`][\r    
919 A function object that is called prior to each connection attempt. The signature of the function object must be: \r```\r  bool connect_condition(
920       error_code const& ec,
921       typename Protocol::endpoint const& next);
922 ```\rThe `ec` parameter contains the result from the most recent connect operation. Before the first connection attempt, `ec` is always set to indicate success. The `next` parameter is the next endpoint to be tried. The function object should return true if the next endpoint should be tried, and false if it should be skipped.\r  ]]\r  [[`ec`][\r    
923 Set to indicate what error occurred, if any. If the sequence is empty, set to `net::error::not_found`. Otherwise, contains the error from the last connection attempt.\r  ]]\r]\r
924 [heading Return Value]
925 On success, an iterator denoting the successfully connected endpoint. Otherwise, the end iterator. 
926 [endsect]\r[endsect]\r\r[section:endpoint_type basic_stream::endpoint_type]\r[indexterm2 endpoint_type..basic_stream]\r
927 The endpoint type. \r[heading Synopsis]\r\r```\rusing endpoint_type = typename Protocol::endpoint;\r```\r\r[heading Description]\r[endsect]\r[section:executor_type basic_stream::executor_type]\r[indexterm2 executor_type..basic_stream]\r
928 The type of the executor associated with the stream. \r[heading Synopsis]\r\r```\rusing executor_type = beast::executor_type< socket_type >;\r```\r\r[heading Description]\r
929 This will be the type of executor used to invoke completion handlers which do not have an explicit associated executor. [endsect]\r[section:expires_after basic_stream::expires_after]\r[indexterm2 expires_after..basic_stream]\r
930 Set the timeout for the next logical operation. \r[heading Synopsis]\r```\rvoid\rexpires_after(\r    std::chrono::nanoseconds expiry_time);\r```\r\r[heading Description]\r
931 This sets either the read timer, the write timer, or both timers to expire after the specified amount of time has elapsed. If a timer expires when the corresponding asynchronous operation is outstanding, the stream will be closed and any outstanding operations will complete with the error [link beast.ref.boost__beast__error `timeout`]. Otherwise, if the timer expires while no operations are outstanding, and the expiraton is not set again, the next operation will time out immediately.
932 The timer applies collectively to any asynchronous reads or writes initiated after the expiration is set, until the expiration is set again. A call to [link beast.ref.boost__beast__basic_stream.async_connect `basic_stream::async_connect`] counts as both a read and a write.
933 [heading Parameters]\r[table [[Name][Description]]\r  [[`expiry_time`][\r    
934 The amount of time after which a logical operation should be considered timed out. \r  ]]\r]\r
935 [endsect]\r[section:expires_at basic_stream::expires_at]\r[indexterm2 expires_at..basic_stream]\r
936 Set the timeout for the next logical operation. \r[heading Synopsis]\r```\rvoid\rexpires_at(\r    net::steady_timer::time_point expiry_time);\r```\r\r[heading Description]\r
937 This sets either the read timer, the write timer, or both timers to expire at the specified time point. If a timer expires when the corresponding asynchronous operation is outstanding, the stream will be closed and any outstanding operations will complete with the error [link beast.ref.boost__beast__error `timeout`]. Otherwise, if the timer expires while no operations are outstanding, and the expiraton is not set again, the next operation will time out immediately.
938 The timer applies collectively to any asynchronous reads or writes initiated after the expiration is set, until the expiration is set again. A call to [link beast.ref.boost__beast__basic_stream.async_connect `basic_stream::async_connect`] counts as both a read and a write.
939 [heading Parameters]\r[table [[Name][Description]]\r  [[`expiry_time`][\r    
940 The time point after which a logical operation should be considered timed out. \r  ]]\r]\r
941 [endsect]\r[section:expires_never basic_stream::expires_never]\r[indexterm2 expires_never..basic_stream]\r
942 Disable the timeout for the next logical operation. \r[heading Synopsis]\r```\rvoid\rexpires_never();\r```\r\r[heading Description]\r[endsect]\r[section:get_executor basic_stream::get_executor]\r[indexterm2 get_executor..basic_stream]\r
943 Get the executor associated with the object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor();\r```\r\r[heading Description]\r
944 This function may be used to obtain the executor object that the stream uses to dispatch completion handlers without an assocaited executor.
945 [heading Return Value]
946 A copy of the executor that stream will use to dispatch handlers. 
947 [endsect]\r[section:operator_eq_ basic_stream::operator=]\r[indexterm2 operator=..basic_stream]\r
948 Move assignment (deleted). \r[heading Synopsis]\r```\rbasic_stream&\roperator=(\r    basic_stream&&);\r```\r\r[heading Description]\r[endsect]\r[section:protocol_type basic_stream::protocol_type]\r[indexterm2 protocol_type..basic_stream]\r
949 The protocol type. \r[heading Synopsis]\r\r```\rusing protocol_type = Protocol;\r```\r\r[heading Description]\r[endsect]\r[section:rate_policy basic_stream::rate_policy]\r[indexterm2 rate_policy..basic_stream]\r
950 Returns the rate policy associated with the object. ```\rRatePolicy&\r``[link beast.ref.boost__beast__basic_stream.rate_policy.overload1 rate_policy]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.rate_policy.overload1 more...]]``\r\rRatePolicy const &\r``[link beast.ref.boost__beast__basic_stream.rate_policy.overload2 rate_policy]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.rate_policy.overload2 more...]]``\r```\r[section:overload1 basic_stream::rate_policy (1 of 2 overloads)]\r
951 Returns the rate policy associated with the object. \r[heading Synopsis]\r```\rRatePolicy&\rrate_policy();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 basic_stream::rate_policy (2 of 2 overloads)]\r
952 Returns the rate policy associated with the object. \r[heading Synopsis]\r```\rRatePolicy const &\rrate_policy() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:read_some basic_stream::read_some]\r[indexterm2 read_some..basic_stream]\r
953 Read some data. ```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__basic_stream.read_some.overload1 read_some]``(\r    MutableBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.read_some.overload1 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__basic_stream.read_some.overload2 read_some]``(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.read_some.overload2 more...]]``\r```\r[section:overload1 basic_stream::read_some (1 of 2 overloads)]\r
954 Read some data. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers);\r```\r\r[heading Description]\r
955 This function is used to read some data from the stream.
956 The call blocks until one of the following is true:
957
958 * One or more bytes are read from the stream.
959
960
961 * An error occurs.
962
963 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
964 The buffers into which the data will be read. If the size of the buffers is zero bytes, the call always returns immediately with no error.\r  ]]\r]\r
965 [heading Return Value]
966 The number of bytes read.
967 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
968 Thrown on failure.\r  ]]\r]\r
969 [heading Remarks]\r
970 The `read_some` operation may not receive all of the requested number of bytes. Consider using the function `net::read` if you need to ensure that the requested amount of data is read before the blocking operation completes. 
971 [endsect]\r[section:overload2 basic_stream::read_some (2 of 2 overloads)]\r
972 Read some data. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
973 This function is used to read some data from the underlying socket.
974 The call blocks until one of the following is true:
975
976 * One or more bytes are read from the stream.
977
978
979 * An error occurs.
980
981 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
982 The buffers into which the data will be read. If the size of the buffers is zero bytes, the call always returns immediately with no error.\r  ]]\r  [[`ec`][\r    
983 Set to indicate what error occurred, if any.\r  ]]\r]\r
984 [heading Return Value]
985 The number of bytes read.
986 [heading Remarks]\r
987 The `read_some` operation may not receive all of the requested number of bytes. Consider using the function `net::read` if you need to ensure that the requested amount of data is read before the blocking operation completes. 
988 [endsect]\r[endsect]\r\r[section:release_socket basic_stream::release_socket]\r[indexterm2 release_socket..basic_stream]\r
989 Release ownership of the underlying socket. \r[heading Synopsis]\r```\rsocket_type\rrelease_socket();\r```\r\r[heading Description]\r
990 This function causes all outstanding asynchronous connect, read, and write operations to be canceled as if by a call to [link beast.ref.boost__beast__basic_stream.cancel `basic_stream::cancel`]. Ownership of the underlying socket is then transferred to the caller. [endsect]\r[section:socket basic_stream::socket]\r[indexterm2 socket..basic_stream]\r
991 Return a reference to the underlying socket. ```\rsocket_type&\r``[link beast.ref.boost__beast__basic_stream.socket.overload1 socket]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.socket.overload1 more...]]``\r\rsocket_type const &\r``[link beast.ref.boost__beast__basic_stream.socket.overload2 socket]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.socket.overload2 more...]]``\r```\r[section:overload1 basic_stream::socket (1 of 2 overloads)]\r
992 Return a reference to the underlying socket. \r[heading Synopsis]\r```\rsocket_type&\rsocket();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 basic_stream::socket (2 of 2 overloads)]\r
993 Return a reference to the underlying socket. \r[heading Synopsis]\r```\rsocket_type const &\rsocket() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:socket_type basic_stream::socket_type]\r[indexterm2 socket_type..basic_stream]\r
994 The type of the underlying socket. \r[heading Synopsis]\r\r```\rusing socket_type = net::basic_stream_socket< Protocol, Executor >;\r```\r\r[heading Description]\r[endsect]\r[section:write_some basic_stream::write_some]\r[indexterm2 write_some..basic_stream]\r
995 Write some data. ```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__basic_stream.write_some.overload1 write_some]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.write_some.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__basic_stream.write_some.overload2 write_some]``(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream.write_some.overload2 more...]]``\r```\r[section:overload1 basic_stream::write_some (1 of 2 overloads)]\r
996 Write some data. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
997 This function is used to write some data to the stream.
998 The call blocks until one of the following is true:
999
1000 * One or more bytes are written to the stream.
1001
1002
1003 * An error occurs.
1004
1005 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1006 The buffers from which the data will be written. If the size of the buffers is zero bytes, the call always returns immediately with no error.\r  ]]\r]\r
1007 [heading Return Value]
1008 The number of bytes written.
1009 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
1010 Thrown on failure.\r  ]]\r]\r
1011 [heading Remarks]\r
1012 The `write_some` operation may not transmit all of the requested number of bytes. Consider using the function `net::write` if you need to ensure that the requested amount of data is written before the blocking operation completes. 
1013 [endsect]\r[section:overload2 basic_stream::write_some (2 of 2 overloads)]\r
1014 Write some data. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
1015 This function is used to write some data to the stream.
1016 The call blocks until one of the following is true:
1017
1018 * One or more bytes are written to the stream.
1019
1020
1021 * An error occurs.
1022
1023 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1024 The buffers from which the data will be written. If the size of the buffers is zero bytes, the call always returns immediately with no error.\r  ]]\r  [[`ec`][\r    
1025 Set to indicate what error occurred, if any.\r  ]]\r]\r
1026 [heading Return Value]
1027 The number of bytes written.
1028 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
1029 Thrown on failure.\r  ]]\r]\r
1030 [heading Remarks]\r
1031 The `write_some` operation may not transmit all of the requested number of bytes. Consider using the function `net::write` if you need to ensure that the requested amount of data is written before the blocking operation completes. 
1032 [endsect]\r[endsect]\r\r[section:basic_stream_dtor_ basic_stream::~basic_stream]\r[indexterm2 ~basic_stream..basic_stream]\r
1033 Destructor. \r[heading Synopsis]\r```\r~basic_stream();\r```\r\r[heading Description]\r
1034 This function destroys the stream, cancelling any outstanding asynchronous operations associated with the socket as if by calling cancel. [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__basic_stream__impl_type basic_stream::impl_type]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/basic_stream.hpp]\r\r\r\r```\rstruct impl_type :\r    public boost::enable_shared_from_this< impl_type >,\r    public boost::empty_value< RatePolicy >\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.close [*close]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.ex [*ex]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.impl_type [*impl_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.on_timer [*on_timer]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.operator_eq_ [*operator=]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.policy [*policy]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.reset [*reset]]]\r    [\r      \r    ]\r  ]\r]\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.read [*read]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.socket [*socket]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.timer [*timer]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.waiting [*waiting]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream__impl_type.write [*write]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r[section:close basic_stream::impl_type::close]\r[indexterm2 close..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rvoid\rclose();\r```\r\r[heading Description]\r[endsect]\r[section:ex basic_stream::impl_type::ex]\r[indexterm2 ex..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rbeast::executor_type< socket_type >\rex();\r```\r\r[heading Description]\r[endsect]\r[section:impl_type basic_stream::impl_type::impl_type]\r[indexterm2 impl_type..basic_stream::impl_type]\r```\r``[link beast.ref.boost__beast__basic_stream__impl_type.impl_type.overload1 impl_type]``(\r    impl_type&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream__impl_type.impl_type.overload1 more...]]``\r\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__basic_stream__impl_type.impl_type.overload2 impl_type]``(\r    std::false_type,\r    Args&& ...);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream__impl_type.impl_type.overload2 more...]]``\r\rtemplate<\r    class RatePolicy_,\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__basic_stream__impl_type.impl_type.overload3 impl_type]``(\r    std::true_type,\r    RatePolicy_&& policy,\r    Args&& ...);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream__impl_type.impl_type.overload3 more...]]``\r```\r[section:overload1 basic_stream::impl_type::impl_type (1 of 3 overloads)]\r\r[heading Synopsis]\r```\rimpl_type(\r    impl_type&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 basic_stream::impl_type::impl_type (2 of 3 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rimpl_type(\r    std::false_type,\r    Args&& ...);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 basic_stream::impl_type::impl_type (3 of 3 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class RatePolicy_,\r    class... Args>\rimpl_type(\r    std::true_type,\r    RatePolicy_&& policy,\r    Args&& ...);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:on_timer basic_stream::impl_type::on_timer]\r[indexterm2 on_timer..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rtemplate<\r    class __Executor2__>\rvoid\ron_timer(\r    Executor2 const& ex2);\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ basic_stream::impl_type::operator=]\r[indexterm2 operator=..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rimpl_type&\roperator=(\r    impl_type&&);\r```\r\r[heading Description]\r[endsect]\r[section:policy basic_stream::impl_type::policy]\r[indexterm2 policy..basic_stream::impl_type]\r```\rRatePolicy&\r``[link beast.ref.boost__beast__basic_stream__impl_type.policy.overload1 policy]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream__impl_type.policy.overload1 more...]]``\r\rRatePolicy const &\r``[link beast.ref.boost__beast__basic_stream__impl_type.policy.overload2 policy]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__basic_stream__impl_type.policy.overload2 more...]]``\r```\r[section:overload1 basic_stream::impl_type::policy (1 of 2 overloads)]\r\r[heading Synopsis]\r```\rRatePolicy&\rpolicy();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 basic_stream::impl_type::policy (2 of 2 overloads)]\r\r[heading Synopsis]\r```\rRatePolicy const &\rpolicy() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:read basic_stream::impl_type::read]\r[indexterm2 read..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rop_state read;\r```\r\r[heading Description]\r[endsect]\r[section:reset basic_stream::impl_type::reset]\r[indexterm2 reset..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rvoid\rreset();\r```\r\r[heading Description]\r[endsect]\r[section:socket basic_stream::impl_type::socket]\r[indexterm2 socket..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rnet::basic_stream_socket< Protocol, Executor > socket;\r```\r\r[heading Description]\r[endsect]\r[section:timer basic_stream::impl_type::timer]\r[indexterm2 timer..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rnet::steady_timer timer;\r```\r\r[heading Description]\r[endsect]\r[section:waiting basic_stream::impl_type::waiting]\r[indexterm2 waiting..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rint waiting = 0;\r```\r\r[heading Description]\r[endsect]\r[section:write basic_stream::impl_type::write]\r[indexterm2 write..basic_stream::impl_type]\r\r[heading Synopsis]\r```\rop_state write;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__basic_stream__rebind_executor basic_stream::rebind_executor]\r
1035 Rebinds the stream type to another executor. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/basic_stream.hpp]\r\r\r\r```\rtemplate<\r    class __Executor1__>\rstruct rebind_executor\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream__rebind_executor.other [*other]]]\r    [\r      The stream type when rebound to the specified executor. \r    ]\r  ]\r]\r\r[heading Description]\r[section:other basic_stream::rebind_executor::other]\r[indexterm2 other..basic_stream::rebind_executor]\r
1036 The stream type when rebound to the specified executor. \r[heading Synopsis]\r\r```\rusing other = basic_stream< Protocol, Executor1, RatePolicy >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream__rebind_executor [*rebind_executor]]]\r    [\r      Rebinds the stream type to another executor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.endpoint_type [*endpoint_type]]]\r    [\r      The endpoint type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.executor_type [*executor_type]]]\r    [\r      The type of the executor associated with the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.protocol_type [*protocol_type]]]\r    [\r      The protocol type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.socket_type [*socket_type]]]\r    [\r      The type of the underlying socket. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_connect [*async_connect]]]\r    [\r      Connect the stream to the specified endpoint asynchronously. \r\r      Establishes a connection by trying each endpoint in a sequence asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_read_some [*async_read_some]]]\r    [\r      Read some data asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_write_some [*async_write_some]]]\r    [\r      Write some data asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.basic_stream [*basic_stream]]]\r    [\r      Constructor. \r\r      Move constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.cancel [*cancel]]]\r    [\r      Cancel all asynchronous operations associated with the socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.close [*close]]]\r    [\r      Close the timed stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.connect [*connect]]]\r    [\r      Connect the stream to the specified endpoint. \r\r      Establishes a connection by trying each endpoint in a sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_after [*expires_after]]]\r    [\r      Set the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_at [*expires_at]]]\r    [\r      Set the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_never [*expires_never]]]\r    [\r      Disable the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.get_executor [*get_executor]]]\r    [\r      Get the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.operator_eq_ [*operator=]]]\r    [\r      Move assignment (deleted). \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.rate_policy [*rate_policy]]]\r    [\r      Returns the rate policy associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.read_some [*read_some]]]\r    [\r      Read some data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.release_socket [*release_socket]]]\r    [\r      Release ownership of the underlying socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.socket [*socket]]]\r    [\r      Return a reference to the underlying socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.write_some [*write_some]]]\r    [\r      Write some data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.basic_stream_dtor_ [*~basic_stream]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r
1037 This stream wraps a `net::basic_stream_socket` to provide the following features:
1038
1039 * An ['Executor] may be associated with the stream, which will be used to invoke any completion handlers which do not already have an associated executor. This achieves support for [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html [P1322R0] Networking TS enhancement to enable custom I/O executors].
1040
1041
1042 * Timeouts may be specified for each logical asynchronous operation performing any reading, writing, or connecting.
1043
1044
1045 * A ['RatePolicy] may be associated with the stream, to implement rate limiting through the policy's interface.
1046
1047 Although the stream supports multiple concurrent outstanding asynchronous operations, the stream object is not thread-safe. The caller is responsible for ensuring that the stream is accessed from only one thread at a time. This includes the times when the stream, and its underlying socket, are accessed by the networking implementation. To meet this thread safety requirement, all asynchronous operations must be performed by the stream within the same implicit strand (only one thread `net::io_context::run`) or within the same explicit strand, such as an instance of `net::strand`.
1048 Completion handlers with explicit associated executors (such as those arising from use of `net::bind_executor`) will be invoked by the stream using the associated executor. Otherwise, the completion handler will be invoked by the executor associated with the stream upon construction. The type of executor used with this stream must meet the following requirements:
1049
1050 * Function objects submitted to the executor shall never run concurrently with each other.
1051
1052 The executor type `net::strand` meets these requirements. Use of a strand as the executor in the stream class template offers an additional notational convenience: the strand does not need to be specified in each individual initiating function call.
1053 Unlike other stream wrappers, the underlying socket is accessed through the [link beast.ref.boost__beast__basic_stream.socket `basic_stream::socket`] member function instead of `next_layer`. This causes the [link beast.ref.boost__beast__basic_stream `basic_stream`] to be returned in calls to [link beast.ref.boost__beast__get_lowest_layer `get_lowest_layer`].
1054 [heading Usage]
1055
1056 To use this stream declare an instance of the class. Then, before each logical operation for which a timeout is desired, call [link beast.ref.boost__beast__basic_stream.expires_after `basic_stream::expires_after`] with a duration, or call [link beast.ref.boost__beast__basic_stream.expires_at `basic_stream::expires_at`] with a time point. Alternatively, call [link beast.ref.boost__beast__basic_stream.expires_never `basic_stream::expires_never`] to disable the timeout for subsequent logical operations. A logical operation is any series of one or more direct or indirect calls to the timeout stream's asynchronous read, asynchronous write, or asynchronous connect functions.
1057 When a timeout is set and a mixed operation is performed (one that includes both reads and writes, for example) the timeout applies to all of the intermediate asynchronous operations used in the enclosing operation. This allows timeouts to be applied to stream algorithms which were not written specifically to allow for timeouts, when those algorithms are passed a timeout stream with a timeout set.
1058 When a timeout occurs the socket will be closed, canceling any pending I/O operations. The completion handlers for these canceled operations will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
1059 [heading Examples]
1060
1061 This function reads an HTTP request with a timeout, then sends the HTTP response with a different timeout.
1062 \r```\r  void process_http_1 (tcp_stream& stream, net::yield_context yield)
1063   {
1064       flat_buffer buffer;
1065       http::request<http::empty_body> req;
1066
1067       // Read the request, with a 15 second timeout
1068       stream.expires_after(std::chrono::seconds(15));
1069       http::async_read(stream, buffer, req, yield);
1070
1071       // Calculate the response
1072       http::response<http::string_body> res = make_response(req);
1073
1074       // Send the response, with a 30 second timeout.
1075       stream.expires_after (std::chrono::seconds(30));
1076       http::async_write (stream, res, yield);
1077   }
1078 ```\r
1079 The example above could be expressed using a single timeout with a simple modification. The function that follows first reads an HTTP request then sends the HTTP response, with a single timeout that applies to the entire combined operation of reading and writing:
1080 \r```\r  void process_http_2 (tcp_stream& stream, net::yield_context yield)
1081   {
1082       flat_buffer buffer;
1083       http::request<http::empty_body> req;
1084
1085       // Require that the read and write combined take no longer than 30 seconds
1086       stream.expires_after(std::chrono::seconds(30));
1087
1088       http::async_read(stream, buffer, req, yield);
1089
1090       http::response<http::string_body> res = make_response(req);
1091       http::async_write (stream, res, yield);
1092   }
1093 ```\r
1094 Some stream algorithms, such as `ssl::stream::async_handshake` perform both reads and writes. A timeout set before calling the initiating function of such composite stream algorithms will apply to the entire composite operation. For example, a timeout may be set on performing the SSL handshake thusly:
1095 \r```\r  void do_ssl_handshake (net::ssl::stream<tcp_stream>& stream, net::yield_context yield)
1096   {
1097       // Require that the SSL handshake take no longer than 10 seconds
1098       stream.expires_after(std::chrono::seconds(10));
1099
1100       stream.async_handshake(net::ssl::stream_base::client, yield);
1101   }
1102 ```\r
1103 [heading Blocking I/O]
1104
1105 Synchronous functions behave identically as that of the wrapped `net::basic_stream_socket`. Timeouts are not available when performing blocking calls.
1106 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Protocol`][\r    
1107 A type meeting the requirements of ['Protocol] representing the protocol the protocol to use for the basic stream socket. A common choice is `net::ip::tcp`.\r  ]]\r  [[`Executor`][\r    
1108 A type meeting the requirements of ['Executor] to be used for submitting all completion handlers which do not already have an associated executor. If this type is omitted, the default of `net::executor` will be used.\r  ]]\r]\r
1109 [heading Thread Safety]
1110 ['Distinct objects]: Safe.\r\r['Shared objects]: Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
1111 [heading See Also]\r
1112
1113
1114 * [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html [P1322R0] Networking TS enhancement to enable custom I/O executors]. 
1115
1116 \r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__basic_stream__timeout_handler basic_stream::timeout_handler]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/basic_stream.hpp]\r\r\r\r```\rtemplate<\r    class __Executor2__>\rstruct timeout_handler\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__basic_string_view basic_string_view]\r[indexterm1 basic_string_view]\r
1117 The type of `basic_string_view` used by the library. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/string_type.hpp]\r\r\r\r```\rtemplate<\r    class CharT,\r    class Traits>\rusing basic_string_view = boost::basic_string_view< CharT, Traits >;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__beast_close_socket beast_close_socket]\r[indexterm1 beast_close_socket]\r
1118 Default socket close function. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class __Protocol__,\r    class __Executor__>\rvoid\rbeast_close_socket(\r    net::basic_socket< Protocol, Executor >& sock);\r\r```\r\r[heading Description]\r
1119 This function is not meant to be called directly. Instead, it is called automatically when using [link beast.ref.boost__beast__close_socket `close_socket`]. To enable closure of user-defined types or classes derived from a particular user-defined type, this function should be overloaded in the corresponding namespace for the type in question.
1120 [heading See Also]\r
1121 [link beast.ref.boost__beast__close_socket `close_socket`] 
1122 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__bind_front_handler bind_front_handler]\r[indexterm1 bind_front_handler]\r
1123 Bind parameters to a completion handler, creating a new handler. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/bind_handler.hpp]\r\r\r\r```\rtemplate<\r    class __Handler__,\r    class... Args>\r``['implementation-defined]``\rbind_front_handler(\r    Handler&& handler,\r    Args&&... args);\r\r```\r\r[heading Description]\r
1124 This function creates a new handler which, when invoked, calls the original handler with the list of bound arguments. Any parameters passed in the invocation will be forwarded in the parameter list after the bound arguments.
1125 The passed handler and arguments are forwarded into the returned handler, whose associated allocator and associated executor will will be the same as those of the original handler.
1126 [heading Example]
1127
1128 This function posts the invocation of the specified completion handler with bound arguments:
1129 \r```\r  template <class AsyncReadStream, class ReadHandler>
1130   void
1131   signal_eof (AsyncReadStream& stream, ReadHandler&& handler)
1132   {
1133       net::post(
1134           stream.get_executor(),
1135           bind_front_handler (std::forward<ReadHandler> (handler),
1136               net::error::eof, 0));
1137   }
1138 ```\r
1139 [heading Parameters]\r[table [[Name][Description]]\r  [[`handler`][\r    
1140 The handler to wrap. The implementation takes ownership of the handler by performing a decay-copy.\r  ]]\r  [[`args`][\r    
1141 A list of arguments to bind to the handler. The arguments are forwarded into the returned object. \r  ]]\r]\r
1142 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__bind_handler bind_handler]\r[indexterm1 bind_handler]\r
1143 Bind parameters to a completion handler, creating a new handler. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/bind_handler.hpp]\r\r\r\r```\rtemplate<\r    class __Handler__,\r    class... Args>\r``['implementation-defined]``\rbind_handler(\r    Handler&& handler,\r    Args&&... args);\r\r```\r\r[heading Description]\r
1144 This function creates a new handler which, when invoked, calls the original handler with the list of bound arguments. Any parameters passed in the invocation will be substituted for placeholders present in the list of bound arguments. Parameters which are not matched to placeholders are silently discarded.
1145 The passed handler and arguments are forwarded into the returned handler, whose associated allocator and associated executor will will be the same as those of the original handler.
1146 [heading Example]
1147
1148 This function posts the invocation of the specified completion handler with bound arguments:
1149 \r```\r  template <class AsyncReadStream, class ReadHandler>
1150   void
1151   signal_aborted (AsyncReadStream& stream, ReadHandler&& handler)
1152   {
1153       net::post(
1154           stream.get_executor(),
1155           bind_handler (std::forward <ReadHandler> (handler),
1156               net::error::operation_aborted, 0));
1157   }
1158 ```\r
1159 [heading Parameters]\r[table [[Name][Description]]\r  [[`handler`][\r    
1160 The handler to wrap. The implementation takes ownership of the handler by performing a decay-copy.\r  ]]\r  [[`args`][\r    
1161 A list of arguments to bind to the handler. The arguments are forwarded into the returned object. These arguments may include placeholders, which will operate in a fashion identical to a call to `std::bind`. \r  ]]\r]\r
1162 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffer_bytes buffer_bytes]\r[indexterm1 buffer_bytes]\r
1163 Return the total number of bytes in a buffer or buffer sequence. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffer_traits.hpp]\r\r\r\r```\rtemplate<\r    class __BufferSequence__>\rstd::size_t\rbuffer_bytes(\r    BufferSequence const& buffers);\r\r```\r\r[heading Description]\r
1164 This function returns the total number of bytes in a buffer, buffer sequence, or object convertible to a buffer. Specifically it may be passed:
1165
1166 * A ['ConstBufferSequence] or ['MutableBufferSequence]
1167
1168
1169 * A `net::const_buffer` or `net::mutable_buffer`
1170
1171
1172 * An object convertible to `net::const_buffer`
1173
1174 This function is designed as an easier-to-use replacement for `net::buffer_size`. It recognizes customization points found through argument-dependent lookup. The call `beast::buffer_bytes(b)` is equivalent to performing: \r```\r  using namespace net;
1175   buffer_bytes(b);
1176 ```\rIn addition this handles types which are convertible to `net::const_buffer`; these are not handled by `net::buffer_size`.
1177 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1178 The buffer or buffer sequence to calculate the size of.\r  ]]\r]\r
1179 [heading Return Value]
1180 The total number of bytes in the buffer or sequence. 
1181 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffered_read_stream buffered_read_stream]\r
1182 A ['Stream] with attached ['DynamicBuffer] to buffer reads. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffered_read_stream.hpp]\r\r\r\r```\rtemplate<\r    class __Stream__,\r    class __DynamicBuffer__>\rclass buffered_read_stream\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.buffer_type [*buffer_type]]]\r    [\r      The type of the internal buffer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.executor_type [*executor_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.next_layer_type [*next_layer_type]]]\r    [\r      The type of the next layer. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.async_read_some [*async_read_some]]]\r    [\r      Start an asynchronous read. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.async_write_some [*async_write_some]]]\r    [\r      Start an asynchronous write. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.buffer [*buffer]]]\r    [\r      Access the internal buffer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.buffered_read_stream [*buffered_read_stream]]]\r    [\r      Move constructor. \r\r      Construct the wrapping stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.capacity [*capacity]]]\r    [\r      Set the maximum buffer size. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.get_executor [*get_executor]]]\r    [\r      Get the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.next_layer [*next_layer]]]\r    [\r      Get a reference to the next layer. \r\r      Get a const reference to the next layer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.operator_eq_ [*operator=]]]\r    [\r      Move assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.read_some [*read_some]]]\r    [\r      Read some data from the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffered_read_stream.write_some [*write_some]]]\r    [\r      Write some data to the stream. \r    ]\r  ]\r]\r\r[heading Description]\r
1183 This wraps a ['Stream] implementation so that calls to write are passed through to the underlying stream, while calls to read will first consume the input sequence stored in a ['DynamicBuffer] which is part of the object.
1184 The use-case for this class is different than that of the `net::buffered_read_stream`. It is designed to facilitate the use of `net::read_until`, and to allow buffers acquired during detection of handshakes to be made transparently available to callers. A hypothetical implementation of the buffered version of `net::ssl::stream::async_handshake` could make use of this wrapper.
1185 Uses:
1186
1187 * Transparently leave untouched input acquired in calls to `net::read_until` behind for subsequent callers.
1188
1189
1190 * "Preload" a stream with handshake input data acquired from other sources.
1191
1192 Example: \r```\r  // Process the next HTTP header on the stream,
1193   // leaving excess bytes behind for the next call.
1194   //
1195   template<class Stream, class DynamicBuffer>
1196   void process_http_message(
1197       buffered_read_stream<Stream, DynamicBuffer>& stream)
1198   {
1199       // Read up to and including the end of the HTTP
1200       // header, leaving the sequence in the stream's
1201       // buffer. read_until may read past the end of the
1202       // headers; the return value will include only the
1203       // part up to the end of the delimiter.
1204       //
1205       std::size_t bytes_transferred =
1206           net::read_until(
1207               stream.next_layer(), stream.buffer(), "\r\n\r\n");
1208
1209       // Use buffers_prefix() to limit the input
1210       // sequence to only the data up to and including
1211       // the trailing "\r\n\r\n".
1212       //
1213       auto header_buffers = buffers_prefix(
1214           bytes_transferred, stream.buffer().data());
1215
1216       ...
1217
1218       // Discard the portion of the input corresponding
1219       // to the HTTP headers.
1220       //
1221       stream.buffer().consume(bytes_transferred);
1222
1223       // Everything we read from the stream
1224       // is part of the content-body.
1225   }
1226 ```\r
1227 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Stream`][\r    
1228 The type of stream to wrap.\r  ]]\r  [[`DynamicBuffer`][\r    
1229 The type of stream buffer to use. \r  ]]\r]\r
1230 [section:async_read_some buffered_read_stream::async_read_some]\r[indexterm2 async_read_some..buffered_read_stream]\r
1231 Start an asynchronous read. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__,\r    class __ReadHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_read_some(\r    MutableBufferSequence const& buffers,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
1232 This function is used to asynchronously read data from the stream. The function call always returns immediately.
1233 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1234 One or more buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
1235 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
1236       error_code const& error,      // result of operation
1237       std::size_t bytes_transferred // number of bytes transferred
1238   );
1239 ```\r\r  ]]\r]\r
1240 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. [endsect]\r[section:async_write_some buffered_read_stream::async_write_some]\r[indexterm2 async_write_some..buffered_read_stream]\r
1241 Start an asynchronous write. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class __WriteHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_write_some(\r    ConstBufferSequence const& buffers,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
1242 This function is used to asynchronously write data from the stream. The function call always returns immediately.
1243 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1244 One or more data buffers to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
1245 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
1246       error_code const& error,      // result of operation
1247       std::size_t bytes_transferred // number of bytes transferred
1248   );
1249 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
1250 [endsect]\r[section:buffer buffered_read_stream::buffer]\r[indexterm2 buffer..buffered_read_stream]\r
1251 Access the internal buffer. ```\rDynamicBuffer&\r``[link beast.ref.boost__beast__buffered_read_stream.buffer.overload1 buffer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.buffer.overload1 more...]]``\r\rDynamicBuffer const &\r``[link beast.ref.boost__beast__buffered_read_stream.buffer.overload2 buffer]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.buffer.overload2 more...]]``\r```\r[section:overload1 buffered_read_stream::buffer (1 of 2 overloads)]\r
1252 Access the internal buffer. \r[heading Synopsis]\r```\rDynamicBuffer&\rbuffer();\r```\r\r[heading Description]\r
1253 The internal buffer is returned. It is possible for the caller to break invariants with this function. For example, by causing the internal buffer size to increase beyond the caller defined maximum. [endsect]\r[section:overload2 buffered_read_stream::buffer (2 of 2 overloads)]\r
1254 Access the internal buffer. \r[heading Synopsis]\r```\rDynamicBuffer const &\rbuffer() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:buffer_type buffered_read_stream::buffer_type]\r[indexterm2 buffer_type..buffered_read_stream]\r
1255 The type of the internal buffer. \r[heading Synopsis]\r\r```\rusing buffer_type = DynamicBuffer;\r```\r\r[heading Description]\r[endsect]\r[section:buffered_read_stream buffered_read_stream::buffered_read_stream]\r[indexterm2 buffered_read_stream..buffered_read_stream]\r
1256 Move constructor. ```\r``[link beast.ref.boost__beast__buffered_read_stream.buffered_read_stream.overload1 buffered_read_stream]``(\r    buffered_read_stream&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.buffered_read_stream.overload1 more...]]``\r\r```\r
1257 Construct the wrapping stream. ```\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__buffered_read_stream.buffered_read_stream.overload2 buffered_read_stream]``(\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.buffered_read_stream.overload2 more...]]``\r```\r[section:overload1 buffered_read_stream::buffered_read_stream (1 of 2 overloads)]\r
1258 Move constructor. \r[heading Synopsis]\r```\rbuffered_read_stream(\r    buffered_read_stream&&);\r```\r\r[heading Description]\r
1259 [heading Remarks]\r
1260 The behavior of move assignment on or from streams with active or pending operations is undefined. 
1261 [endsect]\r[section:overload2 buffered_read_stream::buffered_read_stream (2 of 2 overloads)]\r
1262 Construct the wrapping stream. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rbuffered_read_stream(\r    Args&&... args);\r```\r\r[heading Description]\r
1263 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
1264 Parameters forwarded to the `Stream` constructor. \r  ]]\r]\r
1265 [endsect]\r[endsect]\r\r[section:capacity buffered_read_stream::capacity]\r[indexterm2 capacity..buffered_read_stream]\r
1266 Set the maximum buffer size. \r[heading Synopsis]\r```\rvoid\rcapacity(\r    std::size_t size);\r```\r\r[heading Description]\r
1267 This changes the maximum size of the internal buffer used to hold read data. No bytes are discarded by this call. If the buffer size is set to zero, no more data will be buffered.
1268 Thread safety: The caller is responsible for making sure the call is made from the same implicit or explicit strand.
1269 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
1270 The number of bytes in the read buffer.\r  ]]\r]\r
1271 [heading Remarks]\r
1272 This is a soft limit. If the new maximum size is smaller than the amount of data in the buffer, no bytes are discarded. 
1273 [endsect]\r[section:executor_type buffered_read_stream::executor_type]\r[indexterm2 executor_type..buffered_read_stream]\r\r[heading Synopsis]\r\r```\rusing executor_type = beast::executor_type< next_layer_type >;\r```\r\r[heading Description]\r[endsect]\r[section:get_executor buffered_read_stream::get_executor]\r[indexterm2 get_executor..buffered_read_stream]\r
1274 Get the executor associated with the object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor();\r```\r\r[heading Description]\r
1275 This function may be used to obtain the executor object that the stream uses to dispatch handlers for asynchronous operations.
1276 [heading Return Value]
1277 A copy of the executor that stream will use to dispatch handlers. 
1278 [endsect]\r[section:next_layer buffered_read_stream::next_layer]\r[indexterm2 next_layer..buffered_read_stream]\r
1279 Get a reference to the next layer. ```\rnext_layer_type&\r``[link beast.ref.boost__beast__buffered_read_stream.next_layer.overload1 next_layer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.next_layer.overload1 more...]]``\r\r```\r
1280 Get a const reference to the next layer. ```\rnext_layer_type const &\r``[link beast.ref.boost__beast__buffered_read_stream.next_layer.overload2 next_layer]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.next_layer.overload2 more...]]``\r```\r[section:overload1 buffered_read_stream::next_layer (1 of 2 overloads)]\r
1281 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type&\rnext_layer();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 buffered_read_stream::next_layer (2 of 2 overloads)]\r
1282 Get a const reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type const &\rnext_layer() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:next_layer_type buffered_read_stream::next_layer_type]\r[indexterm2 next_layer_type..buffered_read_stream]\r
1283 The type of the next layer. \r[heading Synopsis]\r\r```\rusing next_layer_type = typename std::remove_reference< Stream >::type;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ buffered_read_stream::operator=]\r[indexterm2 operator=..buffered_read_stream]\r
1284 Move assignment. \r[heading Synopsis]\r```\rbuffered_read_stream&\roperator=(\r    buffered_read_stream&&);\r```\r\r[heading Description]\r
1285 [heading Remarks]\r
1286 The behavior of move assignment on or from streams with active or pending operations is undefined. 
1287 [endsect]\r[section:read_some buffered_read_stream::read_some]\r[indexterm2 read_some..buffered_read_stream]\r
1288 Read some data from the stream. ```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__buffered_read_stream.read_some.overload1 read_some]``(\r    MutableBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.read_some.overload1 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__buffered_read_stream.read_some.overload2 read_some]``(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.read_some.overload2 more...]]``\r```\r[section:overload1 buffered_read_stream::read_some (1 of 2 overloads)]\r
1289 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers);\r```\r\r[heading Description]\r
1290 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
1291 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1292 One or more buffers into which the data will be read.\r  ]]\r]\r
1293 [heading Return Value]
1294 The number of bytes read.
1295 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
1296 Thrown on failure. \r  ]]\r]\r
1297 [endsect]\r[section:overload2 buffered_read_stream::read_some (2 of 2 overloads)]\r
1298 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
1299 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
1300 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1301 One or more buffers into which the data will be read.\r  ]]\r  [[`ec`][\r    
1302 Set to the error, if any occurred.\r  ]]\r]\r
1303 [heading Return Value]
1304 The number of bytes read, or 0 on error. 
1305 [endsect]\r[endsect]\r\r[section:write_some buffered_read_stream::write_some]\r[indexterm2 write_some..buffered_read_stream]\r
1306 Write some data to the stream. ```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__buffered_read_stream.write_some.overload1 write_some]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.write_some.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__buffered_read_stream.write_some.overload2 write_some]``(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffered_read_stream.write_some.overload2 more...]]``\r```\r[section:overload1 buffered_read_stream::write_some (1 of 2 overloads)]\r
1307 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
1308 This function is used to write data to the stream. The function call will block until one or more bytes of the data has been written successfully, or until an error occurs.
1309 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1310 One or more data buffers to be written to the stream.\r  ]]\r]\r
1311 [heading Return Value]
1312 The number of bytes written.
1313 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
1314 Thrown on failure. \r  ]]\r]\r
1315 [endsect]\r[section:overload2 buffered_read_stream::write_some (2 of 2 overloads)]\r
1316 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
1317 This function is used to write data to the stream. The function call will block until one or more bytes of the data has been written successfully, or until an error occurs.
1318 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1319 One or more data buffers to be written to the stream.\r  ]]\r  [[`ec`][\r    
1320 Set to the error, if any occurred.\r  ]]\r]\r
1321 [heading Return Value]
1322 The number of bytes written. 
1323 [endsect]\r[endsect]\r\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__buffers buffers]\r[indexterm1 buffers]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/ostream.hpp]\r\r\r\r```\rtemplate<\r    class T>\rvoid\rbuffers(\r    T const&);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffers_adaptor buffers_adaptor]\r
1324 Adapts a ['MutableBufferSequence] into a ['DynamicBuffer]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_adaptor.hpp]\r\r\r\r```\rtemplate<\r    class __MutableBufferSequence__>\rclass buffers_adaptor\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.value_type [*value_type]]]\r    [\r      The type of the underlying mutable buffer sequence. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.buffers_adaptor [*buffers_adaptor]]]\r    [\r      Construct a buffers adaptor. \r\r      Constructor. \r\r      Copy Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.capacity [*capacity]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.max_size [*max_size]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can ever be held. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.operator_eq_ [*operator=]]]\r    [\r      Copy Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_adaptor.value [*value]]]\r    [\r      Returns the original mutable buffer sequence. \r    ]\r  ]\r]\r\r[heading Description]\r
1325 This class wraps a ['MutableBufferSequence] to meet the requirements of ['DynamicBuffer]. Upon construction the input and output sequences are empty. A copy of the mutable buffer sequence object is stored; however, ownership of the underlying memory is not transferred. The caller is responsible for making sure that referenced memory remains valid for the duration of any operations.
1326 The size of the mutable buffer sequence determines the maximum number of bytes which may be prepared and committed.
1327 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`MutableBufferSequence`][\r    
1328 The type of mutable buffer sequence to adapt. \r  ]]\r]\r
1329 [section:buffers_adaptor buffers_adaptor::buffers_adaptor]\r[indexterm2 buffers_adaptor..buffers_adaptor]\r
1330 Construct a buffers adaptor. ```\rexplicit\r``[link beast.ref.boost__beast__buffers_adaptor.buffers_adaptor.overload1 buffers_adaptor]``(\r    MutableBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_adaptor.buffers_adaptor.overload1 more...]]``\r\r```\r
1331 Constructor. ```\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__buffers_adaptor.buffers_adaptor.overload2 buffers_adaptor]``(\r    boost::in_place_init_t,\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_adaptor.buffers_adaptor.overload2 more...]]``\r\r```\r
1332 Copy Constructor. ```\r``[link beast.ref.boost__beast__buffers_adaptor.buffers_adaptor.overload3 buffers_adaptor]``(\r    buffers_adaptor const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_adaptor.buffers_adaptor.overload3 more...]]``\r```\r[section:overload1 buffers_adaptor::buffers_adaptor (1 of 3 overloads)]\r
1333 Construct a buffers adaptor. \r[heading Synopsis]\r```\rbuffers_adaptor(\r    MutableBufferSequence const& buffers);\r```\r\r[heading Description]\r
1334 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1335 The mutable buffer sequence to wrap. A copy of the object will be made, but ownership of the memory is not transferred. \r  ]]\r]\r
1336 [endsect]\r[section:overload2 buffers_adaptor::buffers_adaptor (2 of 3 overloads)]\r
1337 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rbuffers_adaptor(\r    boost::in_place_init_t,\r    Args&&... args);\r```\r\r[heading Description]\r
1338 This constructs the buffer adaptor in-place from a list of arguments.
1339 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
1340 Arguments forwarded to the buffers constructor. \r  ]]\r]\r
1341 [endsect]\r[section:overload3 buffers_adaptor::buffers_adaptor (3 of 3 overloads)]\r
1342 Copy Constructor. \r[heading Synopsis]\r```\rbuffers_adaptor(\r    buffers_adaptor const& other);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:capacity buffers_adaptor::capacity]\r[indexterm2 capacity..buffers_adaptor]\r
1343 Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r[heading Synopsis]\r```\rstd::size_t\rcapacity() const;\r```\r\r[heading Description]\r[endsect]\r[section:cdata buffers_adaptor::cdata]\r[indexterm2 cdata..buffers_adaptor]\r
1344 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rcdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:commit buffers_adaptor::commit]\r[indexterm2 commit..buffers_adaptor]\r
1345 Append writable bytes to the readable bytes. \r[heading Synopsis]\r```\rvoid\rcommit(\r    std::size_t n);\r```\r\r[heading Description]\r
1346 Appends n bytes from the start of the writable bytes to the end of the readable bytes. The remainder of the writable bytes are discarded. If n is greater than the number of writable bytes, all writable bytes are appended to the readable bytes.
1347 All buffer sequences previously obtained using [link beast.ref.boost__beast__buffers_adaptor.prepare `buffers_adaptor::prepare`] are invalidated. Buffer sequences previously obtained using [link beast.ref.boost__beast__buffers_adaptor.data `buffers_adaptor::data`] remain valid.
1348 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
1349 The number of bytes to append. If this number is greater than the number of writable bytes, all writable bytes are appended.\r  ]]\r]\r
1350 [heading Exception Safety]
1351
1352 No-throw guarantee. [endsect]\r[section:const_buffers_type buffers_adaptor::const_buffers_type]\r[indexterm2 const_buffers_type..buffers_adaptor]\r
1353 The ConstBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing const_buffers_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:consume buffers_adaptor::consume]\r[indexterm2 consume..buffers_adaptor]\r
1354 Remove bytes from beginning of the readable bytes. \r[heading Synopsis]\r```\rvoid\rconsume(\r    std::size_t n);\r```\r\r[heading Description]\r
1355 Removes n bytes from the beginning of the readable bytes.
1356 All buffers sequences previously obtained using [link beast.ref.boost__beast__buffers_adaptor.data `buffers_adaptor::data`] or [link beast.ref.boost__beast__buffers_adaptor.prepare `buffers_adaptor::prepare`] are invalidated.
1357 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
1358 The number of bytes to remove. If this number is greater than the number of readable bytes, all readable bytes are removed.\r  ]]\r]\r
1359 [heading Exception Safety]
1360
1361 No-throw guarantee. [endsect]\r[section:data buffers_adaptor::data]\r[indexterm2 data..buffers_adaptor]\r
1362 Returns a constant buffer sequence representing the readable bytes. ```\rconst_buffers_type\r``[link beast.ref.boost__beast__buffers_adaptor.data.overload1 data]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_adaptor.data.overload1 more...]]``\r\r```\r
1363 Returns a mutable buffer sequence representing the readable bytes. ```\rmutable_data_type\r``[link beast.ref.boost__beast__buffers_adaptor.data.overload2 data]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_adaptor.data.overload2 more...]]``\r```\r[section:overload1 buffers_adaptor::data (1 of 2 overloads)]\r
1364 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 buffers_adaptor::data (2 of 2 overloads)]\r
1365 Returns a mutable buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rmutable_data_type\rdata();\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:max_size buffers_adaptor::max_size]\r[indexterm2 max_size..buffers_adaptor]\r
1366 Return the maximum number of bytes, both readable and writable, that can ever be held. \r[heading Synopsis]\r```\rstd::size_t\rmax_size() const;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_buffers_type buffers_adaptor::mutable_buffers_type]\r[indexterm2 mutable_buffers_type..buffers_adaptor]\r
1367 The MutableBufferSequence used to represent the writable bytes. \r[heading Synopsis]\r\r```\rusing mutable_buffers_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_data_type buffers_adaptor::mutable_data_type]\r[indexterm2 mutable_data_type..buffers_adaptor]\r
1368 The MutableBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing mutable_data_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ buffers_adaptor::operator=]\r[indexterm2 operator=..buffers_adaptor]\r
1369 Copy Assignment. \r[heading Synopsis]\r```\rbuffers_adaptor&\roperator=(\r    buffers_adaptor const&);\r```\r\r[heading Description]\r[endsect]\r[section:prepare buffers_adaptor::prepare]\r[indexterm2 prepare..buffers_adaptor]\r
1370 Returns a mutable buffer sequence representing writable bytes. \r[heading Synopsis]\r```\rmutable_buffers_type\rprepare(\r    std::size_t n);\r```\r\r[heading Description]\r
1371 Returns a mutable buffer sequence representing the writable bytes containing exactly `n` bytes of storage. This function does not allocate memory. Instead, the storage comes from the underlying mutable buffer sequence.
1372 All buffer sequences previously obtained using [link beast.ref.boost__beast__buffers_adaptor.prepare `buffers_adaptor::prepare`] are invalidated. Buffer sequences previously obtained using [link beast.ref.boost__beast__buffers_adaptor.data `buffers_adaptor::data`] remain valid.
1373 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
1374 The desired number of bytes in the returned buffer sequence.\r  ]]\r]\r
1375 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
1376 if `size() + n` exceeds `max_size()`.\r  ]]\r]\r
1377 [heading Exception Safety]
1378
1379 Strong guarantee. [endsect]\r[section:size buffers_adaptor::size]\r[indexterm2 size..buffers_adaptor]\r
1380 Returns the number of readable bytes. \r[heading Synopsis]\r```\rstd::size_t\rsize() const;\r```\r\r[heading Description]\r[endsect]\r[section:value buffers_adaptor::value]\r[indexterm2 value..buffers_adaptor]\r
1381 Returns the original mutable buffer sequence. \r[heading Synopsis]\r```\rvalue_type const &\rvalue() const;\r```\r\r[heading Description]\r[endsect]\r[section:value_type buffers_adaptor::value_type]\r[indexterm2 value_type..buffers_adaptor]\r
1382 The type of the underlying mutable buffer sequence. \r[heading Synopsis]\r\r```\rusing value_type = MutableBufferSequence;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__buffers_adaptor__readable_bytes buffers_adaptor::readable_bytes]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_adaptor.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass readable_bytes\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__buffers_cat buffers_cat]\r[indexterm1 buffers_cat]\r
1383 Concatenate 1 or more buffer sequences. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_cat.hpp]\r\r\r\r```\rtemplate<\r    class... __BufferSequence__>\rbuffers_cat_view< BufferSequence... >\rbuffers_cat(\r    BufferSequence const&... buffers);\r\r```\r\r[heading Description]\r
1384 This function returns a constant or mutable buffer sequence which, when iterated, efficiently concatenates the input buffer sequences. Copies of the arguments passed will be made; however, the returned object does not take ownership of the underlying memory. The application is still responsible for managing the lifetime of the referenced memory. [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1385 The list of buffer sequences to concatenate. \r  ]]\r]\r
1386 [heading Return Value]
1387 A new buffer sequence that represents the concatenation of the input buffer sequences. This buffer sequence will be a ['MutableBufferSequence] if each of the passed buffer sequences is also a ['MutableBufferSequence]; otherwise the returned buffer sequence will be a ['ConstBufferSequence]. 
1388 [heading See Also]\r
1389 [link beast.ref.boost__beast__buffers_cat_view `buffers_cat_view`] 
1390 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffers_cat_view buffers_cat_view]\r
1391 A buffer sequence representing a concatenation of buffer sequences. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_cat.hpp]\r\r\r\r```\rtemplate<\r    class... Buffers>\rclass buffers_cat_view\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffers_cat_view.value_type [*value_type]]]\r    [\r      The type of buffer returned when dereferencing an iterator. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffers_cat_view.begin [*begin]]]\r    [\r      Returns an iterator to the first buffer in the sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_cat_view.buffers_cat_view [*buffers_cat_view]]]\r    [\r      Copy Constructor. \r\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_cat_view.end [*end]]]\r    [\r      Returns an iterator to one past the last buffer in the sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_cat_view.operator_eq_ [*operator=]]]\r    [\r      Copy Assignment. \r    ]\r  ]\r]\r\r[heading Description]\r
1392 [heading See Also]\r
1393 [link beast.ref.boost__beast__buffers_cat `buffers_cat`] 
1394 [section:begin buffers_cat_view::begin]\r[indexterm2 begin..buffers_cat_view]\r
1395 Returns an iterator to the first buffer in the sequence. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:buffers_cat_view buffers_cat_view::buffers_cat_view]\r[indexterm2 buffers_cat_view..buffers_cat_view]\r
1396 Copy Constructor. ```\r``[link beast.ref.boost__beast__buffers_cat_view.buffers_cat_view.overload1 buffers_cat_view]``(\r    buffers_cat_view const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_cat_view.buffers_cat_view.overload1 more...]]``\r\r```\r
1397 Constructor. ```\rexplicit\r``[link beast.ref.boost__beast__buffers_cat_view.buffers_cat_view.overload2 buffers_cat_view]``(\r    Buffers const&... buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_cat_view.buffers_cat_view.overload2 more...]]``\r```\r[section:overload1 buffers_cat_view::buffers_cat_view (1 of 2 overloads)]\r
1398 Copy Constructor. \r[heading Synopsis]\r```\rbuffers_cat_view(\r    buffers_cat_view const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 buffers_cat_view::buffers_cat_view (2 of 2 overloads)]\r
1399 Constructor. \r[heading Synopsis]\r```\rbuffers_cat_view(\r    Buffers const&... buffers);\r```\r\r[heading Description]\r
1400 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1401 The list of buffer sequences to concatenate. Copies of the arguments will be maintained for the lifetime of the concatenated sequence; however, the ownership of the memory buffers themselves is not transferred. \r  ]]\r]\r
1402 [endsect]\r[endsect]\r\r[section:end buffers_cat_view::end]\r[indexterm2 end..buffers_cat_view]\r
1403 Returns an iterator to one past the last buffer in the sequence. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ buffers_cat_view::operator=]\r[indexterm2 operator=..buffers_cat_view]\r
1404 Copy Assignment. \r[heading Synopsis]\r```\rbuffers_cat_view&\roperator=(\r    buffers_cat_view const&);\r```\r\r[heading Description]\r[endsect]\r[section:value_type buffers_cat_view::value_type]\r[indexterm2 value_type..buffers_cat_view]\r
1405 The type of buffer returned when dereferencing an iterator. \r[heading Synopsis]\r\r```\rusing value_type = ``['see-below]``;\r```\r\r[heading Description]\r
1406 If every buffer sequence in the view is a ['MutableBufferSequence], then `value_type` will be `net::mutable_buffer`. Otherwise, `value_type` will be `net::const_buffer`. [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__buffers_front buffers_front]\r[indexterm1 buffers_front]\r
1407 Returns the first buffer in a buffer sequence. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_prefix.hpp]\r\r\r\r```\rtemplate<\r    class __BufferSequence__>\rbuffers_type< BufferSequence >\rbuffers_front(\r    BufferSequence const& buffers);\r\r```\r\r[heading Description]\r
1408 This returns the first buffer in the buffer sequence. If the buffer sequence is an empty range, the returned buffer will have a zero buffer size.
1409 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1410 The buffer sequence. If the sequence is mutable, the returned buffer sequence will also be mutable. Otherwise, the returned buffer sequence will be constant. \r  ]]\r]\r
1411 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffers_iterator_type buffers_iterator_type]\r[indexterm1 buffers_iterator_type]\r
1412 Type alias for the iterator type of a buffer sequence type. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffer_traits.hpp]\r\r\r\r```\rtemplate<\r    class __BufferSequence__>\rusing buffers_iterator_type = ``['see-below]``;\r```\r\r[heading Description]\r
1413 This metafunction is used to determine the type of iterator used by a particular buffer sequence.
1414 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`T`][\r    
1415 The buffer sequence type to use. The resulting type alias will be equal to the iterator type used by the buffer sequence. \r  ]]\r]\r
1416 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffers_prefix buffers_prefix]\r[indexterm1 buffers_prefix]\r
1417 Returns a prefix of a constant or mutable buffer sequence. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_prefix.hpp]\r\r\r\r```\rtemplate<\r    class __BufferSequence__>\rbuffers_prefix_view< BufferSequence >\rbuffers_prefix(\r    std::size_t size,\r    BufferSequence const& buffers);\r\r```\r\r[heading Description]\r
1418 The returned buffer sequence points to the same memory as the passed buffer sequence, but with a size that is equal to or smaller. No memory allocations are performed; the resulting sequence is calculated as a lazy range.
1419 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
1420 The maximum size of the returned buffer sequence in bytes. If this is greater than or equal to the size of the passed buffer sequence, the result will have the same size as the original buffer sequence.\r  ]]\r  [[`buffers`][\r    
1421 An object whose type meets the requirements of ['BufferSequence]. The returned value will maintain a copy of the passed buffers for its lifetime; however, ownership of the underlying memory is not transferred.\r  ]]\r]\r
1422 [heading Return Value]
1423 A constant buffer sequence that represents the prefix of the original buffer sequence. If the original buffer sequence also meets the requirements of ['MutableBufferSequence], then the returned value will also be a mutable buffer sequence. 
1424 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffers_prefix_view buffers_prefix_view]\r
1425 A buffer sequence adaptor that shortens the sequence size. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_prefix.hpp]\r\r\r\r```\rtemplate<\r    class __BufferSequence__>\rclass buffers_prefix_view\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffers_prefix_view.const_iterator [*const_iterator]]]\r    [\r      A bidirectional iterator type that may be used to read elements. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_prefix_view.value_type [*value_type]]]\r    [\r      The type for each element in the list of buffers. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffers_prefix_view.begin [*begin]]]\r    [\r      Returns an iterator to the first buffer in the sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_prefix_view.buffers_prefix_view [*buffers_prefix_view]]]\r    [\r      Copy Constructor. \r\r      Construct a buffer sequence prefix. \r\r      Construct a buffer sequence prefix in-place. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_prefix_view.end [*end]]]\r    [\r      Returns an iterator to one past the last buffer in the sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_prefix_view.operator_eq_ [*operator=]]]\r    [\r      Copy Assignment. \r    ]\r  ]\r]\r\r[heading Description]\r
1426 The class adapts a buffer sequence to efficiently represent a shorter subset of the original list of buffers starting with the first byte of the original sequence.
1427 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`BufferSequence`][\r    
1428 The buffer sequence to adapt. \r  ]]\r]\r
1429 [section:begin buffers_prefix_view::begin]\r[indexterm2 begin..buffers_prefix_view]\r
1430 Returns an iterator to the first buffer in the sequence. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:buffers_prefix_view buffers_prefix_view::buffers_prefix_view]\r[indexterm2 buffers_prefix_view..buffers_prefix_view]\r
1431 Copy Constructor. ```\r``[link beast.ref.boost__beast__buffers_prefix_view.buffers_prefix_view.overload1 buffers_prefix_view]``(\r    buffers_prefix_view const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_prefix_view.buffers_prefix_view.overload1 more...]]``\r\r```\r
1432 Construct a buffer sequence prefix. ```\r``[link beast.ref.boost__beast__buffers_prefix_view.buffers_prefix_view.overload2 buffers_prefix_view]``(\r    std::size_t size,\r    BufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_prefix_view.buffers_prefix_view.overload2 more...]]``\r\r```\r
1433 Construct a buffer sequence prefix in-place. ```\rtemplate<\r    class... Args>\r``[link beast.ref.boost__beast__buffers_prefix_view.buffers_prefix_view.overload3 buffers_prefix_view]``(\r    std::size_t size,\r    boost::in_place_init_t,\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_prefix_view.buffers_prefix_view.overload3 more...]]``\r```\r[section:overload1 buffers_prefix_view::buffers_prefix_view (1 of 3 overloads)]\r
1434 Copy Constructor. \r[heading Synopsis]\r```\rbuffers_prefix_view(\r    buffers_prefix_view const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 buffers_prefix_view::buffers_prefix_view (2 of 3 overloads)]\r
1435 Construct a buffer sequence prefix. \r[heading Synopsis]\r```\rbuffers_prefix_view(\r    std::size_t size,\r    BufferSequence const& buffers);\r```\r\r[heading Description]\r
1436 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
1437 The maximum number of bytes in the prefix. If this is larger than the size of passed buffers, the resulting sequence will represent the entire input sequence.\r  ]]\r  [[`buffers`][\r    
1438 The buffer sequence to adapt. A copy of the sequence will be made, but ownership of the underlying memory is not transferred. The copy is maintained for the lifetime of the view. \r  ]]\r]\r
1439 [endsect]\r[section:overload3 buffers_prefix_view::buffers_prefix_view (3 of 3 overloads)]\r
1440 Construct a buffer sequence prefix in-place. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rbuffers_prefix_view(\r    std::size_t size,\r    boost::in_place_init_t,\r    Args&&... args);\r```\r\r[heading Description]\r
1441 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
1442 The maximum number of bytes in the prefix. If this is larger than the size of passed buffers, the resulting sequence will represent the entire input sequence.\r  ]]\r  [[`args`][\r    
1443 Arguments forwarded to the contained buffer's constructor. \r  ]]\r]\r
1444 [endsect]\r[endsect]\r\r[section:const_iterator buffers_prefix_view::const_iterator]\r[indexterm2 const_iterator..buffers_prefix_view]\r
1445 A bidirectional iterator type that may be used to read elements. \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:end buffers_prefix_view::end]\r[indexterm2 end..buffers_prefix_view]\r
1446 Returns an iterator to one past the last buffer in the sequence. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ buffers_prefix_view::operator=]\r[indexterm2 operator=..buffers_prefix_view]\r
1447 Copy Assignment. \r[heading Synopsis]\r```\rbuffers_prefix_view&\roperator=(\r    buffers_prefix_view const&);\r```\r\r[heading Description]\r[endsect]\r[section:value_type buffers_prefix_view::value_type]\r[indexterm2 value_type..buffers_prefix_view]\r
1448 The type for each element in the list of buffers. \r[heading Synopsis]\r\r```\rusing value_type = ``['see-below]``;\r```\r\r[heading Description]\r
1449 If the type `BufferSequence` meets the requirements of ['MutableBufferSequence], then `value_type` is `net::mutable_buffer`. Otherwise, `value_type` is `net::const_buffer`.
1450 [heading See Also]\r
1451 [link beast.ref.boost__beast__buffers_type `buffers_type`] 
1452 [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__buffers_range buffers_range]\r[indexterm1 buffers_range]\r
1453 Returns an iterable range representing a buffer sequence. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_range.hpp]\r\r\r\r```\rtemplate<\r    class __BufferSequence__>\r``['implementation-defined]``\rbuffers_range(\r    BufferSequence const& buffers);\r\r```\r\r[heading Description]\r
1454 This function returns an iterable range representing the passed buffer sequence. The values obtained when iterating the range will be `net::const_buffer`, unless the underlying buffer sequence is a ['MutableBufferSequence], in which case the value obtained when iterating will be a `net::mutable_buffer`.
1455 [heading Example]
1456
1457 The following function returns the total number of bytes in the specified buffer sequence. A copy of the buffer sequence is maintained for the lifetime of the range object:
1458 \r```\r  template <class BufferSequence>
1459   std::size_t buffer_sequence_size (BufferSequence const& buffers)
1460   {
1461       std::size_t size = 0;
1462       for (auto const buffer : buffers_range (buffers))
1463           size += buffer.size();
1464       return size;
1465   }
1466 ```\r
1467 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1468 The buffer sequence to adapt into a range. The range object returned from this function will contain a copy of the passed buffer sequence.\r  ]]\r]\r
1469 [heading Return Value]
1470 An object of unspecified type which meets the requirements of ['ConstBufferSequence]. If `buffers` is a mutable buffer sequence, the returned object will also meet the requirements of ['MutableBufferSequence].
1471 [heading See Also]\r
1472 [link beast.ref.boost__beast__buffers_range_ref `buffers_range_ref`] 
1473 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffers_range_ref buffers_range_ref]\r[indexterm1 buffers_range_ref]\r
1474 Returns an iterable range representing a buffer sequence. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_range.hpp]\r\r\r\r```\rtemplate<\r    class __BufferSequence__>\r``['implementation-defined]``\rbuffers_range_ref(\r    BufferSequence const& buffers);\r\r```\r\r[heading Description]\r
1475 This function returns an iterable range representing the passed buffer sequence. The values obtained when iterating the range will be `net::const_buffer`, unless the underlying buffer sequence is a ['MutableBufferSequence], in which case the value obtained when iterating will be a `net::mutable_buffer`.
1476 [heading Example]
1477
1478 The following function returns the total number of bytes in the specified buffer sequence. A reference to the original buffers is maintained for the lifetime of the range object:
1479 \r```\r  template <class BufferSequence>
1480   std::size_t buffer_sequence_size_ref (BufferSequence const& buffers)
1481   {
1482       std::size_t size = 0;
1483       for (auto const buffer : buffers_range_ref (buffers))
1484           size += buffer.size();
1485       return size;
1486   }
1487 ```\r
1488 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1489 The buffer sequence to adapt into a range. The range returned from this function will maintain a reference to these buffers. The application is responsible for ensuring that the lifetime of the referenced buffers extends until the range object is destroyed.\r  ]]\r]\r
1490 [heading Return Value]
1491 An object of unspecified type which meets the requirements of ['ConstBufferSequence]. If `buffers` is a mutable buffer sequence, the returned object will also meet the requirements of ['MutableBufferSequence].
1492 [heading See Also]\r
1493 [link beast.ref.boost__beast__buffers_range `buffers_range`] 
1494 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffers_suffix buffers_suffix]\r
1495 Adaptor to progressively trim the front of a ['BufferSequence]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_suffix.hpp]\r\r\r\r```\rtemplate<\r    class __BufferSequence__>\rclass buffers_suffix\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffers_suffix.const_iterator [*const_iterator]]]\r    [\r      A bidirectional iterator type that may be used to read elements. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_suffix.value_type [*value_type]]]\r    [\r      The type for each element in the list of buffers. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__buffers_suffix.begin [*begin]]]\r    [\r      Get a bidirectional iterator to the first element. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_suffix.buffers_suffix [*buffers_suffix]]]\r    [\r      Constructor. \r\r      Copy Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_suffix.consume [*consume]]]\r    [\r      Remove bytes from the beginning of the sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_suffix.end [*end]]]\r    [\r      Get a bidirectional iterator to one past the last element. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__buffers_suffix.operator_eq_ [*operator=]]]\r    [\r      Copy Assignment. \r    ]\r  ]\r]\r\r[heading Description]\r
1496 This adaptor wraps a buffer sequence to create a new sequence which may be incrementally consumed. Bytes consumed are removed from the front of the buffer. The underlying memory is not changed, instead the adaptor efficiently iterates through a subset of the buffers wrapped.
1497 The wrapped buffer is not modified, a copy is made instead. Ownership of the underlying memory is not transferred, the application is still responsible for managing its lifetime.
1498 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`BufferSequence`][\r    
1499 The buffer sequence to wrap.\r  ]]\r]\r
1500 [heading Example]
1501
1502 This function writes the entire contents of a buffer sequence to the specified stream.
1503 \r```\r  template<class SyncWriteStream, class ConstBufferSequence>
1504   void send(SyncWriteStream& stream, ConstBufferSequence const& buffers)
1505   {
1506       buffers_suffix<ConstBufferSequence> bs{buffers};
1507       while(buffer_bytes(bs) > 0)
1508           bs.consume(stream.write_some(bs));
1509   }
1510 ```\r[section:begin buffers_suffix::begin]\r[indexterm2 begin..buffers_suffix]\r
1511 Get a bidirectional iterator to the first element. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:buffers_suffix buffers_suffix::buffers_suffix]\r[indexterm2 buffers_suffix..buffers_suffix]\r
1512 Constructor. ```\r``[link beast.ref.boost__beast__buffers_suffix.buffers_suffix.overload1 buffers_suffix]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_suffix.buffers_suffix.overload1 more...]]``\r\r```\r
1513 Copy Constructor. ```\r``[link beast.ref.boost__beast__buffers_suffix.buffers_suffix.overload2 buffers_suffix]``(\r    buffers_suffix const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_suffix.buffers_suffix.overload2 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__buffers_suffix.buffers_suffix.overload3 buffers_suffix]``(\r    BufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_suffix.buffers_suffix.overload3 more...]]``\r\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__buffers_suffix.buffers_suffix.overload4 buffers_suffix]``(\r    boost::in_place_init_t,\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__buffers_suffix.buffers_suffix.overload4 more...]]``\r```\r[section:overload1 buffers_suffix::buffers_suffix (1 of 4 overloads)]\r
1514 Constructor. \r[heading Synopsis]\r```\rbuffers_suffix();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 buffers_suffix::buffers_suffix (2 of 4 overloads)]\r
1515 Copy Constructor. \r[heading Synopsis]\r```\rbuffers_suffix(\r    buffers_suffix const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 buffers_suffix::buffers_suffix (3 of 4 overloads)]\r
1516 Constructor. \r[heading Synopsis]\r```\rbuffers_suffix(\r    BufferSequence const& buffers);\r```\r\r[heading Description]\r
1517 A copy of the buffer sequence is made. Ownership of the underlying memory is not transferred or copied. [endsect]\r[section:overload4 buffers_suffix::buffers_suffix (4 of 4 overloads)]\r
1518 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rbuffers_suffix(\r    boost::in_place_init_t,\r    Args&&... args);\r```\r\r[heading Description]\r
1519 This constructs the buffer sequence in-place from a list of arguments.
1520 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
1521 Arguments forwarded to the buffers constructor. \r  ]]\r]\r
1522 [endsect]\r[endsect]\r\r[section:const_iterator buffers_suffix::const_iterator]\r[indexterm2 const_iterator..buffers_suffix]\r
1523 A bidirectional iterator type that may be used to read elements. \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:consume buffers_suffix::consume]\r[indexterm2 consume..buffers_suffix]\r
1524 Remove bytes from the beginning of the sequence. \r[heading Synopsis]\r```\rvoid\rconsume(\r    std::size_t amount);\r```\r\r[heading Description]\r
1525 [heading Parameters]\r[table [[Name][Description]]\r  [[`amount`][\r    
1526 The number of bytes to remove. If this is larger than the number of bytes remaining, all the bytes remaining are removed. \r  ]]\r]\r
1527 [endsect]\r[section:end buffers_suffix::end]\r[indexterm2 end..buffers_suffix]\r
1528 Get a bidirectional iterator to one past the last element. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ buffers_suffix::operator=]\r[indexterm2 operator=..buffers_suffix]\r
1529 Copy Assignment. \r[heading Synopsis]\r```\rbuffers_suffix&\roperator=(\r    buffers_suffix const&);\r```\r\r[heading Description]\r[endsect]\r[section:value_type buffers_suffix::value_type]\r[indexterm2 value_type..buffers_suffix]\r
1530 The type for each element in the list of buffers. \r[heading Synopsis]\r\r```\rusing value_type = ``['see-below]``;\r```\r\r[heading Description]\r
1531 If ['BufferSequence] meets the requirements of ['MutableBufferSequence], then this type will be `net::mutable_buffer`, otherwise this type will be `net::const_buffer`. [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__buffers_to_string buffers_to_string]\r[indexterm1 buffers_to_string]\r
1532 Return a string representing the contents of a buffer sequence. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffers_to_string.hpp]\r\r\r\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::string\rbuffers_to_string(\r    ConstBufferSequence const& buffers);\r\r```\r\r[heading Description]\r
1533 This function returns a string representing an entire buffer sequence. Nulls and unprintable characters in the buffer sequence are inserted to the resulting string as-is. No character conversions are performed.
1534 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
1535 The buffer sequence to convert\r  ]]\r]\r
1536 [heading Example]
1537
1538 This function writes a buffer sequence converted to a string to `std::cout`.
1539 \r```\r  template<class ConstBufferSequence>
1540   void print(ConstBufferSequence const& buffers)
1541   {
1542       std::cout << buffers_to_string(buffers) << std::endl;
1543   }
1544 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__buffers_type buffers_type]\r[indexterm1 buffers_type]\r
1545 Type alias for the underlying buffer type of a list of buffer sequence types. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffer_traits.hpp]\r\r\r\r```\rtemplate<\r    class... __BufferSequence__>\rusing buffers_type = ``['see-below]``;\r```\r\r[heading Description]\r
1546 This metafunction is used to determine the underlying buffer type for a list of buffer sequence. The equivalent type of the alias will vary depending on the template type argument:
1547
1548 * If every type in the list is a ['MutableBufferSequence], the resulting type alias will be `net::mutable_buffer`, otherwise
1549
1550
1551 * The resulting type alias will be `net::const_buffer`.
1552
1553 [heading Example]
1554 The following code returns the first buffer in a buffer sequence, or generates a compilation error if the argument is not a buffer sequence: \r```\r  template <class BufferSequence>
1555   buffers_type <BufferSequence>
1556   buffers_front (BufferSequence const& buffers)
1557   {
1558       static_assert(
1559           net::is_const_buffer_sequence<BufferSequence>::value,
1560           "BufferSequence type requirements not met");
1561       auto const first = net::buffer_sequence_begin (buffers);
1562       if (first == net::buffer_sequence_end (buffers))
1563           return {};
1564       return *first;
1565   }
1566 ```\r
1567 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`BufferSequence`][\r    
1568 A list of zero or more types to check. If this list is empty, the resulting type alias will be `net::mutable_buffer`. \r  ]]\r]\r
1569 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__close_socket close_socket]\r[indexterm1 close_socket]\r
1570 Close a socket or socket-like object. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class Socket>\rvoid\rclose_socket(\r    Socket& sock);\r\r```\r\r[heading Description]\r
1571 This function attempts to close an object representing a socket. In this context, a socket is an object for which an unqualified call to the function `void beast_close_socket(Socket&)` is well-defined. The function `beast_close_socket` is a ['customization point], allowing user-defined types to provide an algorithm for performing the close operation by overloading this function for the type in question.
1572 Since the customization point is a function call, the normal rules for finding the correct overload are applied including the rules for argument-dependent lookup ("ADL"). This permits classes derived from a type for which a customization is provided to inherit the customization point.
1573 An overload for the networking class template `net::basic_socket` is provided, which implements the close algorithm for all socket-like objects (hence the name of this customization point). When used in conjunction with [link beast.ref.boost__beast__get_lowest_layer `get_lowest_layer`], a generic algorithm operating on a layered stream can perform a closure of the underlying socket without knowing the exact list of concrete types.
1574 [heading Example 1]
1575 The following generic function synchronously sends a message on the stream, then closes the socket. \r```\r  template <class WriteStream>
1576   void hello_and_close (WriteStream& stream)
1577   {
1578       net::write(stream, net::const_buffer("Hello, world!", 13));
1579       close_socket(get_lowest_layer(stream));
1580   }
1581 ```\r
1582 To enable closure of user defined types, it is necessary to provide an overload of the function `beast_close_socket` for the type.
1583 [heading Example 2]
1584 The following code declares a user-defined type which contains a private socket, and provides an overload of the customization point which closes the private socket. \r```\r  class my_socket
1585   {
1586       net::ip::tcp::socket sock_;
1587
1588   public:
1589       my_socket(net::io_context& ioc)
1590           : sock_(ioc)
1591       {
1592       }
1593
1594       friend void beast_close_socket(my_socket& s)
1595       {
1596           error_code ec;
1597           s.sock_.close(ec);
1598           // ignore the error
1599       }
1600   };
1601 ```\r
1602 [heading Parameters]\r[table [[Name][Description]]\r  [[`sock`][\r    
1603 The socket to close. If the customization point is not defined for the type of this object, or one of its base classes, then a compiler error results.\r  ]]\r]\r
1604 [heading See Also]\r
1605 [link beast.ref.boost__beast__beast_close_socket `beast_close_socket`] 
1606 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__condition condition]\r[indexterm1 condition]\r
1607 Error conditions corresponding to sets of library error codes. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r```\renum condition\r```\r\r[indexterm2 timeout..condition]\r[heading Values]\r[table [[Name][Description]]\r  [[[^timeout]][The operation timed out. \r\rThis error indicates that an operation took took too long.
1608  ]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__detect_ssl detect_ssl]\r[indexterm1 detect_ssl]\r
1609 Detect a TLS client handshake on a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/detect_ssl.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__>\rbool\rdetect_ssl(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    error_code& ec);\r\r```\r\r[heading Description]\r
1610 This function reads from a stream to determine if a client handshake message is being received.
1611 The call blocks until one of the following is true:
1612
1613 * A TLS client opening handshake is detected,
1614
1615
1616 * The received data is invalid for a TLS client handshake, or
1617
1618
1619 * An error occurs.
1620
1621 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` function.
1622 Bytes read from the stream will be stored in the passed dynamic buffer, which may be used to perform the TLS handshake if the detector returns true, or be otherwise consumed by the caller based on the expected protocol.
1623 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
1624 The stream to read from. This type must meet the requirements of ['SyncReadStream].\r  ]]\r  [[`buffer`][\r    
1625 The dynamic buffer to use. This type must meet the requirements of ['DynamicBuffer].\r  ]]\r  [[`ec`][\r    
1626 Set to the error if any occurred.\r  ]]\r]\r
1627 [heading Return Value]
1628 `true` if the buffer contains a TLS client handshake and no error occurred, otherwise `false`. 
1629 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__errc errc]\r[indexterm1 errc]\r
1630 The set of constants used for cross-platform error codes. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r```\renum errc\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__error error]\r[indexterm1 error]\r
1631 Error codes returned from library operations. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r```\renum error\r```\r\r[indexterm2 timeout..error]\r[heading Values]\r[table [[Name][Description]]\r  [[[^timeout]][The socket was closed due to a timeout. \r\rThis error indicates that a socket was closed due to a
1632 a timeout detected during an operation.
1633
1634 Error codes with this value will compare equal to @ref condition::timeout.
1635  ]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__error_category error_category]\r[indexterm1 error_category]\r
1636 The type of error category used by the library. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r\r```\rusing error_category = boost::system::error_category;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__error_code error_code]\r[indexterm1 error_code]\r
1637 The type of error code used by the library. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r\r```\rusing error_code = boost::system::error_code;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__error_condition error_condition]\r[indexterm1 error_condition]\r
1638 The type of error condition used by the library. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r\r```\rusing error_condition = boost::system::error_condition;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__executor_type executor_type]\r[indexterm1 executor_type]\r
1639 A trait to determine the return type of get\_executor. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing executor_type = ``['see-below]``;\r```\r\r[heading Description]\r
1640 This type alias will be the type of values returned by by calling member `get_exector` on an object of type `T&`.
1641 [heading Parameters]\r[table [[Name][Description]]\r  [[`T`][\r    
1642 The type to query\r  ]]\r]\r
1643 [heading Return Value]
1644 The type of values returned from `get_executor`. 
1645 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__file file]\r
1646 An implementation of File. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/file.hpp]\r\r\r\r```\rstruct file :\r    public file_stdio\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__file.native_handle_type [*native_handle_type]]]\r    [\r      The type of the underlying file handle. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__file.close [*close]]]\r    [\r      Close the file if open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file.is_open [*is_open]]]\r    [\r      Returns true if the file is open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file.native_handle [*native_handle]]]\r    [\r      Returns the native handle associated with the file. \r\r      Set the native handle associated with the file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file.open [*open]]]\r    [\r      Open a file at the given path with the specified mode. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file.pos [*pos]]]\r    [\r      Return the current position in the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file.read [*read]]]\r    [\r      Read from the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file.seek [*seek]]]\r    [\r      Adjust the current position in the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file.size [*size]]]\r    [\r      Return the size of the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file.write [*write]]]\r    [\r      Write to the open file. \r    ]\r  ]\r]\r\r[heading Description]\r
1647 This alias is set to the best available implementation of ['File] given the platform and build settings. [section:close file::close]\r(Inherited from `file_stdio`)\r\r[indexterm2 close..file]\r
1648 Close the file if open. \r[heading Synopsis]\r```\rvoid\rclose(\r    error_code& ec);\r```\r\r[heading Description]\r
1649 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1650 Set to the error, if any occurred. \r  ]]\r]\r
1651 [endsect]\r[section:is_open file::is_open]\r(Inherited from `file_stdio`)\r\r[indexterm2 is_open..file]\r
1652 Returns `true` if the file is open. \r[heading Synopsis]\r```\rbool\ris_open() const;\r```\r\r[heading Description]\r[endsect]\r[section:native_handle file::native_handle]\r[indexterm2 native_handle..file]\r
1653 Returns the native handle associated with the file. ```\rFILE*\r``[link beast.ref.boost__beast__file.native_handle.overload1 native_handle]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file.native_handle.overload1 more...]]``\r\r```\r
1654 Set the native handle associated with the file. ```\rvoid\r``[link beast.ref.boost__beast__file.native_handle.overload2 native_handle]``(\r    FILE* f);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file.native_handle.overload2 more...]]``\r```\r[section:overload1 file::native_handle (1 of 2 overloads)]\r(Inherited from `file_stdio`)\r\r
1655 Returns the native handle associated with the file. \r[heading Synopsis]\r```\rFILE*\rnative_handle() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 file::native_handle (2 of 2 overloads)]\r(Inherited from `file_stdio`)\r\r
1656 Set the native handle associated with the file. \r[heading Synopsis]\r```\rvoid\rnative_handle(\r    FILE* f);\r```\r\r[heading Description]\r
1657 If the file is open it is first closed.
1658 [heading Parameters]\r[table [[Name][Description]]\r  [[`f`][\r    
1659 The native file handle to assign. \r  ]]\r]\r
1660 [endsect]\r[endsect]\r\r[section:native_handle_type file::native_handle_type]\r(Inherited from `file_stdio`)\r\r[indexterm2 native_handle_type..file]\r
1661 The type of the underlying file handle. \r[heading Synopsis]\r\r```\rusing native_handle_type = FILE*;\r```\r\r[heading Description]\r
1662 This is platform-specific. [endsect]\r[section:open file::open]\r(Inherited from `file_stdio`)\r\r[indexterm2 open..file]\r
1663 Open a file at the given path with the specified mode. \r[heading Synopsis]\r```\rvoid\ropen(\r    char const* path,\r    file_mode mode,\r    error_code& ec);\r```\r\r[heading Description]\r
1664 [heading Parameters]\r[table [[Name][Description]]\r  [[`path`][\r    
1665 The utf-8 encoded path to the file\r  ]]\r  [[`mode`][\r    
1666 The file mode to use\r  ]]\r  [[`ec`][\r    
1667 Set to the error, if any occurred \r  ]]\r]\r
1668 [endsect]\r[section:pos file::pos]\r(Inherited from `file_stdio`)\r\r[indexterm2 pos..file]\r
1669 Return the current position in the open file. \r[heading Synopsis]\r```\rstd::uint64_t\rpos(\r    error_code& ec) const;\r```\r\r[heading Description]\r
1670 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1671 Set to the error, if any occurred\r  ]]\r]\r
1672 [heading Return Value]
1673 The offset in bytes from the beginning of the file 
1674 [endsect]\r[section:read file::read]\r(Inherited from `file_stdio`)\r\r[indexterm2 read..file]\r
1675 Read from the open file. \r[heading Synopsis]\r```\rstd::size_t\rread(\r    void* buffer,\r    std::size_t n,\r    error_code& ec) const;\r```\r\r[heading Description]\r
1676 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
1677 The buffer for storing the result of the read\r  ]]\r  [[`n`][\r    
1678 The number of bytes to read\r  ]]\r  [[`ec`][\r    
1679 Set to the error, if any occurred \r  ]]\r]\r
1680 [endsect]\r[section:seek file::seek]\r(Inherited from `file_stdio`)\r\r[indexterm2 seek..file]\r
1681 Adjust the current position in the open file. \r[heading Synopsis]\r```\rvoid\rseek(\r    std::uint64_t offset,\r    error_code& ec);\r```\r\r[heading Description]\r
1682 [heading Parameters]\r[table [[Name][Description]]\r  [[`offset`][\r    
1683 The offset in bytes from the beginning of the file\r  ]]\r  [[`ec`][\r    
1684 Set to the error, if any occurred \r  ]]\r]\r
1685 [endsect]\r[section:size file::size]\r(Inherited from `file_stdio`)\r\r[indexterm2 size..file]\r
1686 Return the size of the open file. \r[heading Synopsis]\r```\rstd::uint64_t\rsize(\r    error_code& ec) const;\r```\r\r[heading Description]\r
1687 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1688 Set to the error, if any occurred\r  ]]\r]\r
1689 [heading Return Value]
1690 The size in bytes 
1691 [endsect]\r[section:write file::write]\r(Inherited from `file_stdio`)\r\r[indexterm2 write..file]\r
1692 Write to the open file. \r[heading Synopsis]\r```\rstd::size_t\rwrite(\r    void const* buffer,\r    std::size_t n,\r    error_code& ec);\r```\r\r[heading Description]\r
1693 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
1694 The buffer holding the data to write\r  ]]\r  [[`n`][\r    
1695 The number of bytes to write\r  ]]\r  [[`ec`][\r    
1696 Set to the error, if any occurred \r  ]]\r]\r
1697 [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__file_mode file_mode]\r[indexterm1 file_mode]\r
1698 File open modes. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/file_base.hpp]\r\r\r```\renum file_mode\r```\r\r[indexterm2 read..file_mode]\r[indexterm2 scan..file_mode]\r[indexterm2 write..file_mode]\r[indexterm2 write_new..file_mode]\r[indexterm2 write_existing..file_mode]\r[indexterm2 append..file_mode]\r[indexterm2 append_existing..file_mode]\r[heading Values]\r[table [[Name][Description]]\r  [[[^read]][Random read-only access to an existing file. \r\r]]\r  [[[^scan]][Sequential read-only access to an existing file. \r\r]]\r  [[[^write]][Random reading and writing to a new or truncated file. \r\rThis mode permits random-access reading and writing
1699 for the specified file. If the file does not exist
1700 prior to the function call, it is created with an
1701 initial size of zero bytes. Otherwise if the file
1702 already exists, the size is truncated to zero bytes.
1703  ]]\r  [[[^write_new]][Random reading and writing to a new file only. \r\rThis mode permits random-access reading and writing
1704 for the specified file. The file will be created with
1705 an initial size of zero bytes. If the file already exists
1706 prior to the function call, an error is returned and
1707 no file is opened.
1708  ]]\r  [[[^write_existing]][Random write-only access to existing file. \r\rIf the file does not exist, an error is generated.
1709  ]]\r  [[[^append]][Appending to a new or truncated file. \r\rThe current file position shall be set to the end of
1710 the file prior to each write.
1711
1712 @li If the file does not exist, it is created.
1713
1714 @li If the file exists, it is truncated to
1715 zero size upon opening.
1716  ]]\r  [[[^append_existing]][Appending to an existing file. \r\rThe current file position shall be set to the end of
1717 the file prior to each write.
1718
1719 If the file does not exist, an error is generated.
1720  ]]\r]\r\r[heading Description]\r
1721 These modes are used when opening files using instances of the ['File] concept.
1722 [heading See Also]\r
1723 [link beast.ref.boost__beast__file_stdio `file_stdio`] 
1724 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__file_posix file_posix]\r
1725 An implementation of File for POSIX systems. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/file_posix.hpp]\r\r\r\r```\rclass file_posix\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__file_posix.native_handle_type [*native_handle_type]]]\r    [\r      The type of the underlying file handle. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__file_posix.close [*close]]]\r    [\r      Close the file if open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.file_posix [*file_posix]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.is_open [*is_open]]]\r    [\r      Returns true if the file is open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.native_handle [*native_handle]]]\r    [\r      Returns the native handle associated with the file. \r\r      Set the native handle associated with the file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.open [*open]]]\r    [\r      Open a file at the given path with the specified mode. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.pos [*pos]]]\r    [\r      Return the current position in the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.read [*read]]]\r    [\r      Read from the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.seek [*seek]]]\r    [\r      Adjust the current position in the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.size [*size]]]\r    [\r      Return the size of the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.write [*write]]]\r    [\r      Write to the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_posix.file_posix_dtor_ [*~file_posix]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
1726 This class implements a ['File] using POSIX interfaces. [section:close file_posix::close]\r[indexterm2 close..file_posix]\r
1727 Close the file if open. \r[heading Synopsis]\r```\rvoid\rclose(\r    error_code& ec);\r```\r\r[heading Description]\r
1728 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1729 Set to the error, if any occurred. \r  ]]\r]\r
1730 [endsect]\r[section:file_posix file_posix::file_posix]\r[indexterm2 file_posix..file_posix]\r
1731 Constructor. ```\r``[link beast.ref.boost__beast__file_posix.file_posix.overload1 file_posix]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_posix.file_posix.overload1 more...]]``\r\r``[link beast.ref.boost__beast__file_posix.file_posix.overload2 file_posix]``(\r    file_posix&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_posix.file_posix.overload2 more...]]``\r```\r[section:overload1 file_posix::file_posix (1 of 2 overloads)]\r
1732 Constructor. \r[heading Synopsis]\r```\rfile_posix();\r```\r\r[heading Description]\r
1733 There is no open file initially. [endsect]\r[section:overload2 file_posix::file_posix (2 of 2 overloads)]\r
1734 Constructor. \r[heading Synopsis]\r```\rfile_posix(\r    file_posix&& other);\r```\r\r[heading Description]\r
1735 The moved-from object behaves as if default constructed. [endsect]\r[endsect]\r\r[section:is_open file_posix::is_open]\r[indexterm2 is_open..file_posix]\r
1736 Returns `true` if the file is open. \r[heading Synopsis]\r```\rbool\ris_open() const;\r```\r\r[heading Description]\r[endsect]\r[section:native_handle file_posix::native_handle]\r[indexterm2 native_handle..file_posix]\r
1737 Returns the native handle associated with the file. ```\rnative_handle_type\r``[link beast.ref.boost__beast__file_posix.native_handle.overload1 native_handle]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_posix.native_handle.overload1 more...]]``\r\r```\r
1738 Set the native handle associated with the file. ```\rvoid\r``[link beast.ref.boost__beast__file_posix.native_handle.overload2 native_handle]``(\r    native_handle_type fd);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_posix.native_handle.overload2 more...]]``\r```\r[section:overload1 file_posix::native_handle (1 of 2 overloads)]\r
1739 Returns the native handle associated with the file. \r[heading Synopsis]\r```\rnative_handle_type\rnative_handle() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 file_posix::native_handle (2 of 2 overloads)]\r
1740 Set the native handle associated with the file. \r[heading Synopsis]\r```\rvoid\rnative_handle(\r    native_handle_type fd);\r```\r\r[heading Description]\r
1741 If the file is open it is first closed.
1742 [heading Parameters]\r[table [[Name][Description]]\r  [[`fd`][\r    
1743 The native file handle to assign. \r  ]]\r]\r
1744 [endsect]\r[endsect]\r\r[section:native_handle_type file_posix::native_handle_type]\r[indexterm2 native_handle_type..file_posix]\r
1745 The type of the underlying file handle. \r[heading Synopsis]\r\r```\rusing native_handle_type = int;\r```\r\r[heading Description]\r
1746 This is platform-specific. [endsect]\r[section:open file_posix::open]\r[indexterm2 open..file_posix]\r
1747 Open a file at the given path with the specified mode. \r[heading Synopsis]\r```\rvoid\ropen(\r    char const* path,\r    file_mode mode,\r    error_code& ec);\r```\r\r[heading Description]\r
1748 [heading Parameters]\r[table [[Name][Description]]\r  [[`path`][\r    
1749 The utf-8 encoded path to the file\r  ]]\r  [[`mode`][\r    
1750 The file mode to use\r  ]]\r  [[`ec`][\r    
1751 Set to the error, if any occurred \r  ]]\r]\r
1752 [endsect]\r[section:operator_eq_ file_posix::operator=]\r[indexterm2 operator=..file_posix]\r
1753 Assignment. \r[heading Synopsis]\r```\rfile_posix&\roperator=(\r    file_posix&& other);\r```\r\r[heading Description]\r
1754 The moved-from object behaves as if default constructed. [endsect]\r[section:pos file_posix::pos]\r[indexterm2 pos..file_posix]\r
1755 Return the current position in the open file. \r[heading Synopsis]\r```\rstd::uint64_t\rpos(\r    error_code& ec) const;\r```\r\r[heading Description]\r
1756 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1757 Set to the error, if any occurred\r  ]]\r]\r
1758 [heading Return Value]
1759 The offset in bytes from the beginning of the file 
1760 [endsect]\r[section:read file_posix::read]\r[indexterm2 read..file_posix]\r
1761 Read from the open file. \r[heading Synopsis]\r```\rstd::size_t\rread(\r    void* buffer,\r    std::size_t n,\r    error_code& ec) const;\r```\r\r[heading Description]\r
1762 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
1763 The buffer for storing the result of the read\r  ]]\r  [[`n`][\r    
1764 The number of bytes to read\r  ]]\r  [[`ec`][\r    
1765 Set to the error, if any occurred \r  ]]\r]\r
1766 [endsect]\r[section:seek file_posix::seek]\r[indexterm2 seek..file_posix]\r
1767 Adjust the current position in the open file. \r[heading Synopsis]\r```\rvoid\rseek(\r    std::uint64_t offset,\r    error_code& ec);\r```\r\r[heading Description]\r
1768 [heading Parameters]\r[table [[Name][Description]]\r  [[`offset`][\r    
1769 The offset in bytes from the beginning of the file\r  ]]\r  [[`ec`][\r    
1770 Set to the error, if any occurred \r  ]]\r]\r
1771 [endsect]\r[section:size file_posix::size]\r[indexterm2 size..file_posix]\r
1772 Return the size of the open file. \r[heading Synopsis]\r```\rstd::uint64_t\rsize(\r    error_code& ec) const;\r```\r\r[heading Description]\r
1773 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1774 Set to the error, if any occurred\r  ]]\r]\r
1775 [heading Return Value]
1776 The size in bytes 
1777 [endsect]\r[section:write file_posix::write]\r[indexterm2 write..file_posix]\r
1778 Write to the open file. \r[heading Synopsis]\r```\rstd::size_t\rwrite(\r    void const* buffer,\r    std::size_t n,\r    error_code& ec);\r```\r\r[heading Description]\r
1779 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
1780 The buffer holding the data to write\r  ]]\r  [[`n`][\r    
1781 The number of bytes to write\r  ]]\r  [[`ec`][\r    
1782 Set to the error, if any occurred \r  ]]\r]\r
1783 [endsect]\r[section:file_posix_dtor_ file_posix::~file_posix]\r[indexterm2 ~file_posix..file_posix]\r
1784 Destructor. \r[heading Synopsis]\r```\r~file_posix();\r```\r\r[heading Description]\r
1785 If the file is open it is first closed. [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__file_stdio file_stdio]\r
1786 An implementation of File which uses cstdio. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/file_stdio.hpp]\r\r\r\r```\rclass file_stdio\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__file_stdio.native_handle_type [*native_handle_type]]]\r    [\r      The type of the underlying file handle. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__file_stdio.close [*close]]]\r    [\r      Close the file if open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.file_stdio [*file_stdio]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.is_open [*is_open]]]\r    [\r      Returns true if the file is open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.native_handle [*native_handle]]]\r    [\r      Returns the native handle associated with the file. \r\r      Set the native handle associated with the file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.open [*open]]]\r    [\r      Open a file at the given path with the specified mode. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.pos [*pos]]]\r    [\r      Return the current position in the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.read [*read]]]\r    [\r      Read from the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.seek [*seek]]]\r    [\r      Adjust the current position in the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.size [*size]]]\r    [\r      Return the size of the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.write [*write]]]\r    [\r      Write to the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_stdio.file_stdio_dtor_ [*~file_stdio]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
1787 This class implements a file using the interfaces present in the C++ Standard Library, in `<stdio>`. [section:close file_stdio::close]\r[indexterm2 close..file_stdio]\r
1788 Close the file if open. \r[heading Synopsis]\r```\rvoid\rclose(\r    error_code& ec);\r```\r\r[heading Description]\r
1789 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1790 Set to the error, if any occurred. \r  ]]\r]\r
1791 [endsect]\r[section:file_stdio file_stdio::file_stdio]\r[indexterm2 file_stdio..file_stdio]\r
1792 Constructor. ```\r``[link beast.ref.boost__beast__file_stdio.file_stdio.overload1 file_stdio]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_stdio.file_stdio.overload1 more...]]``\r\r``[link beast.ref.boost__beast__file_stdio.file_stdio.overload2 file_stdio]``(\r    file_stdio&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_stdio.file_stdio.overload2 more...]]``\r```\r[section:overload1 file_stdio::file_stdio (1 of 2 overloads)]\r
1793 Constructor. \r[heading Synopsis]\r```\rfile_stdio();\r```\r\r[heading Description]\r
1794 There is no open file initially. [endsect]\r[section:overload2 file_stdio::file_stdio (2 of 2 overloads)]\r
1795 Constructor. \r[heading Synopsis]\r```\rfile_stdio(\r    file_stdio&& other);\r```\r\r[heading Description]\r
1796 The moved-from object behaves as if default constructed. [endsect]\r[endsect]\r\r[section:is_open file_stdio::is_open]\r[indexterm2 is_open..file_stdio]\r
1797 Returns `true` if the file is open. \r[heading Synopsis]\r```\rbool\ris_open() const;\r```\r\r[heading Description]\r[endsect]\r[section:native_handle file_stdio::native_handle]\r[indexterm2 native_handle..file_stdio]\r
1798 Returns the native handle associated with the file. ```\rFILE*\r``[link beast.ref.boost__beast__file_stdio.native_handle.overload1 native_handle]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_stdio.native_handle.overload1 more...]]``\r\r```\r
1799 Set the native handle associated with the file. ```\rvoid\r``[link beast.ref.boost__beast__file_stdio.native_handle.overload2 native_handle]``(\r    FILE* f);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_stdio.native_handle.overload2 more...]]``\r```\r[section:overload1 file_stdio::native_handle (1 of 2 overloads)]\r
1800 Returns the native handle associated with the file. \r[heading Synopsis]\r```\rFILE*\rnative_handle() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 file_stdio::native_handle (2 of 2 overloads)]\r
1801 Set the native handle associated with the file. \r[heading Synopsis]\r```\rvoid\rnative_handle(\r    FILE* f);\r```\r\r[heading Description]\r
1802 If the file is open it is first closed.
1803 [heading Parameters]\r[table [[Name][Description]]\r  [[`f`][\r    
1804 The native file handle to assign. \r  ]]\r]\r
1805 [endsect]\r[endsect]\r\r[section:native_handle_type file_stdio::native_handle_type]\r[indexterm2 native_handle_type..file_stdio]\r
1806 The type of the underlying file handle. \r[heading Synopsis]\r\r```\rusing native_handle_type = FILE*;\r```\r\r[heading Description]\r
1807 This is platform-specific. [endsect]\r[section:open file_stdio::open]\r[indexterm2 open..file_stdio]\r
1808 Open a file at the given path with the specified mode. \r[heading Synopsis]\r```\rvoid\ropen(\r    char const* path,\r    file_mode mode,\r    error_code& ec);\r```\r\r[heading Description]\r
1809 [heading Parameters]\r[table [[Name][Description]]\r  [[`path`][\r    
1810 The utf-8 encoded path to the file\r  ]]\r  [[`mode`][\r    
1811 The file mode to use\r  ]]\r  [[`ec`][\r    
1812 Set to the error, if any occurred \r  ]]\r]\r
1813 [endsect]\r[section:operator_eq_ file_stdio::operator=]\r[indexterm2 operator=..file_stdio]\r
1814 Assignment. \r[heading Synopsis]\r```\rfile_stdio&\roperator=(\r    file_stdio&& other);\r```\r\r[heading Description]\r
1815 The moved-from object behaves as if default constructed. [endsect]\r[section:pos file_stdio::pos]\r[indexterm2 pos..file_stdio]\r
1816 Return the current position in the open file. \r[heading Synopsis]\r```\rstd::uint64_t\rpos(\r    error_code& ec) const;\r```\r\r[heading Description]\r
1817 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1818 Set to the error, if any occurred\r  ]]\r]\r
1819 [heading Return Value]
1820 The offset in bytes from the beginning of the file 
1821 [endsect]\r[section:read file_stdio::read]\r[indexterm2 read..file_stdio]\r
1822 Read from the open file. \r[heading Synopsis]\r```\rstd::size_t\rread(\r    void* buffer,\r    std::size_t n,\r    error_code& ec) const;\r```\r\r[heading Description]\r
1823 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
1824 The buffer for storing the result of the read\r  ]]\r  [[`n`][\r    
1825 The number of bytes to read\r  ]]\r  [[`ec`][\r    
1826 Set to the error, if any occurred \r  ]]\r]\r
1827 [endsect]\r[section:seek file_stdio::seek]\r[indexterm2 seek..file_stdio]\r
1828 Adjust the current position in the open file. \r[heading Synopsis]\r```\rvoid\rseek(\r    std::uint64_t offset,\r    error_code& ec);\r```\r\r[heading Description]\r
1829 [heading Parameters]\r[table [[Name][Description]]\r  [[`offset`][\r    
1830 The offset in bytes from the beginning of the file\r  ]]\r  [[`ec`][\r    
1831 Set to the error, if any occurred \r  ]]\r]\r
1832 [endsect]\r[section:size file_stdio::size]\r[indexterm2 size..file_stdio]\r
1833 Return the size of the open file. \r[heading Synopsis]\r```\rstd::uint64_t\rsize(\r    error_code& ec) const;\r```\r\r[heading Description]\r
1834 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1835 Set to the error, if any occurred\r  ]]\r]\r
1836 [heading Return Value]
1837 The size in bytes 
1838 [endsect]\r[section:write file_stdio::write]\r[indexterm2 write..file_stdio]\r
1839 Write to the open file. \r[heading Synopsis]\r```\rstd::size_t\rwrite(\r    void const* buffer,\r    std::size_t n,\r    error_code& ec);\r```\r\r[heading Description]\r
1840 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
1841 The buffer holding the data to write\r  ]]\r  [[`n`][\r    
1842 The number of bytes to write\r  ]]\r  [[`ec`][\r    
1843 Set to the error, if any occurred \r  ]]\r]\r
1844 [endsect]\r[section:file_stdio_dtor_ file_stdio::~file_stdio]\r[indexterm2 ~file_stdio..file_stdio]\r
1845 Destructor. \r[heading Synopsis]\r```\r~file_stdio();\r```\r\r[heading Description]\r
1846 If the file is open it is first closed. [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__file_win32 file_win32]\r
1847 An implementation of File for Win32. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/file_win32.hpp]\r\r\r\r```\rclass file_win32\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__file_win32.native_handle_type [*native_handle_type]]]\r    [\r      The type of the underlying file handle. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__file_win32.close [*close]]]\r    [\r      Close the file if open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.file_win32 [*file_win32]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.is_open [*is_open]]]\r    [\r      Returns true if the file is open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.native_handle [*native_handle]]]\r    [\r      Returns the native handle associated with the file. \r\r      Set the native handle associated with the file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.open [*open]]]\r    [\r      Open a file at the given path with the specified mode. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.pos [*pos]]]\r    [\r      Return the current position in the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.read [*read]]]\r    [\r      Read from the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.seek [*seek]]]\r    [\r      Adjust the current position in the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.size [*size]]]\r    [\r      Return the size of the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.write [*write]]]\r    [\r      Write to the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__file_win32.file_win32_dtor_ [*~file_win32]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
1848 This class implements a ['File] using Win32 native interfaces. [section:close file_win32::close]\r[indexterm2 close..file_win32]\r
1849 Close the file if open. \r[heading Synopsis]\r```\rvoid\rclose(\r    error_code& ec);\r```\r\r[heading Description]\r
1850 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1851 Set to the error, if any occurred. \r  ]]\r]\r
1852 [endsect]\r[section:file_win32 file_win32::file_win32]\r[indexterm2 file_win32..file_win32]\r
1853 Constructor. ```\r``[link beast.ref.boost__beast__file_win32.file_win32.overload1 file_win32]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_win32.file_win32.overload1 more...]]``\r\r``[link beast.ref.boost__beast__file_win32.file_win32.overload2 file_win32]``(\r    file_win32&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_win32.file_win32.overload2 more...]]``\r```\r[section:overload1 file_win32::file_win32 (1 of 2 overloads)]\r
1854 Constructor. \r[heading Synopsis]\r```\rfile_win32();\r```\r\r[heading Description]\r
1855 There is no open file initially. [endsect]\r[section:overload2 file_win32::file_win32 (2 of 2 overloads)]\r
1856 Constructor. \r[heading Synopsis]\r```\rfile_win32(\r    file_win32&& other);\r```\r\r[heading Description]\r
1857 The moved-from object behaves as if default constructed. [endsect]\r[endsect]\r\r[section:is_open file_win32::is_open]\r[indexterm2 is_open..file_win32]\r
1858 Returns `true` if the file is open. \r[heading Synopsis]\r```\rbool\ris_open() const;\r```\r\r[heading Description]\r[endsect]\r[section:native_handle file_win32::native_handle]\r[indexterm2 native_handle..file_win32]\r
1859 Returns the native handle associated with the file. ```\rnative_handle_type\r``[link beast.ref.boost__beast__file_win32.native_handle.overload1 native_handle]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_win32.native_handle.overload1 more...]]``\r\r```\r
1860 Set the native handle associated with the file. ```\rvoid\r``[link beast.ref.boost__beast__file_win32.native_handle.overload2 native_handle]``(\r    native_handle_type h);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__file_win32.native_handle.overload2 more...]]``\r```\r[section:overload1 file_win32::native_handle (1 of 2 overloads)]\r
1861 Returns the native handle associated with the file. \r[heading Synopsis]\r```\rnative_handle_type\rnative_handle();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 file_win32::native_handle (2 of 2 overloads)]\r
1862 Set the native handle associated with the file. \r[heading Synopsis]\r```\rvoid\rnative_handle(\r    native_handle_type h);\r```\r\r[heading Description]\r
1863 If the file is open it is first closed.
1864 [heading Parameters]\r[table [[Name][Description]]\r  [[`h`][\r    
1865 The native file handle to assign. \r  ]]\r]\r
1866 [endsect]\r[endsect]\r\r[section:native_handle_type file_win32::native_handle_type]\r[indexterm2 native_handle_type..file_win32]\r
1867 The type of the underlying file handle. \r[heading Synopsis]\r\r```\rusing native_handle_type = HANDLE;\r```\r\r[heading Description]\r
1868 This is platform-specific. [endsect]\r[section:open file_win32::open]\r[indexterm2 open..file_win32]\r
1869 Open a file at the given path with the specified mode. \r[heading Synopsis]\r```\rvoid\ropen(\r    char const* path,\r    file_mode mode,\r    error_code& ec);\r```\r\r[heading Description]\r
1870 [heading Parameters]\r[table [[Name][Description]]\r  [[`path`][\r    
1871 The utf-8 encoded path to the file\r  ]]\r  [[`mode`][\r    
1872 The file mode to use\r  ]]\r  [[`ec`][\r    
1873 Set to the error, if any occurred \r  ]]\r]\r
1874 [endsect]\r[section:operator_eq_ file_win32::operator=]\r[indexterm2 operator=..file_win32]\r
1875 Assignment. \r[heading Synopsis]\r```\rfile_win32&\roperator=(\r    file_win32&& other);\r```\r\r[heading Description]\r
1876 The moved-from object behaves as if default constructed. [endsect]\r[section:pos file_win32::pos]\r[indexterm2 pos..file_win32]\r
1877 Return the current position in the open file. \r[heading Synopsis]\r```\rstd::uint64_t\rpos(\r    error_code& ec);\r```\r\r[heading Description]\r
1878 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1879 Set to the error, if any occurred\r  ]]\r]\r
1880 [heading Return Value]
1881 The offset in bytes from the beginning of the file 
1882 [endsect]\r[section:read file_win32::read]\r[indexterm2 read..file_win32]\r
1883 Read from the open file. \r[heading Synopsis]\r```\rstd::size_t\rread(\r    void* buffer,\r    std::size_t n,\r    error_code& ec);\r```\r\r[heading Description]\r
1884 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
1885 The buffer for storing the result of the read\r  ]]\r  [[`n`][\r    
1886 The number of bytes to read\r  ]]\r  [[`ec`][\r    
1887 Set to the error, if any occurred \r  ]]\r]\r
1888 [endsect]\r[section:seek file_win32::seek]\r[indexterm2 seek..file_win32]\r
1889 Adjust the current position in the open file. \r[heading Synopsis]\r```\rvoid\rseek(\r    std::uint64_t offset,\r    error_code& ec);\r```\r\r[heading Description]\r
1890 [heading Parameters]\r[table [[Name][Description]]\r  [[`offset`][\r    
1891 The offset in bytes from the beginning of the file\r  ]]\r  [[`ec`][\r    
1892 Set to the error, if any occurred \r  ]]\r]\r
1893 [endsect]\r[section:size file_win32::size]\r[indexterm2 size..file_win32]\r
1894 Return the size of the open file. \r[heading Synopsis]\r```\rstd::uint64_t\rsize(\r    error_code& ec) const;\r```\r\r[heading Description]\r
1895 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
1896 Set to the error, if any occurred\r  ]]\r]\r
1897 [heading Return Value]
1898 The size in bytes 
1899 [endsect]\r[section:write file_win32::write]\r[indexterm2 write..file_win32]\r
1900 Write to the open file. \r[heading Synopsis]\r```\rstd::size_t\rwrite(\r    void const* buffer,\r    std::size_t n,\r    error_code& ec);\r```\r\r[heading Description]\r
1901 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
1902 The buffer holding the data to write\r  ]]\r  [[`n`][\r    
1903 The number of bytes to write\r  ]]\r  [[`ec`][\r    
1904 Set to the error, if any occurred \r  ]]\r]\r
1905 [endsect]\r[section:file_win32_dtor_ file_win32::~file_win32]\r[indexterm2 ~file_win32..file_win32]\r
1906 Destructor. \r[heading Synopsis]\r```\r~file_win32();\r```\r\r[heading Description]\r
1907 If the file is open it is first closed. [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__flat_buffer flat_buffer]\r[indexterm1 flat_buffer]\r
1908 A flat buffer which uses the default allocator. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/flat_buffer.hpp]\r\r\r\r```\rusing flat_buffer = basic_flat_buffer< std::allocator< char > >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.allocator_type [*allocator_type]]]\r    [\r      The type of allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer [*basic_flat_buffer]]]\r    [\r      Constructor. \r\r      Move Constructor. \r\r      Copy Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.capacity [*capacity]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.clear [*clear]]]\r    [\r      Set the size of the readable and writable bytes to zero. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.get_allocator [*get_allocator]]]\r    [\r      Returns a copy of the allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.max_size [*max_size]]]\r    [\r      Set the maximum allowed capacity. \r\r      Return the maximum number of bytes, both readable and writable, that can ever be held. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.operator_eq_ [*operator=]]]\r    [\r      Move Assignment. \r\r      Copy Assignment. \r\r      Copy assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.reserve [*reserve]]]\r    [\r      Guarantee a minimum capacity. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.shrink_to_fit [*shrink_to_fit]]]\r    [\r      Reallocate the buffer to fit the readable bytes exactly. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.basic_flat_buffer_dtor_ [*~basic_flat_buffer]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Friends]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_flat_buffer.swap [*swap]]]\r    [\r      Exchange two dynamic buffers. \r    ]\r  ]\r]\r
1909 A dynamic buffer encapsulates memory storage that may be automatically resized as required, where the memory is divided into two regions: readable bytes followed by writable bytes. These memory regions are internal to the dynamic buffer, but direct access to the elements is provided to permit them to be efficiently used with I/O operations.
1910 Objects of this type meet the requirements of ['DynamicBuffer] and have the following additional properties:
1911
1912 * A mutable buffer sequence representing the readable bytes is returned by [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] when `this` is non-const.
1913
1914
1915 * A configurable maximum buffer size may be set upon construction. Attempts to exceed the buffer size will throw `std::length_error`.
1916
1917
1918 * Buffer sequences representing the readable and writable bytes, returned by [link beast.ref.boost__beast__basic_flat_buffer.data `basic_flat_buffer::data`] and [link beast.ref.boost__beast__basic_flat_buffer.prepare `basic_flat_buffer::prepare`], will have length one.
1919
1920 Upon construction, a maximum size for the buffer may be specified. If this limit is exceeded, the `std::length_error` exception will be thrown.
1921 [heading Remarks]\r
1922 This class is designed for use with algorithms that take dynamic buffers as parameters, and are optimized for the case where the input sequence or output sequence is stored in a single contiguous buffer. 
1923 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__flat_static_buffer flat_static_buffer]\r
1924 A ['DynamicBuffer] with a fixed size internal buffer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/flat_static_buffer.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N>\rclass flat_static_buffer :\r    public flat_static_buffer_base\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.base [*base]]]\r    [\r      Returns the flat_static_buffer_base portion of this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.capacity [*capacity]]]\r    [\r      Return the maximum sum of input and output sizes that can be held without an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.clear [*clear]]]\r    [\r      Clear the readable and writable bytes to zero. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.flat_static_buffer [*flat_static_buffer]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.max_size [*max_size]]]\r    [\r      Return the maximum sum of the input and output sequence sizes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r]\r[heading Protected Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer.reset [*reset]]]\r    [\r      Reset the pointed-to buffer. \r    ]\r  ]\r]\r\r[heading Description]\r
1925 Buffer sequences returned by [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] and [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] will always be of length one. This implements a dynamic buffer using no memory allocations.
1926 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`N`][\r    
1927 The number of bytes in the internal buffer.\r  ]]\r]\r
1928 [heading Remarks]\r
1929 To reduce the number of template instantiations when passing objects of this type in a deduced context, the signature of the receiving function should use [link beast.ref.boost__beast__flat_static_buffer_base `flat_static_buffer_base`] instead.
1930 [heading See Also]\r
1931 [link beast.ref.boost__beast__flat_static_buffer_base `flat_static_buffer_base`] 
1932 [section:base flat_static_buffer::base]\r[indexterm2 base..flat_static_buffer]\r
1933 Returns the [link beast.ref.boost__beast__flat_static_buffer_base `flat_static_buffer_base`] portion of this object. ```\rflat_static_buffer_base&\r``[link beast.ref.boost__beast__flat_static_buffer.base.overload1 base]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_static_buffer.base.overload1 more...]]``\r\rflat_static_buffer_base const &\r``[link beast.ref.boost__beast__flat_static_buffer.base.overload2 base]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_static_buffer.base.overload2 more...]]``\r```\r[section:overload1 flat_static_buffer::base (1 of 2 overloads)]\r
1934 Returns the [link beast.ref.boost__beast__flat_static_buffer_base `flat_static_buffer_base`] portion of this object. \r[heading Synopsis]\r```\rflat_static_buffer_base&\rbase();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 flat_static_buffer::base (2 of 2 overloads)]\r
1935 Returns the [link beast.ref.boost__beast__flat_static_buffer_base `flat_static_buffer_base`] portion of this object. \r[heading Synopsis]\r```\rflat_static_buffer_base const &\rbase() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:capacity flat_static_buffer::capacity]\r[indexterm2 capacity..flat_static_buffer]\r
1936 Return the maximum sum of input and output sizes that can be held without an allocation. \r[heading Synopsis]\r```\rstd::size_t constexpr\rcapacity() const;\r```\r\r[heading Description]\r[endsect]\r[section:cdata flat_static_buffer::cdata]\r[indexterm2 cdata..flat_static_buffer]\r
1937 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rcdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:clear flat_static_buffer::clear]\r[indexterm2 clear..flat_static_buffer]\r
1938 Clear the readable and writable bytes to zero. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
1939 This function causes the readable and writable bytes to become empty. The capacity is not changed.
1940 Buffer sequences previously obtained using [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] or [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] become invalid.
1941 [heading Exception Safety]
1942
1943 No-throw guarantee. [endsect]\r[section:commit flat_static_buffer::commit]\r[indexterm2 commit..flat_static_buffer]\r
1944 Append writable bytes to the readable bytes. \r[heading Synopsis]\r```\rvoid\rcommit(\r    std::size_t n);\r```\r\r[heading Description]\r
1945 Appends n bytes from the start of the writable bytes to the end of the readable bytes. The remainder of the writable bytes are discarded. If n is greater than the number of writable bytes, all writable bytes are appended to the readable bytes.
1946 All buffers sequences previously obtained using [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] or [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] are invalidated.
1947 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
1948 The number of bytes to append. If this number is greater than the number of writable bytes, all writable bytes are appended.\r  ]]\r]\r
1949 [heading Exception Safety]
1950
1951 No-throw guarantee. [endsect]\r[section:const_buffers_type flat_static_buffer::const_buffers_type]\r[indexterm2 const_buffers_type..flat_static_buffer]\r
1952 The ConstBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing const_buffers_type = net::const_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:consume flat_static_buffer::consume]\r[indexterm2 consume..flat_static_buffer]\r
1953 Remove bytes from beginning of the readable bytes. \r[heading Synopsis]\r```\rvoid\rconsume(\r    std::size_t n);\r```\r\r[heading Description]\r
1954 Removes n bytes from the beginning of the readable bytes.
1955 All buffers sequences previously obtained using [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] or [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] are invalidated.
1956 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
1957 The number of bytes to remove. If this number is greater than the number of readable bytes, all readable bytes are removed.\r  ]]\r]\r
1958 [heading Exception Safety]
1959
1960 No-throw guarantee. [endsect]\r[section:data flat_static_buffer::data]\r[indexterm2 data..flat_static_buffer]\r
1961 Returns a constant buffer sequence representing the readable bytes. ```\rconst_buffers_type\r``[link beast.ref.boost__beast__flat_static_buffer.data.overload1 data]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_static_buffer.data.overload1 more...]]``\r\r```\r
1962 Returns a mutable buffer sequence representing the readable bytes. ```\rmutable_data_type\r``[link beast.ref.boost__beast__flat_static_buffer.data.overload2 data]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_static_buffer.data.overload2 more...]]``\r```\r[section:overload1 flat_static_buffer::data (1 of 2 overloads)]\r
1963 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 flat_static_buffer::data (2 of 2 overloads)]\r
1964 Returns a mutable buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rmutable_data_type\rdata();\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:flat_static_buffer flat_static_buffer::flat_static_buffer]\r[indexterm2 flat_static_buffer..flat_static_buffer]\r
1965 Constructor. ```\r``[link beast.ref.boost__beast__flat_static_buffer.flat_static_buffer.overload1 flat_static_buffer]``(\r    flat_static_buffer const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_static_buffer.flat_static_buffer.overload1 more...]]``\r\r``[link beast.ref.boost__beast__flat_static_buffer.flat_static_buffer.overload2 flat_static_buffer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_static_buffer.flat_static_buffer.overload2 more...]]``\r```\r[section:overload1 flat_static_buffer::flat_static_buffer (1 of 2 overloads)]\r
1966 Constructor. \r[heading Synopsis]\r```\rflat_static_buffer(\r    flat_static_buffer const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 flat_static_buffer::flat_static_buffer (2 of 2 overloads)]\r
1967 Constructor. \r[heading Synopsis]\r```\rflat_static_buffer();\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:max_size flat_static_buffer::max_size]\r[indexterm2 max_size..flat_static_buffer]\r
1968 Return the maximum sum of the input and output sequence sizes. \r[heading Synopsis]\r```\rstd::size_t constexpr\rmax_size() const;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_buffers_type flat_static_buffer::mutable_buffers_type]\r[indexterm2 mutable_buffers_type..flat_static_buffer]\r
1969 The MutableBufferSequence used to represent the writable bytes. \r[heading Synopsis]\r\r```\rusing mutable_buffers_type = net::mutable_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_data_type flat_static_buffer::mutable_data_type]\r[indexterm2 mutable_data_type..flat_static_buffer]\r
1970 The MutableBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing mutable_data_type = net::mutable_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ flat_static_buffer::operator=]\r[indexterm2 operator=..flat_static_buffer]\r
1971 Assignment. \r[heading Synopsis]\r```\rflat_static_buffer&\roperator=(\r    flat_static_buffer const&);\r```\r\r[heading Description]\r[endsect]\r[section:prepare flat_static_buffer::prepare]\r[indexterm2 prepare..flat_static_buffer]\r
1972 Returns a mutable buffer sequence representing writable bytes. \r[heading Synopsis]\r```\rmutable_buffers_type\rprepare(\r    std::size_t n);\r```\r\r[heading Description]\r
1973 Returns a mutable buffer sequence representing the writable bytes containing exactly `n` bytes of storage.
1974 All buffers sequences previously obtained using [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] or [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] are invalidated.
1975 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
1976 The desired number of bytes in the returned buffer sequence.\r  ]]\r]\r
1977 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
1978 if `size() + n` exceeds `max_size()`.\r  ]]\r]\r
1979 [heading Exception Safety]
1980
1981 Strong guarantee. [endsect]\r[section:reset flat_static_buffer::reset]\r[indexterm2 reset..flat_static_buffer]\r
1982 Reset the pointed-to buffer. \r[heading Synopsis]\r```\rvoid\rreset(\r    void* p,\r    std::size_t n);\r```\r\r[heading Description]\r
1983 This function resets the internal state to the buffer provided. All input and output sequences are invalidated. This function allows the derived class to construct its members before initializing the static buffer.
1984 [heading Parameters]\r[table [[Name][Description]]\r  [[`p`][\r    
1985 A pointer to valid storage of at least `n` bytes.\r  ]]\r  [[`n`][\r    
1986 The number of valid bytes pointed to by `p`.\r  ]]\r]\r
1987 [heading Exception Safety]
1988
1989 No-throw guarantee. [endsect]\r[section:size flat_static_buffer::size]\r[indexterm2 size..flat_static_buffer]\r
1990 Returns the number of readable bytes. \r[heading Synopsis]\r```\rstd::size_t\rsize() const;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__flat_static_buffer_base flat_static_buffer_base]\r
1991 A dynamic buffer using a fixed size internal buffer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/flat_static_buffer.hpp]\r\r\r\r```\rclass flat_static_buffer_base\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.capacity [*capacity]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.clear [*clear]]]\r    [\r      Clear the readable and writable bytes to zero. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.flat_static_buffer_base [*flat_static_buffer_base]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.max_size [*max_size]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can ever be held. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r]\r[heading Protected Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.flat_static_buffer_base [*flat_static_buffer_base]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_static_buffer_base.reset [*reset]]]\r    [\r      Reset the pointed-to buffer. \r    ]\r  ]\r]\r\r[heading Description]\r
1992 A dynamic buffer encapsulates memory storage that may be automatically resized as required, where the memory is divided into two regions: readable bytes followed by writable bytes. These memory regions are internal to the dynamic buffer, but direct access to the elements is provided to permit them to be efficiently used with I/O operations.
1993 Objects of this type meet the requirements of ['DynamicBuffer] and have the following additional properties:
1994
1995 * A mutable buffer sequence representing the readable bytes is returned by [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] when `this` is non-const.
1996
1997
1998 * Buffer sequences representing the readable and writable bytes, returned by [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] and [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`], will have length one.
1999
2000
2001 * Ownership of the underlying storage belongs to the derived class.
2002
2003 [heading Remarks]\r
2004 Variables are usually declared using the template class [link beast.ref.boost__beast__flat_static_buffer `flat_static_buffer`]; however, to reduce the number of template instantiations, objects should be passed `flat_static_buffer_base&`.
2005 [heading See Also]\r
2006 [link beast.ref.boost__beast__flat_static_buffer `flat_static_buffer`] 
2007 [section:capacity flat_static_buffer_base::capacity]\r[indexterm2 capacity..flat_static_buffer_base]\r
2008 Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r[heading Synopsis]\r```\rstd::size_t\rcapacity() const;\r```\r\r[heading Description]\r[endsect]\r[section:cdata flat_static_buffer_base::cdata]\r[indexterm2 cdata..flat_static_buffer_base]\r
2009 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rcdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:clear flat_static_buffer_base::clear]\r[indexterm2 clear..flat_static_buffer_base]\r
2010 Clear the readable and writable bytes to zero. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
2011 This function causes the readable and writable bytes to become empty. The capacity is not changed.
2012 Buffer sequences previously obtained using [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] or [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] become invalid.
2013 [heading Exception Safety]
2014
2015 No-throw guarantee. [endsect]\r[section:commit flat_static_buffer_base::commit]\r[indexterm2 commit..flat_static_buffer_base]\r
2016 Append writable bytes to the readable bytes. \r[heading Synopsis]\r```\rvoid\rcommit(\r    std::size_t n);\r```\r\r[heading Description]\r
2017 Appends n bytes from the start of the writable bytes to the end of the readable bytes. The remainder of the writable bytes are discarded. If n is greater than the number of writable bytes, all writable bytes are appended to the readable bytes.
2018 All buffers sequences previously obtained using [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] or [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] are invalidated.
2019 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
2020 The number of bytes to append. If this number is greater than the number of writable bytes, all writable bytes are appended.\r  ]]\r]\r
2021 [heading Exception Safety]
2022
2023 No-throw guarantee. [endsect]\r[section:const_buffers_type flat_static_buffer_base::const_buffers_type]\r[indexterm2 const_buffers_type..flat_static_buffer_base]\r
2024 The ConstBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing const_buffers_type = net::const_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:consume flat_static_buffer_base::consume]\r[indexterm2 consume..flat_static_buffer_base]\r
2025 Remove bytes from beginning of the readable bytes. \r[heading Synopsis]\r```\rvoid\rconsume(\r    std::size_t n);\r```\r\r[heading Description]\r
2026 Removes n bytes from the beginning of the readable bytes.
2027 All buffers sequences previously obtained using [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] or [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] are invalidated.
2028 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
2029 The number of bytes to remove. If this number is greater than the number of readable bytes, all readable bytes are removed.\r  ]]\r]\r
2030 [heading Exception Safety]
2031
2032 No-throw guarantee. [endsect]\r[section:data flat_static_buffer_base::data]\r[indexterm2 data..flat_static_buffer_base]\r
2033 Returns a constant buffer sequence representing the readable bytes. ```\rconst_buffers_type\r``[link beast.ref.boost__beast__flat_static_buffer_base.data.overload1 data]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_static_buffer_base.data.overload1 more...]]``\r\r```\r
2034 Returns a mutable buffer sequence representing the readable bytes. ```\rmutable_data_type\r``[link beast.ref.boost__beast__flat_static_buffer_base.data.overload2 data]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_static_buffer_base.data.overload2 more...]]``\r```\r[section:overload1 flat_static_buffer_base::data (1 of 2 overloads)]\r
2035 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 flat_static_buffer_base::data (2 of 2 overloads)]\r
2036 Returns a mutable buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rmutable_data_type\rdata();\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:flat_static_buffer_base flat_static_buffer_base::flat_static_buffer_base]\r[indexterm2 flat_static_buffer_base..flat_static_buffer_base]\r
2037 Constructor. \r[heading Synopsis]\r```\rflat_static_buffer_base(\r    void* p,\r    std::size_t n);\r```\r\r[heading Description]\r
2038 This creates a dynamic buffer using the provided storage area.
2039 [heading Parameters]\r[table [[Name][Description]]\r  [[`p`][\r    
2040 A pointer to valid storage of at least `n` bytes.\r  ]]\r  [[`n`][\r    
2041 The number of valid bytes pointed to by `p`. \r  ]]\r]\r
2042 [endsect]\r[section:flat_static_buffer_base flat_static_buffer_base::flat_static_buffer_base]\r[indexterm2 flat_static_buffer_base..flat_static_buffer_base]\r
2043 Constructor. \r[heading Synopsis]\r```\rflat_static_buffer_base();\r```\r\r[heading Description]\r
2044 The buffer will be in an undefined state. It is necessary for the derived class to call [link beast.ref.boost__beast__flat_static_buffer.reset `flat_static_buffer::reset`] with a pointer and size in order to initialize the object. [endsect]\r[section:max_size flat_static_buffer_base::max_size]\r[indexterm2 max_size..flat_static_buffer_base]\r
2045 Return the maximum number of bytes, both readable and writable, that can ever be held. \r[heading Synopsis]\r```\rstd::size_t\rmax_size() const;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_buffers_type flat_static_buffer_base::mutable_buffers_type]\r[indexterm2 mutable_buffers_type..flat_static_buffer_base]\r
2046 The MutableBufferSequence used to represent the writable bytes. \r[heading Synopsis]\r\r```\rusing mutable_buffers_type = net::mutable_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_data_type flat_static_buffer_base::mutable_data_type]\r[indexterm2 mutable_data_type..flat_static_buffer_base]\r
2047 The MutableBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing mutable_data_type = net::mutable_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:prepare flat_static_buffer_base::prepare]\r[indexterm2 prepare..flat_static_buffer_base]\r
2048 Returns a mutable buffer sequence representing writable bytes. \r[heading Synopsis]\r```\rmutable_buffers_type\rprepare(\r    std::size_t n);\r```\r\r[heading Description]\r
2049 Returns a mutable buffer sequence representing the writable bytes containing exactly `n` bytes of storage.
2050 All buffers sequences previously obtained using [link beast.ref.boost__beast__flat_static_buffer.data `flat_static_buffer::data`] or [link beast.ref.boost__beast__flat_static_buffer.prepare `flat_static_buffer::prepare`] are invalidated.
2051 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
2052 The desired number of bytes in the returned buffer sequence.\r  ]]\r]\r
2053 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
2054 if `size() + n` exceeds `max_size()`.\r  ]]\r]\r
2055 [heading Exception Safety]
2056
2057 Strong guarantee. [endsect]\r[section:reset flat_static_buffer_base::reset]\r[indexterm2 reset..flat_static_buffer_base]\r
2058 Reset the pointed-to buffer. \r[heading Synopsis]\r```\rvoid\rreset(\r    void* p,\r    std::size_t n);\r```\r\r[heading Description]\r
2059 This function resets the internal state to the buffer provided. All input and output sequences are invalidated. This function allows the derived class to construct its members before initializing the static buffer.
2060 [heading Parameters]\r[table [[Name][Description]]\r  [[`p`][\r    
2061 A pointer to valid storage of at least `n` bytes.\r  ]]\r  [[`n`][\r    
2062 The number of valid bytes pointed to by `p`.\r  ]]\r]\r
2063 [heading Exception Safety]
2064
2065 No-throw guarantee. [endsect]\r[section:size flat_static_buffer_base::size]\r[indexterm2 size..flat_static_buffer_base]\r
2066 Returns the number of readable bytes. \r[heading Synopsis]\r```\rstd::size_t\rsize() const;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__flat_stream flat_stream]\r
2067 Stream wrapper to improve write performance. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/flat_stream.hpp]\r\r\r\r```\rtemplate<\r    class NextLayer>\rclass flat_stream\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__flat_stream.executor_type [*executor_type]]]\r    [\r      The type of the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.next_layer_type [*next_layer_type]]]\r    [\r      The type of the next layer. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__flat_stream.async_read_some [*async_read_some]]]\r    [\r      Start an asynchronous read. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.async_write_some [*async_write_some]]]\r    [\r      Start an asynchronous write. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.flat_stream [*flat_stream]]]\r    [\r      \r\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.get_executor [*get_executor]]]\r    [\r      Get the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.next_layer [*next_layer]]]\r    [\r      Get a reference to the next layer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.operator_eq_ [*operator=]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.read_some [*read_some]]]\r    [\r      Read some data from the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.write_some [*write_some]]]\r    [\r      Write some data to the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__flat_stream.flat_stream_dtor_ [*~flat_stream]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
2068 This wrapper flattens writes for buffer sequences having length greater than 1 and total size below a predefined amount, using a dynamic memory allocation. It is primarily designed to overcome a performance limitation of the current version of `net::ssl::stream`, which does not use OpenSSL's scatter/gather interface for its low-level read some and write some operations.
2069 It is normally not necessary to use this class directly if you are already using [link beast.ref.boost__beast__ssl_stream `ssl_stream`]. The following examples shows how to use this class with the ssl stream that comes with networking:
2070 [heading Example]
2071
2072 To use the [link beast.ref.boost__beast__flat_stream `flat_stream`] template with SSL streams, declare a variable of the correct type. Parameters passed to the constructor will be forwarded to the next layer's constructor:
2073 \r```\r  flat_stream<net::ssl::stream<ip::tcp::socket>> fs{ioc, ctx};
2074 ```\rAlternatively you can write \r```\r  ssl::stream<ip::tcp::socket> ss{ioc, ctx};
2075   flat_stream<net::ssl::stream<ip::tcp::socket>&> fs{ss};
2076 ```\r
2077 The resulting stream may be passed to any stream algorithms which operate on synchronous or asynchronous read or write streams, examples include:
2078
2079 * `net::read`, `net::async_read`
2080
2081
2082 * `net::write`, `net::async_write`
2083
2084
2085 * `net::read_until`, `net::async_read_until`
2086
2087 The stream may also be used as a template parameter in other stream wrappers, such as for websocket: \r```\r  websocket::stream<flat_stream<net::ssl::stream<ip::tcp::socket>>> ws{ioc, ctx};
2088 ```\r
2089 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`NextLayer`][\r    
2090 The type representing the next layer, to which data will be read and written during operations. For synchronous operations, the type must support the [*SyncStream] concept. For asynchronous operations, the type must support the [*AsyncStream] concept. This type will usually be some variation of `net::ssl::stream`.\r  ]]\r]\r
2091 [heading Concepts]
2092
2093 * SyncStream 
2094 * AsyncStream
2095
2096
2097 [heading See Also]\r
2098
2099 * [@https://github.com/boostorg/asio/issues/100 https://github.com/boostorg/asio/issues/100] 
2100 * [@https://github.com/boostorg/beast/issues/1108 https://github.com/boostorg/beast/issues/1108] 
2101 * [@https://stackoverflow.com/questions/38198638/openssl-ssl-write-from-multiple-buffers-ssl-writev https://stackoverflow.com/questions/38198638/openssl-ssl-write-from-multiple-buffers-ssl-writev] 
2102 * [@https://stackoverflow.com/questions/50026167/performance-drop-on-port-from-beast-1-0-0-b66-to-boost-1-67-0-beast https://stackoverflow.com/questions/50026167/performance-drop-on-port-from-beast-1-0-0-b66-to-boost-1-67-0-beast] 
2103
2104
2105 [section:async_read_some flat_stream::async_read_some]\r[indexterm2 async_read_some..flat_stream]\r
2106 Start an asynchronous read. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__,\r    class __ReadHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_read_some(\r    MutableBufferSequence const& buffers,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
2107 This function is used to asynchronously read one or more bytes of data from the stream. The function call always returns immediately.
2108 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
2109 The buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
2110 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2111       error_code const& error,        // Result of operation.
2112       std::size_t bytes_transferred   // Number of bytes read.
2113   );
2114 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2115 [heading Remarks]\r
2116 The `read_some` operation may not read all of the requested number of bytes. Consider using the function `net::async_read` if you need to ensure that the requested amount of data is read before the asynchronous operation completes. 
2117 [endsect]\r[section:async_write_some flat_stream::async_write_some]\r[indexterm2 async_write_some..flat_stream]\r
2118 Start an asynchronous write. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class __WriteHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_write_some(\r    ConstBufferSequence const& buffers,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
2119 This function is used to asynchronously write one or more bytes of data to the stream. The function call always returns immediately.
2120 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
2121 The data to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
2122 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2123       error_code const& ec,           // Result of operation.
2124       std::size_t bytes_transferred   // Number of bytes written.
2125   );
2126 ```\r\r  ]]\r]\r
2127 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.
2128 [heading Remarks]\r
2129 The `async_write_some` operation may not transmit all of the data to the peer. Consider using the function `net::async_write` if you need to ensure that all data is written before the asynchronous operation completes. 
2130 [endsect]\r[section:executor_type flat_stream::executor_type]\r[indexterm2 executor_type..flat_stream]\r
2131 The type of the executor associated with the object. \r[heading Synopsis]\r\r```\rusing executor_type = beast::executor_type< next_layer_type >;\r```\r\r[heading Description]\r[endsect]\r[section:flat_stream flat_stream::flat_stream]\r[indexterm2 flat_stream..flat_stream]\r```\r``[link beast.ref.boost__beast__flat_stream.flat_stream.overload1 flat_stream]``(\r    flat_stream&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.flat_stream.overload1 more...]]``\r\r``[link beast.ref.boost__beast__flat_stream.flat_stream.overload2 flat_stream]``(\r    flat_stream const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.flat_stream.overload2 more...]]``\r\r```\r
2132 Constructor. ```\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__flat_stream.flat_stream.overload3 flat_stream]``(\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.flat_stream.overload3 more...]]``\r```\r[section:overload1 flat_stream::flat_stream (1 of 3 overloads)]\r\r[heading Synopsis]\r```\rflat_stream(\r    flat_stream&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 flat_stream::flat_stream (2 of 3 overloads)]\r\r[heading Synopsis]\r```\rflat_stream(\r    flat_stream const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 flat_stream::flat_stream (3 of 3 overloads)]\r
2133 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rflat_stream(\r    Args&&... args);\r```\r\r[heading Description]\r
2134 Arguments, if any, are forwarded to the next layer's constructor. [endsect]\r[endsect]\r\r[section:get_executor flat_stream::get_executor]\r[indexterm2 get_executor..flat_stream]\r
2135 Get the executor associated with the object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor();\r```\r\r[heading Description]\r
2136 This function may be used to obtain the executor object that the stream uses to dispatch handlers for asynchronous operations.
2137 [heading Return Value]
2138 A copy of the executor that stream will use to dispatch handlers. 
2139 [endsect]\r[section:next_layer flat_stream::next_layer]\r[indexterm2 next_layer..flat_stream]\r
2140 Get a reference to the next layer. ```\rnext_layer_type&\r``[link beast.ref.boost__beast__flat_stream.next_layer.overload1 next_layer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.next_layer.overload1 more...]]``\r\rnext_layer_type const &\r``[link beast.ref.boost__beast__flat_stream.next_layer.overload2 next_layer]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.next_layer.overload2 more...]]``\r```\r[section:overload1 flat_stream::next_layer (1 of 2 overloads)]\r
2141 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type&\rnext_layer();\r```\r\r[heading Description]\r
2142 This function returns a reference to the next layer in a stack of stream layers.
2143 [heading Return Value]
2144 A reference to the next layer in the stack of stream layers. 
2145 [endsect]\r[section:overload2 flat_stream::next_layer (2 of 2 overloads)]\r
2146 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type const &\rnext_layer() const;\r```\r\r[heading Description]\r
2147 This function returns a reference to the next layer in a stack of stream layers.
2148 [heading Return Value]
2149 A reference to the next layer in the stack of stream layers. 
2150 [endsect]\r[endsect]\r\r[section:next_layer_type flat_stream::next_layer_type]\r[indexterm2 next_layer_type..flat_stream]\r
2151 The type of the next layer. \r[heading Synopsis]\r\r```\rusing next_layer_type = typename std::remove_reference< NextLayer >::type;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ flat_stream::operator=]\r[indexterm2 operator=..flat_stream]\r```\rflat_stream&\r``[link beast.ref.boost__beast__flat_stream.operator_eq_.overload1 operator=]``(\r    flat_stream&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.operator_eq_.overload1 more...]]``\r\rflat_stream&\r``[link beast.ref.boost__beast__flat_stream.operator_eq_.overload2 operator=]``(\r    flat_stream const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.operator_eq_.overload2 more...]]``\r```\r[section:overload1 flat_stream::operator= (1 of 2 overloads)]\r\r[heading Synopsis]\r```\rflat_stream&\roperator=(\r    flat_stream&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 flat_stream::operator= (2 of 2 overloads)]\r\r[heading Synopsis]\r```\rflat_stream&\roperator=(\r    flat_stream const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:read_some flat_stream::read_some]\r[indexterm2 read_some..flat_stream]\r
2152 Read some data from the stream. ```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__flat_stream.read_some.overload1 read_some]``(\r    MutableBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.read_some.overload1 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__flat_stream.read_some.overload2 read_some]``(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.read_some.overload2 more...]]``\r```\r[section:overload1 flat_stream::read_some (1 of 2 overloads)]\r
2153 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers);\r```\r\r[heading Description]\r
2154 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
2155 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
2156 The buffers into which the data will be read.\r  ]]\r]\r
2157 [heading Return Value]
2158 The number of bytes read.
2159 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
2160 Thrown on failure.\r  ]]\r]\r
2161 [heading Remarks]\r
2162 The `read_some` operation may not read all of the requested number of bytes. Consider using the function `net::read` if you need to ensure that the requested amount of data is read before the blocking operation completes. 
2163 [endsect]\r[section:overload2 flat_stream::read_some (2 of 2 overloads)]\r
2164 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
2165 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
2166 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
2167 The buffers into which the data will be read.\r  ]]\r  [[`ec`][\r    
2168 Set to indicate what error occurred, if any.\r  ]]\r]\r
2169 [heading Return Value]
2170 The number of bytes read.
2171 [heading Remarks]\r
2172 The `read_some` operation may not read all of the requested number of bytes. Consider using the function `net::read` if you need to ensure that the requested amount of data is read before the blocking operation completes. 
2173 [endsect]\r[endsect]\r\r[section:write_some flat_stream::write_some]\r[indexterm2 write_some..flat_stream]\r
2174 Write some data to the stream. ```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__flat_stream.write_some.overload1 write_some]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.write_some.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__flat_stream.write_some.overload2 write_some]``(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__flat_stream.write_some.overload2 more...]]``\r```\r[section:overload1 flat_stream::write_some (1 of 2 overloads)]\r
2175 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
2176 This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
2177 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
2178 The data to be written.\r  ]]\r]\r
2179 [heading Return Value]
2180 The number of bytes written.
2181 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
2182 Thrown on failure.\r  ]]\r]\r
2183 [heading Remarks]\r
2184 The `write_some` operation may not transmit all of the data to the peer. Consider using the function `net::write` if you need to ensure that all data is written before the blocking operation completes. 
2185 [endsect]\r[section:overload2 flat_stream::write_some (2 of 2 overloads)]\r
2186 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
2187 This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
2188 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
2189 The data to be written.\r  ]]\r  [[`ec`][\r    
2190 Set to indicate what error occurred, if any.\r  ]]\r]\r
2191 [heading Return Value]
2192 The number of bytes written.
2193 [heading Remarks]\r
2194 The `write_some` operation may not transmit all of the data to the peer. Consider using the function `net::write` if you need to ensure that all data is written before the blocking operation completes. 
2195 [endsect]\r[endsect]\r\r[section:flat_stream_dtor_ flat_stream::~flat_stream]\r[indexterm2 ~flat_stream..flat_stream]\r
2196 Destructor. \r[heading Synopsis]\r```\r~flat_stream();\r```\r\r[heading Description]\r
2197 The treatment of pending operations will be the same as that of the next layer. [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__generic_category generic_category]\r[indexterm1 generic_category]\r
2198 A function to return the generic error category used by the library. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r\r```\rerror_category const &\rgeneric_category();\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__get_lowest_layer get_lowest_layer]\r[indexterm1 get_lowest_layer]\r
2199 Return the lowest layer in a stack of stream layers. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rlowest_layer_type< T >&\rget_lowest_layer(\r    T& t);\r\r```\r\r[heading Description]\r
2200 If `t.next_layer()` is well-defined, returns `get_lowest_layer(t.next_layer())`. Otherwise, it returns `t`.
2201 A stream layer is an object of class type which wraps another object through composition, and meets some or all of the named requirements of the wrapped type while optionally changing behavior. Examples of stream layers include `net::ssl::stream` or [link beast.ref.boost__beast__websocket__stream `websocket::stream`]. The owner of a stream layer can interact directly with the wrapper, by passing it to stream algorithms. Or, the owner can obtain a reference to the wrapped object by calling `next_layer()` and accessing its members. This is necessary when it is desired to access functionality in the next layer which is not available in the wrapper. For example, [link beast.ref.boost__beast__websocket__stream `websocket::stream`] permits reading and writing, but in order to establish the underlying connection, members of the wrapped stream (such as `connect`) must be invoked directly.
2202 Usually the last object in the chain of composition is the concrete socket object (for example, a `net::basic_socket` or a class derived from it). The function [link beast.ref.boost__beast__get_lowest_layer `get_lowest_layer`] exists to easily obtain the concrete socket when it is desired to perform an action that is not prescribed by a named requirement, such as changing a socket option, cancelling all pending asynchronous I/O, or closing the socket (perhaps by using [link beast.ref.boost__beast__close_socket `close_socket`]).
2203 [heading Example]
2204 \r```\r  // Set non-blocking mode on a stack of stream
2205   // layers with a regular socket at the lowest layer.
2206   template <class Stream>
2207   void set_non_blocking (Stream& stream)
2208   {
2209       error_code ec;
2210       // A compile error here means your lowest layer is not the right type!
2211       get_lowest_layer(stream).non_blocking(true, ec);
2212       if(ec)
2213           throw system_error{ec};
2214   }
2215 ```\r
2216 [heading Parameters]\r[table [[Name][Description]]\r  [[`t`][\r    
2217 The layer in a stack of layered objects for which the lowest layer is returned.\r  ]]\r]\r
2218 [heading See Also]\r
2219 [link beast.ref.boost__beast__close_socket `close_socket`], [link beast.ref.boost__beast__lowest_layer_type `lowest_layer_type`] 
2220 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__has_get_executor has_get_executor]\r[indexterm1 has_get_executor]\r
2221 Determine if `T` has the `get_executor` member function. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing has_get_executor = ``['see-below]``;\r```\r\r[heading Description]\r
2222 Metafunctions are used to perform compile time checking of template types. This type will be `std::true_type` if `T` has the member function with the correct signature, else type will be `std::false_type`.
2223 [heading Example]
2224
2225 Use with tag dispatching:
2226 \r```\r  template<class T>
2227   void maybe_hello(T const& t, std::true_type)
2228   {
2229       net::post(
2230           t.get_executor(),
2231           []
2232           {
2233               std::cout << "Hello, world!" << std::endl;
2234           });
2235   }
2236
2237   template<class T>
2238   void maybe_hello(T const&, std::false_type)
2239   {
2240       // T does not have get_executor
2241   }
2242
2243   template<class T>
2244   void maybe_hello(T const& t)
2245   {
2246       maybe_hello(t, has_get_executor<T>{});
2247   }
2248 ```\r
2249 Use with `static_assert`:
2250 \r```\r  struct stream
2251   {
2252       using executor_type = net::io_context::executor_type;
2253       executor_type get_executor() noexcept;
2254   };
2255
2256   static_assert(has_get_executor<stream>::value, "Missing get_executor member");
2257 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__http__async_read http::async_read]\r[indexterm1 http::async_read]\r
2258 Read a complete message asynchronously from a stream using a parser. ```\rtemplate<\r    class __AsyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __ReadHandler__ = net::default_completion_token_t<            executor_type<AsyncReadStream>>>\r``__deduced__``\r``[link beast.ref.boost__beast__http__async_read.overload1 async_read]``(\r    AsyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type< AsyncReadStream >>{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__async_read.overload1 more...]]``\r\r```\r
2259 Read a complete message asynchronously from a stream. ```\rtemplate<\r    class __AsyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __Body__,\r    class __Allocator__,\r    class __ReadHandler__ = net::default_completion_token_t<            executor_type<AsyncReadStream>>>\r``__deduced__``\r``[link beast.ref.boost__beast__http__async_read.overload2 async_read]``(\r    AsyncReadStream& stream,\r    DynamicBuffer& buffer,\r    message< isRequest, Body, basic_fields< Allocator >>& msg,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type< AsyncReadStream >>{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__async_read.overload2 more...]]``\r```\r[section:overload1 http::async_read (1 of 2 overloads)]\r
2260 Read a complete message asynchronously from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __ReadHandler__ = net::default_completion_token_t<            executor_type<AsyncReadStream>>>\r``__deduced__``\rasync_read(\r    AsyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type< AsyncReadStream >>{});\r\r```\r\r[heading Description]\r
2261 This function is used to asynchronously read a complete message from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2262
2263 * [link beast.ref.boost__beast__http__basic_parser.is_done `http::basic_parser::is_done`] returns `true`
2264
2265
2266 * An error occurs.
2267
2268 This operation is implemented in terms of zero or more calls to the next layer's `async_read_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other reads until this operation completes. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
2269 If the end of file error is received while reading from the stream, then the error returned from this function will be:
2270
2271 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
2272
2273
2274 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
2275
2276
2277 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
2278
2279 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2280 The stream from which the data is to be read. The type must meet the ['AsyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
2281 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`parser`][\r    
2282 The parser to use. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2283 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2284       error_code const& error,        // result of operation
2285       std::size_t bytes_transferred   // the total number of bytes transferred from the stream
2286   );
2287 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2288 [heading Remarks]\r
2289 The completion handler will receive as a parameter the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `true` on the parser passed in. 
2290 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::async_read (2 of 2 overloads)]\r
2291 Read a complete message asynchronously from a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __Body__,\r    class __Allocator__,\r    class __ReadHandler__ = net::default_completion_token_t<            executor_type<AsyncReadStream>>>\r``__deduced__``\rasync_read(\r    AsyncReadStream& stream,\r    DynamicBuffer& buffer,\r    message< isRequest, Body, basic_fields< Allocator >>& msg,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type< AsyncReadStream >>{});\r\r```\r\r[heading Description]\r
2292 This function is used to asynchronously read a complete message from a stream into an instance of [link beast.ref.boost__beast__http__message `http::message`]. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2293
2294 * The entire message is read in.
2295
2296
2297 * An error occurs.
2298
2299 This operation is implemented in terms of zero or more calls to the next layer's `async_read_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other reads until this operation completes. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
2300 If the end of file error is received while reading from the stream, then the error returned from this function will be:
2301
2302 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
2303
2304
2305 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
2306
2307
2308 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
2309
2310 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2311 The stream from which the data is to be read. The type must meet the ['AsyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
2312 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`msg`][\r    
2313 The container in which to store the message contents. This message container should not have previous contents, otherwise the behavior is undefined. The type must be meet the ['MoveAssignable] and ['MoveConstructible] requirements. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2314 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2315       error_code const& error,        // result of operation
2316       std::size_t bytes_transferred   // the total number of bytes transferred from the stream
2317   );
2318 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2319 [heading Remarks]\r
2320 The completion handler will receive as a parameter the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `true` on the parser passed in. 
2321 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__async_read_header http::async_read_header]\r[indexterm1 http::async_read_header]\r
2322 Read a complete message header asynchronously from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __ReadHandler__ = net::default_completion_token_t<            executor_type<AsyncReadStream>>>\r``__deduced__``\rasync_read_header(\r    AsyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type< AsyncReadStream >>{});\r\r```\r\r[heading Description]\r
2323 This function is used to asynchronously read a complete message header from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2324
2325 * [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] returns `true`
2326
2327
2328 * An error occurs.
2329
2330 This operation is implemented in terms of zero or more calls to the next layer's `async_read_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other reads until this operation completes. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
2331 If the end of file error is received while reading from the stream, then the error returned from this function will be:
2332
2333 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
2334
2335
2336 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
2337
2338
2339 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
2340
2341 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2342 The stream from which the data is to be read. The type must meet the ['AsyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
2343 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`parser`][\r    
2344 The parser to use. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2345 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2346       error_code const& error,        // result of operation
2347       std::size_t bytes_transferred   // the total number of bytes transferred from the stream
2348   );
2349 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2350 [heading Remarks]\r
2351 The completion handler will receive as a parameter the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `false` on the parser passed in. 
2352 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__async_read_some http::async_read_some]\r[indexterm1 http::async_read_some]\r
2353 Read part of a message asynchronously from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __ReadHandler__ = net::default_completion_token_t<            executor_type<AsyncReadStream>>>\r``__deduced__``\rasync_read_some(\r    AsyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type< AsyncReadStream >>{});\r\r```\r\r[heading Description]\r
2354 This function is used to asynchronously read part of a message from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2355
2356 * A call to [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`] with a non-empty buffer sequence is successful.
2357
2358
2359 * An error occurs.
2360
2361 This operation is implemented in terms of zero or more calls to the next layer's `async_read_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other reads until this operation completes. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
2362 If the end of file error is received while reading from the stream, then the error returned from this function will be:
2363
2364 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
2365
2366
2367 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
2368
2369
2370 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
2371
2372 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2373 The stream from which the data is to be read. The type must meet the ['AsyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
2374 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`parser`][\r    
2375 The parser to use. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2376 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2377       error_code const& error,        // result of operation
2378       std::size_t bytes_transferred   // the total number of bytes transferred from the stream
2379   );
2380 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2381 [heading Remarks]\r
2382 The completion handler will receive as a parameter the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. 
2383 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__async_write http::async_write]\r[indexterm1 http::async_write]\r
2384 Write a complete message to a stream asynchronously using a serializer. ```\rtemplate<\r    class __AsyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__,\r    class __WriteHandler__ = net::default_completion_token_t<            executor_type<AsyncWriteStream>>>\r``__deduced__``\r``[link beast.ref.boost__beast__http__async_write.overload1 async_write]``(\r    AsyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type< AsyncWriteStream >>{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__async_write.overload1 more...]]``\r\r```\r
2385 Write a complete message to a stream asynchronously. ```\rtemplate<\r    class __AsyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__,\r    class __WriteHandler__ = net::default_completion_token_t<            executor_type<AsyncWriteStream>>>\r``__deduced__``\r``[link beast.ref.boost__beast__http__async_write.overload2 async_write]``(\r    AsyncWriteStream& stream,\r    message< isRequest, Body, Fields >& msg,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type< AsyncWriteStream >>{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__async_write.overload2 more...]]``\r\rtemplate<\r    class __AsyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__,\r    class __WriteHandler__ = net::default_completion_token_t<            executor_type<AsyncWriteStream>>>\r``__deduced__``\r``[link beast.ref.boost__beast__http__async_write.overload3 async_write]``(\r    AsyncWriteStream& stream,\r    message< isRequest, Body, Fields > const& msg,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type< AsyncWriteStream >>{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__async_write.overload3 more...]]``\r```\r[section:overload1 http::async_write (1 of 3 overloads)]\r
2386 Write a complete message to a stream asynchronously using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__,\r    class __WriteHandler__ = net::default_completion_token_t<            executor_type<AsyncWriteStream>>>\r``__deduced__``\rasync_write(\r    AsyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type< AsyncWriteStream >>{});\r\r```\r\r[heading Description]\r
2387 This function is used to write a complete message to a stream asynchronously using a caller-provided HTTP/1 serializer. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2388
2389 * The function [link beast.ref.boost__beast__http__serializer.is_done `http::serializer::is_done`] returns `true`
2390
2391
2392 * An error occurs.
2393
2394 This operation is implemented in terms of zero or more calls to the stream's `async_write_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other writes until this operation completes.
2395 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2396 The stream to which the data is to be written. The type must support the ['AsyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
2397 The serializer to use. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2398 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2399       error_code const& error,        // result of operation
2400       std::size_t bytes_transferred   // the number of bytes written to the stream
2401   );
2402 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2403 [heading See Also]\r
2404 [link beast.ref.boost__beast__http__serializer `http::serializer`] 
2405 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::async_write (2 of 3 overloads)]\r
2406 Write a complete message to a stream asynchronously. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__,\r    class __WriteHandler__ = net::default_completion_token_t<            executor_type<AsyncWriteStream>>>\r``__deduced__``\rasync_write(\r    AsyncWriteStream& stream,\r    message< isRequest, Body, Fields >& msg,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type< AsyncWriteStream >>{});\r\r```\r\r[heading Description]\r
2407 This function is used to write a complete message to a stream asynchronously using HTTP/1. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2408
2409 * The entire message is written.
2410
2411
2412 * An error occurs.
2413
2414 This operation is implemented in terms of zero or more calls to the stream's `async_write_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other writes until this operation completes. The algorithm will use a temporary [link beast.ref.boost__beast__http__serializer `http::serializer`] with an empty chunk decorator to produce buffers.
2415 [heading Remarks]\r
2416 This function only participates in overload resolution if [link beast.ref.boost__beast__http__is_mutable_body_writer `http::is_mutable_body_writer`] for ['Body] returns `true`.
2417 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2418 The stream to which the data is to be written. The type must support the ['AsyncWriteStream] concept.\r  ]]\r  [[`msg`][\r    
2419 The message to write. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2420 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2421       error_code const& error,        // result of operation
2422       std::size_t bytes_transferred   // the number of bytes written to the stream
2423   );
2424 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2425 [heading See Also]\r
2426 [link beast.ref.boost__beast__http__message `http::message`] 
2427 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload3 http::async_write (3 of 3 overloads)]\r
2428 Write a complete message to a stream asynchronously. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__,\r    class __WriteHandler__ = net::default_completion_token_t<            executor_type<AsyncWriteStream>>>\r``__deduced__``\rasync_write(\r    AsyncWriteStream& stream,\r    message< isRequest, Body, Fields > const& msg,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type< AsyncWriteStream >>{});\r\r```\r\r[heading Description]\r
2429 This function is used to write a complete message to a stream asynchronously using HTTP/1. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2430
2431 * The entire message is written.
2432
2433
2434 * An error occurs.
2435
2436 This operation is implemented in terms of zero or more calls to the stream's `async_write_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other writes until this operation completes. The algorithm will use a temporary [link beast.ref.boost__beast__http__serializer `http::serializer`] with an empty chunk decorator to produce buffers.
2437 [heading Remarks]\r
2438 This function only participates in overload resolution if [link beast.ref.boost__beast__http__is_mutable_body_writer `http::is_mutable_body_writer`] for ['Body] returns `false`.
2439 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2440 The stream to which the data is to be written. The type must support the ['AsyncWriteStream] concept.\r  ]]\r  [[`msg`][\r    
2441 The message to write. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2442 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2443       error_code const& error,        // result of operation
2444       std::size_t bytes_transferred   // the number of bytes written to the stream
2445   );
2446 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2447 [heading See Also]\r
2448 [link beast.ref.boost__beast__http__message `http::message`] 
2449 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__async_write_header http::async_write_header]\r[indexterm1 http::async_write_header]\r
2450 Write a header to a stream asynchronously using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__,\r    class __WriteHandler__ = net::default_completion_token_t<            executor_type<AsyncWriteStream>>>\r``__deduced__``\rasync_write_header(\r    AsyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type< AsyncWriteStream >>{});\r\r```\r\r[heading Description]\r
2451 This function is used to write a header to a stream asynchronously using a caller-provided HTTP/1 serializer. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2452
2453 * The function [link beast.ref.boost__beast__http__serializer.is_header_done `http::serializer::is_header_done`] returns `true`
2454
2455
2456 * An error occurs.
2457
2458 This operation is implemented in terms of zero or more calls to the stream's `async_write_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other writes until this operation completes.
2459 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2460 The stream to which the data is to be written. The type must support the ['AsyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
2461 The serializer to use. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2462 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2463       error_code const& error,        // result of operation
2464       std::size_t bytes_transferred   // the number of bytes written to the stream
2465   );
2466 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2467 [heading Remarks]\r
2468 The implementation will call [link beast.ref.boost__beast__http__serializer.split `http::serializer::split`] with the value `true` on the serializer passed in.
2469 [heading See Also]\r
2470 [link beast.ref.boost__beast__http__serializer `http::serializer`] 
2471 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__async_write_some http::async_write_some]\r[indexterm1 http::async_write_some]\r
2472 Write part of a message to a stream asynchronously using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __AsyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__,\r    class __WriteHandler__ = net::default_completion_token_t<            executor_type<AsyncWriteStream>>>\r``__deduced__``\rasync_write_some(\r    AsyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type< AsyncWriteStream >>{});\r\r```\r\r[heading Description]\r
2473 This function is used to write part of a message to a stream asynchronously using a caller-provided HTTP/1 serializer. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
2474
2475 * One or more bytes have been transferred.
2476
2477
2478 * The function [link beast.ref.boost__beast__http__serializer.is_done `http::serializer::is_done`] returns `true`
2479
2480
2481 * An error occurs on the stream.
2482
2483 This operation is implemented in terms of zero or more calls to the stream's `async_write_some` function, and is known as a ['composed operation]. The program must ensure that the stream performs no other writes until this operation completes.
2484 The amount of data actually transferred is controlled by the behavior of the underlying stream, subject to the buffer size limit of the serializer obtained or set through a call to [link beast.ref.boost__beast__http__serializer.limit `http::serializer::limit`]. Setting a limit and performing bounded work helps applications set reasonable timeouts. It also allows application-level flow control to function correctly. For example when using a TCP/IP based stream.
2485 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
2486 The stream to which the data is to be written. The type must support the ['AsyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
2487 The serializer to use. The object must remain valid at least until the handler is called; ownership is not transferred.\r  ]]\r  [[`handler`][\r    
2488 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
2489       error_code const& error,        // result of operation
2490       std::size_t bytes_transferred   // the number of bytes written to the stream
2491   );
2492 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
2493 [heading See Also]\r
2494 [link beast.ref.boost__beast__http__serializer `http::serializer`] 
2495 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__basic_chunk_extensions http::basic_chunk_extensions]\r
2496 A set of chunk extensions. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rtemplate<\r    class __Allocator__>\rclass basic_chunk_extensions\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.value_type [*value_type]]]\r    [\r      The type of value when iterating. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions [*basic_chunk_extensions]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.begin [*begin]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.clear [*clear]]]\r    [\r      Clear the chunk extensions. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.end [*end]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.insert [*insert]]]\r    [\r      Insert an extension name with an empty value. \r\r      Insert an extension value. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.parse [*parse]]]\r    [\r      Parse a set of chunk extensions. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.str [*str]]]\r    [\r      Return the serialized representation of the chunk extension. \r    ]\r  ]\r]\r\r[heading Description]\r
2497 This container stores a set of chunk extensions suited for use with [link beast.ref.boost__beast__http__chunk_header `http::chunk_header`] and [link beast.ref.boost__beast__http__chunk_body `http::chunk_body`]. The container may be iterated to access the extensions in their structured form.
2498 Meets the requirements of ChunkExtensions [section:basic_chunk_extensions http::basic_chunk_extensions::basic_chunk_extensions]\r[indexterm2 basic_chunk_extensions..http::basic_chunk_extensions]\r
2499 Constructor. ```\r``[link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions.overload1 basic_chunk_extensions]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions.overload2 basic_chunk_extensions]``(\r    basic_chunk_extensions&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions.overload2 more...]]``\r\r``[link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions.overload3 basic_chunk_extensions]``(\r    basic_chunk_extensions const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions.overload3 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions.overload4 basic_chunk_extensions]``(\r    Allocator const& allocator);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions.overload4 more...]]``\r```\r[section:overload1 http::basic_chunk_extensions::basic_chunk_extensions (1 of 4 overloads)]\r
2500 Constructor. \r[heading Synopsis]\r```\rbasic_chunk_extensions();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::basic_chunk_extensions::basic_chunk_extensions (2 of 4 overloads)]\r
2501 Constructor. \r[heading Synopsis]\r```\rbasic_chunk_extensions(\r    basic_chunk_extensions&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 http::basic_chunk_extensions::basic_chunk_extensions (3 of 4 overloads)]\r
2502 Constructor. \r[heading Synopsis]\r```\rbasic_chunk_extensions(\r    basic_chunk_extensions const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 http::basic_chunk_extensions::basic_chunk_extensions (4 of 4 overloads)]\r
2503 Constructor. \r[heading Synopsis]\r```\rbasic_chunk_extensions(\r    Allocator const& allocator);\r```\r\r[heading Description]\r
2504 [heading Parameters]\r[table [[Name][Description]]\r  [[`allocator`][\r    
2505 The allocator to use for storing the serialized extension \r  ]]\r]\r
2506 [endsect]\r[endsect]\r\r[section:begin http::basic_chunk_extensions::begin]\r[indexterm2 begin..http::basic_chunk_extensions]\r\r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:clear http::basic_chunk_extensions::clear]\r[indexterm2 clear..http::basic_chunk_extensions]\r
2507 Clear the chunk extensions. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
2508 This preserves the capacity of the internal string used to hold the serialized representation. [endsect]\r[section:end http::basic_chunk_extensions::end]\r[indexterm2 end..http::basic_chunk_extensions]\r\r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:insert http::basic_chunk_extensions::insert]\r[indexterm2 insert..http::basic_chunk_extensions]\r
2509 Insert an extension name with an empty value. ```\rvoid\r``[link beast.ref.boost__beast__http__basic_chunk_extensions.insert.overload1 insert]``(\r    string_view name);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_chunk_extensions.insert.overload1 more...]]``\r\r```\r
2510 Insert an extension value. ```\rvoid\r``[link beast.ref.boost__beast__http__basic_chunk_extensions.insert.overload2 insert]``(\r    string_view name,\r    string_view value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_chunk_extensions.insert.overload2 more...]]``\r```\r[section:overload1 http::basic_chunk_extensions::insert (1 of 2 overloads)]\r
2511 Insert an extension name with an empty value. \r[heading Synopsis]\r```\rvoid\rinsert(\r    string_view name);\r```\r\r[heading Description]\r
2512 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2513 The name of the extension \r  ]]\r]\r
2514 [endsect]\r[section:overload2 http::basic_chunk_extensions::insert (2 of 2 overloads)]\r
2515 Insert an extension value. \r[heading Synopsis]\r```\rvoid\rinsert(\r    string_view name,\r    string_view value);\r```\r\r[heading Description]\r
2516 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2517 The name of the extension\r  ]]\r  [[`value`][\r    
2518 The value to insert. Depending on the contents, the serialized extension may use a quoted string. \r  ]]\r]\r
2519 [endsect]\r[endsect]\r\r[section:parse http::basic_chunk_extensions::parse]\r[indexterm2 parse..http::basic_chunk_extensions]\r
2520 Parse a set of chunk extensions. \r[heading Synopsis]\r```\rvoid\rparse(\r    string_view s,\r    error_code& ec);\r```\r\r[heading Description]\r
2521 Any previous extensions will be cleared [endsect]\r[section:str http::basic_chunk_extensions::str]\r[indexterm2 str..http::basic_chunk_extensions]\r
2522 Return the serialized representation of the chunk extension. \r[heading Synopsis]\r```\rstring_view\rstr() const;\r```\r\r[heading Description]\r[endsect]\r[section:value_type http::basic_chunk_extensions::value_type]\r[indexterm2 value_type..http::basic_chunk_extensions]\r
2523 The type of value when iterating. \r[heading Synopsis]\r\r```\rusing value_type = std::pair< string_view, string_view >;\r```\r\r[heading Description]\r
2524 The first element of the pair is the name, and the second element is the value which may be empty. The value is stored in its raw representation, without quotes or escapes. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_dynamic_body http::basic_dynamic_body]\r
2525 A ['Body] using a ['DynamicBuffer] \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/basic_dynamic_body.hpp]\r\r\r\r```\rtemplate<\r    class __DynamicBuffer__>\rstruct basic_dynamic_body\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_dynamic_body.reader [*reader]]]\r    [\r      The algorithm for parsing the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_dynamic_body.value_type [*value_type]]]\r    [\r      The type of container used for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_dynamic_body.writer [*writer]]]\r    [\r      The algorithm for serializing the body. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_dynamic_body.size [*size]]]\r    [\r      Returns the payload size of the body. \r    ]\r  ]\r]\r\r[heading Description]\r
2526 This body uses a ['DynamicBuffer] as a memory-based container for holding message payloads. Messages using this body type may be serialized and parsed. [section:reader http::basic_dynamic_body::reader]\r[indexterm2 reader..http::basic_dynamic_body]\r
2527 The algorithm for parsing the body. \r[heading Synopsis]\r\r```\rusing reader = ``['implementation-defined]``;\r```\r\r[heading Description]\r
2528 Meets the requirements of ['BodyReader]. [endsect]\r[section:size http::basic_dynamic_body::size]\r[indexterm2 size..http::basic_dynamic_body]\r
2529 Returns the payload size of the body. \r[heading Synopsis]\r```\rstatic\rstd::uint64_t\rsize(\r    value_type const& v);\r```\r\r[heading Description]\r
2530 When this body is used with [link beast.ref.boost__beast__http__message.prepare_payload `http::message::prepare_payload`], the Content-Length will be set to the payload size, and any chunked Transfer-Encoding will be removed. [endsect]\r[section:value_type http::basic_dynamic_body::value_type]\r[indexterm2 value_type..http::basic_dynamic_body]\r
2531 The type of container used for the body. \r[heading Synopsis]\r\r```\rusing value_type = DynamicBuffer;\r```\r\r[heading Description]\r
2532 This determines the type of [link beast.ref.boost__beast__http__message.body `http::message::body`] when this body type is used with a message container. [endsect]\r[section:writer http::basic_dynamic_body::writer]\r[indexterm2 writer..http::basic_dynamic_body]\r
2533 The algorithm for serializing the body. \r[heading Synopsis]\r\r```\rusing writer = ``['implementation-defined]``;\r```\r\r[heading Description]\r
2534 Meets the requirements of ['BodyWriter]. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_fields http::basic_fields]\r
2535 A container for storing HTTP header fields. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/fields.hpp]\r\r\r\r```\rtemplate<\r    class __Allocator__>\rclass basic_fields\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.allocator_type [*allocator_type]]]\r    [\r      The type of allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__value_type [*value_type]]]\r    [\r      The type of element used to represent a field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.const_iterator [*const_iterator]]]\r    [\r      A constant iterator to the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.iterator [*iterator]]]\r    [\r      A constant iterator to the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.key_compare [*key_compare]]]\r    [\r      A strictly less predicate for comparing keys, using a case-insensitive comparison. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.writer [*writer]]]\r    [\r      The algorithm used to serialize the header. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.at [*at]]]\r    [\r      Returns the value for a field, or throws an exception. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.basic_fields [*basic_fields]]]\r    [\r      Constructor. \r\r      Move constructor. \r\r      Copy constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.begin [*begin]]]\r    [\r      Return a const iterator to the beginning of the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.cbegin [*cbegin]]]\r    [\r      Return a const iterator to the beginning of the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.cend [*cend]]]\r    [\r      Return a const iterator to the end of the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.clear [*clear]]]\r    [\r      Remove all fields from the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.count [*count]]]\r    [\r      Return the number of fields with the specified name. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.end [*end]]]\r    [\r      Return a const iterator to the end of the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.equal_range [*equal_range]]]\r    [\r      Returns a range of iterators to the fields with the specified name. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.erase [*erase]]]\r    [\r      Remove a field. \r\r      Remove all fields with the specified name. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.find [*find]]]\r    [\r      Returns an iterator to the case-insensitive matching field. \r\r      Returns an iterator to the case-insensitive matching field name. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_allocator [*get_allocator]]]\r    [\r      Return a copy of the allocator associated with the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.insert [*insert]]]\r    [\r      Insert a field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.key_comp [*key_comp]]]\r    [\r      Returns a copy of the key comparison function. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.operator_eq_ [*operator=]]]\r    [\r      Move assignment. \r\r      Copy assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.operator_lb__rb_ [*operator\[\]]]]\r    [\r      Returns the value for a field, or "" if it does not exist. \r\r      Returns the value for a case-insensitive matching header, or "" if it does not exist. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set [*set]]]\r    [\r      Set a field value, removing any other instances of that field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.swap [*swap]]]\r    [\r      Return a buffer sequence representing the trailers. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.basic_fields_dtor_ [*~basic_fields]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Protected Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_chunked_impl [*get_chunked_impl]]]\r    [\r      Returns the chunked Transfer-Encoding setting. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_keep_alive_impl [*get_keep_alive_impl]]]\r    [\r      Returns the keep-alive setting. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_method_impl [*get_method_impl]]]\r    [\r      Returns the request-method string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_reason_impl [*get_reason_impl]]]\r    [\r      Returns the response reason-phrase string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_target_impl [*get_target_impl]]]\r    [\r      Returns the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.has_content_length_impl [*has_content_length_impl]]]\r    [\r      Returns true if the Content-Length field is present. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_chunked_impl [*set_chunked_impl]]]\r    [\r      Adjusts the chunked Transfer-Encoding value. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_content_length_impl [*set_content_length_impl]]]\r    [\r      Sets or clears the Content-Length field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_keep_alive_impl [*set_keep_alive_impl]]]\r    [\r      Adjusts the Connection field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_method_impl [*set_method_impl]]]\r    [\r      Set or clear the method string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_reason_impl [*set_reason_impl]]]\r    [\r      Set or clear the reason string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_target_impl [*set_target_impl]]]\r    [\r      Set or clear the target string. \r    ]\r  ]\r]\r[heading Friends]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.swap [*swap]]]\r    [\r      Swap two field containers. \r    ]\r  ]\r]\r\r[heading Description]\r
2536 This container is designed to store the field value pairs that make up the fields and trailers in an HTTP message. Objects of this type are iterable, with each element holding the field name and field value.
2537 Field names are stored as-is, but comparisons are case-insensitive. The container behaves as a `std::multiset`; there will be a separate value for each occurrence of the same field name. When the container is iterated the fields are presented in the order of insertion, with fields having the same name following each other consecutively.
2538 Meets the requirements of ['Fields]
2539 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Allocator`][\r    
2540 The allocator to use. \r  ]]\r]\r
2541 [section:allocator_type http::basic_fields::allocator_type]\r[indexterm2 allocator_type..http::basic_fields]\r
2542 The type of allocator used. \r[heading Synopsis]\r\r```\rusing allocator_type = Allocator;\r```\r\r[heading Description]\r[endsect]\r[section:at http::basic_fields::at]\r[indexterm2 at..http::basic_fields]\r
2543 Returns the value for a field, or throws an exception. ```\rstring_view const\r``[link beast.ref.boost__beast__http__basic_fields.at.overload1 at]``(\r    field name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.at.overload1 more...]]``\r\rstring_view const\r``[link beast.ref.boost__beast__http__basic_fields.at.overload2 at]``(\r    string_view name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.at.overload2 more...]]``\r```\r[section:overload1 http::basic_fields::at (1 of 2 overloads)]\r
2544 Returns the value for a field, or throws an exception. \r[heading Synopsis]\r```\rstring_view const\rat(\r    field name) const;\r```\r\r[heading Description]\r
2545 If more than one field with the specified name exists, the first field defined by insertion order is returned.
2546 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2547 The name of the field.\r  ]]\r]\r
2548 [heading Return Value]
2549 The field value.
2550 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::out_of_range`][\r    
2551 if the field is not found. \r  ]]\r]\r
2552 [endsect]\r[section:overload2 http::basic_fields::at (2 of 2 overloads)]\r
2553 Returns the value for a field, or throws an exception. \r[heading Synopsis]\r```\rstring_view const\rat(\r    string_view name) const;\r```\r\r[heading Description]\r
2554 If more than one field with the specified name exists, the first field defined by insertion order is returned.
2555 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2556 The name of the field.\r  ]]\r]\r
2557 [heading Return Value]
2558 The field value.
2559 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::out_of_range`][\r    
2560 if the field is not found. \r  ]]\r]\r
2561 [endsect]\r[endsect]\r\r[section:basic_fields http::basic_fields::basic_fields]\r[indexterm2 basic_fields..http::basic_fields]\r
2562 Constructor. ```\r``[link beast.ref.boost__beast__http__basic_fields.basic_fields.overload1 basic_fields]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.basic_fields.overload1 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__http__basic_fields.basic_fields.overload2 basic_fields]``(\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.basic_fields.overload2 more...]]``\r\r```\r
2563 Move constructor. ```\r``[link beast.ref.boost__beast__http__basic_fields.basic_fields.overload3 basic_fields]``(\r    basic_fields&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.basic_fields.overload3 more...]]``\r\r``[link beast.ref.boost__beast__http__basic_fields.basic_fields.overload4 basic_fields]``(\r    basic_fields&&,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.basic_fields.overload4 more...]]``\r\r```\r
2564 Copy constructor. ```\r``[link beast.ref.boost__beast__http__basic_fields.basic_fields.overload5 basic_fields]``(\r    basic_fields const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.basic_fields.overload5 more...]]``\r\r``[link beast.ref.boost__beast__http__basic_fields.basic_fields.overload6 basic_fields]``(\r    basic_fields const&,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.basic_fields.overload6 more...]]``\r\rtemplate<\r    class OtherAlloc>\r``[link beast.ref.boost__beast__http__basic_fields.basic_fields.overload7 basic_fields]``(\r    basic_fields< OtherAlloc > const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.basic_fields.overload7 more...]]``\r\rtemplate<\r    class OtherAlloc>\r``[link beast.ref.boost__beast__http__basic_fields.basic_fields.overload8 basic_fields]``(\r    basic_fields< OtherAlloc > const&,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.basic_fields.overload8 more...]]``\r```\r[section:overload1 http::basic_fields::basic_fields (1 of 8 overloads)]\r
2565 Constructor. \r[heading Synopsis]\r```\rbasic_fields();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::basic_fields::basic_fields (2 of 8 overloads)]\r
2566 Constructor. \r[heading Synopsis]\r```\rbasic_fields(\r    Allocator const& alloc);\r```\r\r[heading Description]\r
2567 [heading Parameters]\r[table [[Name][Description]]\r  [[`alloc`][\r    
2568 The allocator to use. \r  ]]\r]\r
2569 [endsect]\r[section:overload3 http::basic_fields::basic_fields (3 of 8 overloads)]\r
2570 Move constructor. \r[heading Synopsis]\r```\rbasic_fields(\r    basic_fields&&);\r```\r\r[heading Description]\r
2571 The state of the moved-from object is as if constructed using the same allocator. [endsect]\r[section:overload4 http::basic_fields::basic_fields (4 of 8 overloads)]\r
2572 Move constructor. \r[heading Synopsis]\r```\rbasic_fields(\r    basic_fields&&,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
2573 The state of the moved-from object is as if constructed using the same allocator.
2574 [heading Parameters]\r[table [[Name][Description]]\r  [[`alloc`][\r    
2575 The allocator to use. \r  ]]\r]\r
2576 [endsect]\r[section:overload5 http::basic_fields::basic_fields (5 of 8 overloads)]\r
2577 Copy constructor. \r[heading Synopsis]\r```\rbasic_fields(\r    basic_fields const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload6 http::basic_fields::basic_fields (6 of 8 overloads)]\r
2578 Copy constructor. \r[heading Synopsis]\r```\rbasic_fields(\r    basic_fields const&,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
2579 [heading Parameters]\r[table [[Name][Description]]\r  [[`alloc`][\r    
2580 The allocator to use. \r  ]]\r]\r
2581 [endsect]\r[section:overload7 http::basic_fields::basic_fields (7 of 8 overloads)]\r
2582 Copy constructor. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_fields(\r    basic_fields< OtherAlloc > const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload8 http::basic_fields::basic_fields (8 of 8 overloads)]\r
2583 Copy constructor. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_fields(\r    basic_fields< OtherAlloc > const&,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
2584 [heading Parameters]\r[table [[Name][Description]]\r  [[`alloc`][\r    
2585 The allocator to use. \r  ]]\r]\r
2586 [endsect]\r[endsect]\r\r[section:begin http::basic_fields::begin]\r[indexterm2 begin..http::basic_fields]\r
2587 Return a const iterator to the beginning of the field sequence. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cbegin http::basic_fields::cbegin]\r[indexterm2 cbegin..http::basic_fields]\r
2588 Return a const iterator to the beginning of the field sequence. \r[heading Synopsis]\r```\rconst_iterator\rcbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cend http::basic_fields::cend]\r[indexterm2 cend..http::basic_fields]\r
2589 Return a const iterator to the end of the field sequence. \r[heading Synopsis]\r```\rconst_iterator\rcend() const;\r```\r\r[heading Description]\r[endsect]\r[section:clear http::basic_fields::clear]\r[indexterm2 clear..http::basic_fields]\r
2590 Remove all fields from the container. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
2591 All references, pointers, or iterators referring to contained elements are invalidated. All past-the-end iterators are also invalidated.
2592 [heading Postconditions:]
2593 \r```\r  std::distance(this->begin(), this->end()) == 0
2594 ```\r
2595 [endsect]\r[section:const_iterator http::basic_fields::const_iterator]\r[indexterm2 const_iterator..http::basic_fields]\r
2596 A constant iterator to the field sequence. \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:count http::basic_fields::count]\r[indexterm2 count..http::basic_fields]\r
2597 Return the number of fields with the specified name. ```\rstd::size_t\r``[link beast.ref.boost__beast__http__basic_fields.count.overload1 count]``(\r    field name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.count.overload1 more...]]``\r\rstd::size_t\r``[link beast.ref.boost__beast__http__basic_fields.count.overload2 count]``(\r    string_view name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.count.overload2 more...]]``\r```\r[section:overload1 http::basic_fields::count (1 of 2 overloads)]\r
2598 Return the number of fields with the specified name. \r[heading Synopsis]\r```\rstd::size_t\rcount(\r    field name) const;\r```\r\r[heading Description]\r
2599 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2600 The field name. \r  ]]\r]\r
2601 [endsect]\r[section:overload2 http::basic_fields::count (2 of 2 overloads)]\r
2602 Return the number of fields with the specified name. \r[heading Synopsis]\r```\rstd::size_t\rcount(\r    string_view name) const;\r```\r\r[heading Description]\r
2603 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2604 The field name. \r  ]]\r]\r
2605 [endsect]\r[endsect]\r\r[section:end http::basic_fields::end]\r[indexterm2 end..http::basic_fields]\r
2606 Return a const iterator to the end of the field sequence. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:equal_range http::basic_fields::equal_range]\r[indexterm2 equal_range..http::basic_fields]\r
2607 Returns a range of iterators to the fields with the specified name. ```\rstd::pair< const_iterator, const_iterator >\r``[link beast.ref.boost__beast__http__basic_fields.equal_range.overload1 equal_range]``(\r    field name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.equal_range.overload1 more...]]``\r\rstd::pair< const_iterator, const_iterator >\r``[link beast.ref.boost__beast__http__basic_fields.equal_range.overload2 equal_range]``(\r    string_view name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.equal_range.overload2 more...]]``\r```\r[section:overload1 http::basic_fields::equal_range (1 of 2 overloads)]\r
2608 Returns a range of iterators to the fields with the specified name. \r[heading Synopsis]\r```\rstd::pair< const_iterator, const_iterator >\requal_range(\r    field name) const;\r```\r\r[heading Description]\r
2609 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2610 The field name.\r  ]]\r]\r
2611 [heading Return Value]
2612 A range of iterators to fields with the same name, otherwise an empty range. 
2613 [endsect]\r[section:overload2 http::basic_fields::equal_range (2 of 2 overloads)]\r
2614 Returns a range of iterators to the fields with the specified name. \r[heading Synopsis]\r```\rstd::pair< const_iterator, const_iterator >\requal_range(\r    string_view name) const;\r```\r\r[heading Description]\r
2615 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2616 The field name.\r  ]]\r]\r
2617 [heading Return Value]
2618 A range of iterators to fields with the same name, otherwise an empty range. 
2619 [endsect]\r[endsect]\r\r[section:erase http::basic_fields::erase]\r[indexterm2 erase..http::basic_fields]\r
2620 Remove a field. ```\rconst_iterator\r``[link beast.ref.boost__beast__http__basic_fields.erase.overload1 erase]``(\r    const_iterator pos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.erase.overload1 more...]]``\r\r```\r
2621 Remove all fields with the specified name. ```\rstd::size_t\r``[link beast.ref.boost__beast__http__basic_fields.erase.overload2 erase]``(\r    field name);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.erase.overload2 more...]]``\r\rstd::size_t\r``[link beast.ref.boost__beast__http__basic_fields.erase.overload3 erase]``(\r    string_view name);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.erase.overload3 more...]]``\r```\r[section:overload1 http::basic_fields::erase (1 of 3 overloads)]\r
2622 Remove a field. \r[heading Synopsis]\r```\rconst_iterator\rerase(\r    const_iterator pos);\r```\r\r[heading Description]\r
2623 References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
2624 [heading Parameters]\r[table [[Name][Description]]\r  [[`pos`][\r    
2625 An iterator to the element to remove.\r  ]]\r]\r
2626 [heading Return Value]
2627 An iterator following the last removed element. If the iterator refers to the last element, the [link beast.ref.boost__beast__http__basic_fields.end `http::basic_fields::end()`] iterator is returned. 
2628 [endsect]\r[section:overload2 http::basic_fields::erase (2 of 3 overloads)]\r
2629 Remove all fields with the specified name. \r[heading Synopsis]\r```\rstd::size_t\rerase(\r    field name);\r```\r\r[heading Description]\r
2630 All fields with the same field name are erased from the container. References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
2631 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2632 The field name.\r  ]]\r]\r
2633 [heading Return Value]
2634 The number of fields removed. 
2635 [endsect]\r[section:overload3 http::basic_fields::erase (3 of 3 overloads)]\r
2636 Remove all fields with the specified name. \r[heading Synopsis]\r```\rstd::size_t\rerase(\r    string_view name);\r```\r\r[heading Description]\r
2637 All fields with the same field name are erased from the container. References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
2638 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2639 The field name.\r  ]]\r]\r
2640 [heading Return Value]
2641 The number of fields removed. 
2642 [endsect]\r[endsect]\r\r[section:find http::basic_fields::find]\r[indexterm2 find..http::basic_fields]\r
2643 Returns an iterator to the case-insensitive matching field. ```\rconst_iterator\r``[link beast.ref.boost__beast__http__basic_fields.find.overload1 find]``(\r    field name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.find.overload1 more...]]``\r\r```\r
2644 Returns an iterator to the case-insensitive matching field name. ```\rconst_iterator\r``[link beast.ref.boost__beast__http__basic_fields.find.overload2 find]``(\r    string_view name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.find.overload2 more...]]``\r```\r[section:overload1 http::basic_fields::find (1 of 2 overloads)]\r
2645 Returns an iterator to the case-insensitive matching field. \r[heading Synopsis]\r```\rconst_iterator\rfind(\r    field name) const;\r```\r\r[heading Description]\r
2646 If more than one field with the specified name exists, the first field defined by insertion order is returned.
2647 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2648 The field name.\r  ]]\r]\r
2649 [heading Return Value]
2650 An iterator to the matching field, or `end()` if no match was found. 
2651 [endsect]\r[section:overload2 http::basic_fields::find (2 of 2 overloads)]\r
2652 Returns an iterator to the case-insensitive matching field name. \r[heading Synopsis]\r```\rconst_iterator\rfind(\r    string_view name) const;\r```\r\r[heading Description]\r
2653 If more than one field with the specified name exists, the first field defined by insertion order is returned.
2654 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2655 The field name.\r  ]]\r]\r
2656 [heading Return Value]
2657 An iterator to the matching field, or `end()` if no match was found. 
2658 [endsect]\r[endsect]\r\r[section:get_allocator http::basic_fields::get_allocator]\r[indexterm2 get_allocator..http::basic_fields]\r
2659 Return a copy of the allocator associated with the container. \r[heading Synopsis]\r```\rallocator_type\rget_allocator() const;\r```\r\r[heading Description]\r[endsect]\r[section:get_chunked_impl http::basic_fields::get_chunked_impl]\r[indexterm2 get_chunked_impl..http::basic_fields]\r
2660 Returns the chunked Transfer-Encoding setting. \r[heading Synopsis]\r```\rbool\rget_chunked_impl() const;\r```\r\r[heading Description]\r[endsect]\r[section:get_keep_alive_impl http::basic_fields::get_keep_alive_impl]\r[indexterm2 get_keep_alive_impl..http::basic_fields]\r
2661 Returns the keep-alive setting. \r[heading Synopsis]\r```\rbool\rget_keep_alive_impl(\r    unsigned version) const;\r```\r\r[heading Description]\r[endsect]\r[section:get_method_impl http::basic_fields::get_method_impl]\r[indexterm2 get_method_impl..http::basic_fields]\r
2662 Returns the request-method string. \r[heading Synopsis]\r```\rstring_view\rget_method_impl() const;\r```\r\r[heading Description]\r
2663 [heading Remarks]\r
2664 Only called for requests. 
2665 [endsect]\r[section:get_reason_impl http::basic_fields::get_reason_impl]\r[indexterm2 get_reason_impl..http::basic_fields]\r
2666 Returns the response reason-phrase string. \r[heading Synopsis]\r```\rstring_view\rget_reason_impl() const;\r```\r\r[heading Description]\r
2667 [heading Remarks]\r
2668 Only called for responses. 
2669 [endsect]\r[section:get_target_impl http::basic_fields::get_target_impl]\r[indexterm2 get_target_impl..http::basic_fields]\r
2670 Returns the request-target string. \r[heading Synopsis]\r```\rstring_view\rget_target_impl() const;\r```\r\r[heading Description]\r
2671 [heading Remarks]\r
2672 Only called for requests. 
2673 [endsect]\r[section:has_content_length_impl http::basic_fields::has_content_length_impl]\r[indexterm2 has_content_length_impl..http::basic_fields]\r
2674 Returns `true` if the Content-Length field is present. \r[heading Synopsis]\r```\rbool\rhas_content_length_impl() const;\r```\r\r[heading Description]\r[endsect]\r[section:insert http::basic_fields::insert]\r[indexterm2 insert..http::basic_fields]\r
2675 Insert a field. ```\rvoid\r``[link beast.ref.boost__beast__http__basic_fields.insert.overload1 insert]``(\r    field name,\r    string_param const& value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.insert.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__http__basic_fields.insert.overload2 insert]``(\r    string_view name,\r    string_param const& value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.insert.overload2 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__http__basic_fields.insert.overload3 insert]``(\r    field name,\r    string_view name_string,\r    string_param const& value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.insert.overload3 more...]]``\r```\r[section:overload1 http::basic_fields::insert (1 of 3 overloads)]\r
2676 Insert a field. \r[heading Synopsis]\r```\rvoid\rinsert(\r    field name,\r    string_param const& value);\r```\r\r[heading Description]\r
2677 If one or more fields with the same name already exist, the new field will be inserted after the last field with the matching name, in serialization order.
2678 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2679 The field name.\r  ]]\r  [[`value`][\r    
2680 The value of the field, as a [link beast.ref.boost__beast__string_param `string_param`] \r  ]]\r]\r
2681 [endsect]\r[section:overload2 http::basic_fields::insert (2 of 3 overloads)]\r
2682 Insert a field. \r[heading Synopsis]\r```\rvoid\rinsert(\r    string_view name,\r    string_param const& value);\r```\r\r[heading Description]\r
2683 If one or more fields with the same name already exist, the new field will be inserted after the last field with the matching name, in serialization order.
2684 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2685 The field name.\r  ]]\r  [[`value`][\r    
2686 The value of the field, as a [link beast.ref.boost__beast__string_param `string_param`] \r  ]]\r]\r
2687 [endsect]\r[section:overload3 http::basic_fields::insert (3 of 3 overloads)]\r
2688 Insert a field. \r[heading Synopsis]\r```\rvoid\rinsert(\r    field name,\r    string_view name_string,\r    string_param const& value);\r```\r\r[heading Description]\r
2689 If one or more fields with the same name already exist, the new field will be inserted after the last field with the matching name, in serialization order.
2690 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2691 The field name.\r  ]]\r  [[`name_string`][\r    
2692 The literal text corresponding to the field name. If `name != field::unknown`, then this value must be equal to `to_string(name)` using a case-insensitive comparison, otherwise the behavior is undefined.\r  ]]\r  [[`value`][\r    
2693 The value of the field, as a [link beast.ref.boost__beast__string_param `string_param`] \r  ]]\r]\r
2694 [endsect]\r[endsect]\r\r[section:iterator http::basic_fields::iterator]\r[indexterm2 iterator..http::basic_fields]\r
2695 A constant iterator to the field sequence. \r[heading Synopsis]\r\r```\rusing iterator = const_iterator;\r```\r\r[heading Description]\r[endsect]\r[section:key_comp http::basic_fields::key_comp]\r[indexterm2 key_comp..http::basic_fields]\r
2696 Returns a copy of the key comparison function. \r[heading Synopsis]\r```\rkey_compare\rkey_comp() const;\r```\r\r[heading Description]\r[endsect]\r[section:key_compare http::basic_fields::key_compare]\r[indexterm2 key_compare..http::basic_fields]\r
2697 A strictly less predicate for comparing keys, using a case-insensitive comparison. \r[heading Synopsis]\r\r```\rusing key_compare = ``['implementation-defined]``;\r```\r\r[heading Description]\r
2698 The case-comparison operation is defined only for low-ASCII characters. [endsect]\r[section:operator_eq_ http::basic_fields::operator=]\r[indexterm2 operator=..http::basic_fields]\r
2699 Move assignment. ```\rbasic_fields&\r``[link beast.ref.boost__beast__http__basic_fields.operator_eq_.overload1 operator=]``(\r    basic_fields&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.operator_eq_.overload1 more...]]``\r\r```\r
2700 Copy assignment. ```\rbasic_fields&\r``[link beast.ref.boost__beast__http__basic_fields.operator_eq_.overload2 operator=]``(\r    basic_fields const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.operator_eq_.overload2 more...]]``\r\rtemplate<\r    class OtherAlloc>\rbasic_fields&\r``[link beast.ref.boost__beast__http__basic_fields.operator_eq_.overload3 operator=]``(\r    basic_fields< OtherAlloc > const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.operator_eq_.overload3 more...]]``\r```\r[section:overload1 http::basic_fields::operator= (1 of 3 overloads)]\r
2701 Move assignment. \r[heading Synopsis]\r```\rbasic_fields&\roperator=(\r    basic_fields&&);\r```\r\r[heading Description]\r
2702 The state of the moved-from object is as if constructed using the same allocator. [endsect]\r[section:overload2 http::basic_fields::operator= (2 of 3 overloads)]\r
2703 Copy assignment. \r[heading Synopsis]\r```\rbasic_fields&\roperator=(\r    basic_fields const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 http::basic_fields::operator= (3 of 3 overloads)]\r
2704 Copy assignment. \r[heading Synopsis]\r```\rtemplate<\r    class OtherAlloc>\rbasic_fields&\roperator=(\r    basic_fields< OtherAlloc > const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:operator_lb__rb_ http::basic_fields::operator\[\]]\r[indexterm2 operator\[\]..http::basic_fields]\r
2705 Returns the value for a field, or `""` if it does not exist. ```\rstring_view const\r``[link beast.ref.boost__beast__http__basic_fields.operator_lb__rb_.overload1 operator[]]``(\r    field name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.operator_lb__rb_.overload1 more...]]``\r\r```\r
2706 Returns the value for a case-insensitive matching header, or `""` if it does not exist. ```\rstring_view const\r``[link beast.ref.boost__beast__http__basic_fields.operator_lb__rb_.overload2 operator[]]``(\r    string_view name) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.operator_lb__rb_.overload2 more...]]``\r```\r[section:overload1 http::basic_fields::operator\[\] (1 of 2 overloads)]\r
2707 Returns the value for a field, or `""` if it does not exist. \r[heading Synopsis]\r```\rstring_view const\roperator[](\r    field name) const;\r```\r\r[heading Description]\r
2708 If more than one field with the specified name exists, the first field defined by insertion order is returned.
2709 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2710 The name of the field. \r  ]]\r]\r
2711 [endsect]\r[section:overload2 http::basic_fields::operator\[\] (2 of 2 overloads)]\r
2712 Returns the value for a case-insensitive matching header, or `""` if it does not exist. \r[heading Synopsis]\r```\rstring_view const\roperator[](\r    string_view name) const;\r```\r\r[heading Description]\r
2713 If more than one field with the specified name exists, the first field defined by insertion order is returned.
2714 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2715 The name of the field. \r  ]]\r]\r
2716 [endsect]\r[endsect]\r\r[section:set http::basic_fields::set]\r[indexterm2 set..http::basic_fields]\r
2717 Set a field value, removing any other instances of that field. ```\rvoid\r``[link beast.ref.boost__beast__http__basic_fields.set.overload1 set]``(\r    field name,\r    string_param const& value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.set.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__http__basic_fields.set.overload2 set]``(\r    string_view name,\r    string_param const& value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_fields.set.overload2 more...]]``\r```\r[section:overload1 http::basic_fields::set (1 of 2 overloads)]\r
2718 Set a field value, removing any other instances of that field. \r[heading Synopsis]\r```\rvoid\rset(\r    field name,\r    string_param const& value);\r```\r\r[heading Description]\r
2719 First removes any values with matching field names, then inserts the new field value.
2720 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2721 The field name.\r  ]]\r  [[`value`][\r    
2722 The value of the field, as a [link beast.ref.boost__beast__string_param `string_param`]\r  ]]\r]\r
2723 [heading Return Value]
2724 The field value. 
2725 [endsect]\r[section:overload2 http::basic_fields::set (2 of 2 overloads)]\r
2726 Set a field value, removing any other instances of that field. \r[heading Synopsis]\r```\rvoid\rset(\r    string_view name,\r    string_param const& value);\r```\r\r[heading Description]\r
2727 First removes any values with matching field names, then inserts the new field value.
2728 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2729 The field name.\r  ]]\r  [[`value`][\r    
2730 The value of the field, as a [link beast.ref.boost__beast__string_param `string_param`] \r  ]]\r]\r
2731 [endsect]\r[endsect]\r\r[section:set_chunked_impl http::basic_fields::set_chunked_impl]\r[indexterm2 set_chunked_impl..http::basic_fields]\r
2732 Adjusts the chunked Transfer-Encoding value. \r[heading Synopsis]\r```\rvoid\rset_chunked_impl(\r    bool value);\r```\r\r[heading Description]\r[endsect]\r[section:set_content_length_impl http::basic_fields::set_content_length_impl]\r[indexterm2 set_content_length_impl..http::basic_fields]\r
2733 Sets or clears the Content-Length field. \r[heading Synopsis]\r```\rvoid\rset_content_length_impl(\r    boost::optional< std::uint64_t > const& value);\r```\r\r[heading Description]\r[endsect]\r[section:set_keep_alive_impl http::basic_fields::set_keep_alive_impl]\r[indexterm2 set_keep_alive_impl..http::basic_fields]\r
2734 Adjusts the Connection field. \r[heading Synopsis]\r```\rvoid\rset_keep_alive_impl(\r    unsigned version,\r    bool keep_alive);\r```\r\r[heading Description]\r[endsect]\r[section:set_method_impl http::basic_fields::set_method_impl]\r[indexterm2 set_method_impl..http::basic_fields]\r
2735 Set or clear the method string. \r[heading Synopsis]\r```\rvoid\rset_method_impl(\r    string_view s);\r```\r\r[heading Description]\r
2736 [heading Remarks]\r
2737 Only called for requests. 
2738 [endsect]\r[section:set_reason_impl http::basic_fields::set_reason_impl]\r[indexterm2 set_reason_impl..http::basic_fields]\r
2739 Set or clear the reason string. \r[heading Synopsis]\r```\rvoid\rset_reason_impl(\r    string_view s);\r```\r\r[heading Description]\r
2740 [heading Remarks]\r
2741 Only called for responses. 
2742 [endsect]\r[section:set_target_impl http::basic_fields::set_target_impl]\r[indexterm2 set_target_impl..http::basic_fields]\r
2743 Set or clear the target string. \r[heading Synopsis]\r```\rvoid\rset_target_impl(\r    string_view s);\r```\r\r[heading Description]\r
2744 [heading Remarks]\r
2745 Only called for requests. 
2746 [endsect]\r[section:swap http::basic_fields::swap]\r[indexterm2 swap..http::basic_fields]\r
2747 Swap two field containers. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/fields.hpp]\r\r\r```\rtemplate<\r    class Alloc>\rfriend void\rswap(\r    basic_fields< Alloc >& lhs,\r    basic_fields< Alloc >& rhs);\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:swap http::basic_fields::swap]\r[indexterm2 swap..http::basic_fields]\r
2748 Return a buffer sequence representing the trailers. \r[heading Synopsis]\r```\rvoid\rswap(\r    basic_fields& other);\r```\r\r[heading Description]\r
2749 This function returns a buffer sequence holding the serialized representation of the trailer fields promised in the Accept field. Before calling this function the Accept field must contain the exact trailer fields desired. Each field must also exist.Swap this container with another [endsect]\r[section:writer http::basic_fields::writer]\r[indexterm2 writer..http::basic_fields]\r
2750 The algorithm used to serialize the header. \r[heading Synopsis]\r\r```\rusing writer = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:basic_fields_dtor_ http::basic_fields::~basic_fields]\r[indexterm2 ~basic_fields..http::basic_fields]\r
2751 Destructor. \r[heading Synopsis]\r```\r~basic_fields();\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_fields__element http::basic_fields::element]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/fields.hpp]\r\r\r\r```\rstruct element :\r    public boost::intrusive::list_base_hook< boost::intrusive::link_mode< boost::intrusive::normal_link > >,\r    public boost::intrusive::set_base_hook< boost::intrusive::link_mode< boost::intrusive::normal_link > >,\r    public http::basic_fields< Allocator >::value_type\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__element.element [*element]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__element.name [*name]]]\r    [\r      Returns the field enum, which can be field::unknown. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__element.name_string [*name_string]]]\r    [\r      Returns the field name as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__element.value [*value]]]\r    [\r      Returns the value of the field. \r    ]\r  ]\r]\r\r[heading Description]\r[section:element http::basic_fields::element::element]\r[indexterm2 element..http::basic_fields::element]\r\r[heading Synopsis]\r```\relement(\r    field name,\r    string_view sname,\r    string_view value);\r```\r\r[heading Description]\r[endsect]\r[section:name http::basic_fields::element::name]\r(Inherited from `http::basic_fields`)\r\r[indexterm2 name..http::basic_fields::element]\r
2752 Returns the field enum, which can be [link beast.ref.boost__beast__http__field `http::unknown`]. \r[heading Synopsis]\r```\rfield\rname() const;\r```\r\r[heading Description]\r[endsect]\r[section:name_string http::basic_fields::element::name_string]\r(Inherited from `http::basic_fields`)\r\r[indexterm2 name_string..http::basic_fields::element]\r
2753 Returns the field name as a string. \r[heading Synopsis]\r```\rstring_view const\rname_string() const;\r```\r\r[heading Description]\r[endsect]\r[section:value http::basic_fields::element::value]\r(Inherited from `http::basic_fields`)\r\r[indexterm2 value..http::basic_fields::element]\r
2754 Returns the value of the field. \r[heading Synopsis]\r```\rstring_view const\rvalue() const;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_fields__value_type http::basic_fields::value_type]\r
2755 The type of element used to represent a field. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/fields.hpp]\r\r\r\r```\rclass value_type\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__value_type.name [*name]]]\r    [\r      Returns the field enum, which can be field::unknown. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__value_type.name_string [*name_string]]]\r    [\r      Returns the field name as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__value_type.operator_eq_ [*operator=]]]\r    [\r      Assignment (deleted) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__value_type.value [*value]]]\r    [\r      Returns the value of the field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__value_type.value_type [*value_type]]]\r    [\r      Constructor (deleted) \r    ]\r  ]\r]\r[heading Protected Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__value_type.value_type [*value_type]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r[section:name http::basic_fields::value_type::name]\r[indexterm2 name..http::basic_fields::value_type]\r
2756 Returns the field enum, which can be [link beast.ref.boost__beast__http__field `http::unknown`]. \r[heading Synopsis]\r```\rfield\rname() const;\r```\r\r[heading Description]\r[endsect]\r[section:name_string http::basic_fields::value_type::name_string]\r[indexterm2 name_string..http::basic_fields::value_type]\r
2757 Returns the field name as a string. \r[heading Synopsis]\r```\rstring_view const\rname_string() const;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ http::basic_fields::value_type::operator=]\r[indexterm2 operator=..http::basic_fields::value_type]\r
2758 Assignment (deleted) \r[heading Synopsis]\r```\rvalue_type&\roperator=(\r    value_type const&);\r```\r\r[heading Description]\r[endsect]\r[section:value http::basic_fields::value_type::value]\r[indexterm2 value..http::basic_fields::value_type]\r
2759 Returns the value of the field. \r[heading Synopsis]\r```\rstring_view const\rvalue() const;\r```\r\r[heading Description]\r[endsect]\r[section:value_type http::basic_fields::value_type::value_type]\r[indexterm2 value_type..http::basic_fields::value_type]\r\r[heading Synopsis]\r```\rvalue_type(\r    field name,\r    string_view sname,\r    string_view value);\r```\r\r[heading Description]\r[endsect]\r[section:value_type http::basic_fields::value_type::value_type]\r[indexterm2 value_type..http::basic_fields::value_type]\r
2760 Constructor (deleted) \r[heading Synopsis]\r```\rvalue_type(\r    value_type const&);\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_file_body http::basic_file_body]\r
2761 A message body represented by a file on the filesystem. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/basic_file_body.hpp]\r\r\r\r```\rtemplate<\r    class File>\rstruct basic_file_body\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__reader [*reader]]]\r    [\r      Algorithm for storing buffers when parsing. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type [*value_type]]]\r    [\r      The type of the message::body member. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__writer [*writer]]]\r    [\r      Algorithm for retrieving buffers when serializing. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body.file_type [*file_type]]]\r    [\r      The type of File this body uses. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body.size [*size]]]\r    [\r      Returns the size of the body. \r    ]\r  ]\r]\r\r[heading Description]\r
2762 Messages with this type have bodies represented by a file on the file system. When parsing a message using this body type, the data is stored in the file pointed to by the path, which must be writable. When serializing, the implementation will read the file and present those octets as the body content. This may be used to serve content from a directory as part of a web service.
2763 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`File`][\r    
2764 The implementation to use for accessing files. This type must meet the requirements of ['File]. \r  ]]\r]\r
2765 [section:file_type http::basic_file_body::file_type]\r[indexterm2 file_type..http::basic_file_body]\r
2766 The type of File this body uses. \r[heading Synopsis]\r\r```\rusing file_type = File;\r```\r\r[heading Description]\r[endsect]\r[section:size http::basic_file_body::size]\r[indexterm2 size..http::basic_file_body]\r
2767 Returns the size of the body. \r[heading Synopsis]\r```\rstatic\rstd::uint64_t\rsize(\r    value_type const& body);\r```\r\r[heading Description]\r
2768 [heading Parameters]\r[table [[Name][Description]]\r  [[`body`][\r    
2769 The file body to use \r  ]]\r]\r
2770 [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_file_body__reader http::basic_file_body::reader]\r
2771 Algorithm for storing buffers when parsing. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/basic_file_body.hpp]\r\r\r\r```\rclass reader\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__reader.finish [*finish]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__reader.init [*init]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__reader.put [*put]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__reader.reader [*reader]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r
2772 Objects of this type are created during parsing to store incoming buffers representing the body. [section:finish http::basic_file_body::reader::finish]\r[indexterm2 finish..http::basic_file_body::reader]\r\r[heading Synopsis]\r```\rvoid\rfinish(\r    error_code& ec);\r```\r\r[heading Description]\r[endsect]\r[section:init http::basic_file_body::reader::init]\r[indexterm2 init..http::basic_file_body::reader]\r\r[heading Synopsis]\r```\rvoid\rinit(\r    boost::optional< std::uint64_t > const&,\r    error_code& ec);\r```\r\r[heading Description]\r[endsect]\r[section:put http::basic_file_body::reader::put]\r[indexterm2 put..http::basic_file_body::reader]\r\r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rput(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r[endsect]\r[section:reader http::basic_file_body::reader::reader]\r[indexterm2 reader..http::basic_file_body::reader]\r\r[heading Synopsis]\r```\rtemplate<\r    bool isRequest,\r    class __Fields__>\rreader(\r    header< isRequest, Fields >& h,\r    value_type& b);\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_file_body__value_type http::basic_file_body::value_type]\r
2773 The type of the [link beast.ref.boost__beast__http__message.body `http::message::body`] member. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/basic_file_body.hpp]\r\r\r\r```\rclass value_type\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.close [*close]]]\r    [\r      Close the file if open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.is_open [*is_open]]]\r    [\r      Returns true if the file is open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.open [*open]]]\r    [\r      Open a file at the given path with the specified mode. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.operator_eq_ [*operator=]]]\r    [\r      Move assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.reset [*reset]]]\r    [\r      Set the open file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.size [*size]]]\r    [\r      Returns the size of the file if open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.value_type [*value_type]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.value_type_dtor_ [*~value_type]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Friends]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type.basic_file_body [*basic_file_body]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r
2774 Messages declared using `basic_file_body` will have this type for the body member. This rich class interface allow the file to be opened with the file handle maintained directly in the object, which is attached to the message. [section:basic_file_body http::basic_file_body::value_type::basic_file_body]\r[indexterm2 basic_file_body..http::basic_file_body::value_type]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/basic_file_body.hpp]\r\r\r```\rfriend struct\rbasic_file_body();\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:close http::basic_file_body::value_type::close]\r[indexterm2 close..http::basic_file_body::value_type]\r
2775 Close the file if open. \r[heading Synopsis]\r```\rvoid\rclose();\r```\r\r[heading Description]\r[endsect]\r[section:is_open http::basic_file_body::value_type::is_open]\r[indexterm2 is_open..http::basic_file_body::value_type]\r
2776 Returns `true` if the file is open. \r[heading Synopsis]\r```\rbool\ris_open() const;\r```\r\r[heading Description]\r[endsect]\r[section:open http::basic_file_body::value_type::open]\r[indexterm2 open..http::basic_file_body::value_type]\r
2777 Open a file at the given path with the specified mode. \r[heading Synopsis]\r```\rvoid\ropen(\r    char const* path,\r    file_mode mode,\r    error_code& ec);\r```\r\r[heading Description]\r
2778 [heading Parameters]\r[table [[Name][Description]]\r  [[`path`][\r    
2779 The utf-8 encoded path to the file\r  ]]\r  [[`mode`][\r    
2780 The file mode to use\r  ]]\r  [[`ec`][\r    
2781 Set to the error, if any occurred \r  ]]\r]\r
2782 [endsect]\r[section:operator_eq_ http::basic_file_body::value_type::operator=]\r[indexterm2 operator=..http::basic_file_body::value_type]\r
2783 Move assignment. \r[heading Synopsis]\r```\rvalue_type&\roperator=(\r    value_type&& other);\r```\r\r[heading Description]\r[endsect]\r[section:reset http::basic_file_body::value_type::reset]\r[indexterm2 reset..http::basic_file_body::value_type]\r
2784 Set the open file. \r[heading Synopsis]\r```\rvoid\rreset(\r    File&& file,\r    error_code& ec);\r```\r\r[heading Description]\r
2785 This function is used to set the open file. Any previously set file will be closed.
2786 [heading Parameters]\r[table [[Name][Description]]\r  [[`file`][\r    
2787 The file to set. The file must be open or else an error occurs\r  ]]\r  [[`ec`][\r    
2788 Set to the error, if any occurred \r  ]]\r]\r
2789 [endsect]\r[section:size http::basic_file_body::value_type::size]\r[indexterm2 size..http::basic_file_body::value_type]\r
2790 Returns the size of the file if open. \r[heading Synopsis]\r```\rstd::uint64_t\rsize() const;\r```\r\r[heading Description]\r[endsect]\r[section:value_type http::basic_file_body::value_type::value_type]\r[indexterm2 value_type..http::basic_file_body::value_type]\r
2791 Constructor. ```\r``[link beast.ref.boost__beast__http__basic_file_body__value_type.value_type.overload1 value_type]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_file_body__value_type.value_type.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__basic_file_body__value_type.value_type.overload2 value_type]``(\r    value_type&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_file_body__value_type.value_type.overload2 more...]]``\r```\r[section:overload1 http::basic_file_body::value_type::value_type (1 of 2 overloads)]\r
2792 Constructor. \r[heading Synopsis]\r```\rvalue_type();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::basic_file_body::value_type::value_type (2 of 2 overloads)]\r
2793 Constructor. \r[heading Synopsis]\r```\rvalue_type(\r    value_type&& other);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:value_type_dtor_ http::basic_file_body::value_type::~value_type]\r[indexterm2 ~value_type..http::basic_file_body::value_type]\r
2794 Destructor. \r[heading Synopsis]\r```\r~value_type();\r```\r\r[heading Description]\r
2795 If the file is open, it is closed first. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_file_body__writer http::basic_file_body::writer]\r
2796 Algorithm for retrieving buffers when serializing. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/basic_file_body.hpp]\r\r\r\r```\rclass writer\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__writer.const_buffers_type [*const_buffers_type]]]\r    [\r      \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__writer.get [*get]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__writer.init [*init]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__writer.writer [*writer]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r
2797 Objects of this type are created during serialization to extract the buffers representing the body. [section:const_buffers_type http::basic_file_body::writer::const_buffers_type]\r[indexterm2 const_buffers_type..http::basic_file_body::writer]\r\r[heading Synopsis]\r\r```\rusing const_buffers_type = net::const_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:get http::basic_file_body::writer::get]\r[indexterm2 get..http::basic_file_body::writer]\r\r[heading Synopsis]\r```\rboost::optional< std::pair< const_buffers_type, bool > >\rget(\r    error_code& ec);\r```\r\r[heading Description]\r[endsect]\r[section:init http::basic_file_body::writer::init]\r[indexterm2 init..http::basic_file_body::writer]\r\r[heading Synopsis]\r```\rvoid\rinit(\r    error_code& ec);\r```\r\r[heading Description]\r[endsect]\r[section:writer http::basic_file_body::writer::writer]\r[indexterm2 writer..http::basic_file_body::writer]\r\r[heading Synopsis]\r```\rtemplate<\r    bool isRequest,\r    class __Fields__>\rwriter(\r    header< isRequest, Fields >& h,\r    value_type& b);\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_parser http::basic_parser]\r
2798 A parser for decoding HTTP/1 wire format messages. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/basic_parser.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest>\rclass basic_parser :\r    private basic_parser_base\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.is_request [*is_request]]]\r    [\r      true if this parser parses requests, false for responses. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.basic_parser [*basic_parser]]]\r    [\r      Copy constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.body_limit [*body_limit]]]\r    [\r      Set the limit on the payload body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.chunked [*chunked]]]\r    [\r      Returns true if the last value for Transfer-Encoding is "chunked". \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.content_length [*content_length]]]\r    [\r      Returns the optional value of Content-Length if known. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.content_length_remaining [*content_length_remaining]]]\r    [\r      Returns the remaining content length if known. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.eager [*eager]]]\r    [\r      Returns true if the eager parse option is set. \r\r      Set the eager parse option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.got_some [*got_some]]]\r    [\r      Returns true if the parser has received at least one byte of input. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.header_limit [*header_limit]]]\r    [\r      Set a limit on the total size of the header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.is_done [*is_done]]]\r    [\r      Returns true if the message is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.is_header_done [*is_header_done]]]\r    [\r      Returns true if a the parser has produced the full header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.keep_alive [*keep_alive]]]\r    [\r      Returns true if the message has keep-alive connection semantics. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.need_eof [*need_eof]]]\r    [\r      Returns true if the message semantics require an end of file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.operator_eq_ [*operator=]]]\r    [\r      Copy assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.put [*put]]]\r    [\r      Write a buffer sequence to the parser. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.put_eof [*put_eof]]]\r    [\r      Inform the parser that the end of stream was reached. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.skip [*skip]]]\r    [\r      Returns true if the skip parse option is set. \r\r      Set the skip parse option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.upgrade [*upgrade]]]\r    [\r      Returns true if the message is an upgrade message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.basic_parser_dtor_ [*~basic_parser]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Protected Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.basic_parser [*basic_parser]]]\r    [\r      Default constructor. \r\r      Move constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_body_impl [*on_body_impl]]]\r    [\r      Called each time additional data is received representing the content body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_body_init_impl [*on_body_init_impl]]]\r    [\r      Called once before the body is processed. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_chunk_body_impl [*on_chunk_body_impl]]]\r    [\r      Called each time additional data is received representing part of a body chunk. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_chunk_header_impl [*on_chunk_header_impl]]]\r    [\r      Called each time a new chunk header of a chunk encoded body is received. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_field_impl [*on_field_impl]]]\r    [\r      Called once for each complete field in the HTTP header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_finish_impl [*on_finish_impl]]]\r    [\r      Called once when the complete message is received. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_header_impl [*on_header_impl]]]\r    [\r      Called once after the complete HTTP header is received. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_request_impl [*on_request_impl]]]\r    [\r      Called after receiving the request-line. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.on_response_impl [*on_response_impl]]]\r    [\r      Called after receiving the status-line. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_parser.operator_eq_ [*operator=]]]\r    [\r      Move assignment. \r    ]\r  ]\r]\r\r[heading Description]\r
2799 This parser is designed to efficiently parse messages in the HTTP/1 wire format. It allocates no memory when input is presented as a single contiguous buffer, and uses minimal state. It will handle chunked encoding and it understands the semantics of the Connection, Content-Length, and Upgrade fields. The parser is optimized for the case where the input buffer sequence consists of a single contiguous buffer. The [link beast.ref.boost__beast__basic_flat_buffer `basic_flat_buffer`] class is provided, which guarantees that the input sequence of the stream buffer will be represented by exactly one contiguous buffer. To ensure the optimum performance of the parser, use [link beast.ref.boost__beast__basic_flat_buffer `basic_flat_buffer`] with HTTP algorithms such as [link beast.ref.boost__beast__http__read `http::read`], [link beast.ref.boost__beast__http__read_some `http::read_some`], [link beast.ref.boost__beast__http__async_read `http::async_read`], and [link beast.ref.boost__beast__http__async_read_some `http::async_read_some`]. Alternatively, the caller may use custom techniques to ensure that the structured portion of the HTTP message (header or chunk header) is contained in a linear buffer.
2800 The interface to the parser uses virtual member functions. To use this class, derive your type from [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. When bytes are presented, the implementation will make a series of zero or more calls to virtual functions, which the derived class must implement.
2801 Every virtual function must be provided by the derived class, or else a compilation error will be generated. The implementation will make sure that `ec` is clear before each virtual function is invoked. If a virtual function sets an error, it is propagated out of the parser to the caller.
2802 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
2803 A `bool` indicating whether the parser will be presented with request or response message.\r  ]]\r]\r
2804 [heading Remarks]\r
2805 If the parser encounters a field value with obs-fold longer than 4 kilobytes in length, an error is generated. 
2806 [section:basic_parser http::basic_parser::basic_parser]\r[indexterm2 basic_parser..http::basic_parser]\r
2807 Default constructor. ```\r``[link beast.ref.boost__beast__http__basic_parser.basic_parser.overload1 basic_parser]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_parser.basic_parser.overload1 more...]]``\r\r```\r
2808 Move constructor. ```\r``[link beast.ref.boost__beast__http__basic_parser.basic_parser.overload2 basic_parser]``(\r    basic_parser&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_parser.basic_parser.overload2 more...]]``\r```\r[section:overload1 http::basic_parser::basic_parser (1 of 2 overloads)]\r
2809 Default constructor. \r[heading Synopsis]\r```\rbasic_parser();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::basic_parser::basic_parser (2 of 2 overloads)]\r
2810 Move constructor. \r[heading Synopsis]\r```\rbasic_parser(\r    basic_parser&&);\r```\r\r[heading Description]\r
2811 [heading Remarks]\r
2812
2813 After the move, the only valid operation on the moved-from object is destruction. [endsect]\r[endsect]\r\r[section:basic_parser http::basic_parser::basic_parser]\r[indexterm2 basic_parser..http::basic_parser]\r
2814 Copy constructor. \r[heading Synopsis]\r```\rbasic_parser(\r    basic_parser const&);\r```\r\r[heading Description]\r[endsect]\r[section:body_limit http::basic_parser::body_limit]\r[indexterm2 body_limit..http::basic_parser]\r
2815 Set the limit on the payload body. \r[heading Synopsis]\r```\rvoid\rbody_limit(\r    std::uint64_t v);\r```\r\r[heading Description]\r
2816 This function sets the maximum allowed size of the payload body, before any encodings except chunked have been removed. Depending on the message semantics, one of these cases will apply:
2817
2818 * The Content-Length is specified and exceeds the limit. In this case the result [link beast.ref.boost__beast__http__error `http::body_limit`] is returned immediately after the header is parsed.
2819
2820
2821 * The Content-Length is unspecified and the chunked encoding is not specified as the last encoding. In this case the end of message is determined by the end of file indicator on the associated stream or input source. If a sufficient number of body payload octets are presented to the parser to exceed the configured limit, the parse fails with the result [link beast.ref.boost__beast__http__error `http::body_limit`]
2822
2823
2824 * The Transfer-Encoding specifies the chunked encoding as the last encoding. In this case, when the number of payload body octets produced by removing the chunked encoding exceeds the configured limit, the parse fails with the result [link beast.ref.boost__beast__http__error `http::body_limit`].
2825
2826 Setting the limit after any body octets have been parsed results in undefined behavior.
2827 The default limit is 1MB for requests and 8MB for responses.
2828 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
2829 The payload body limit to set \r  ]]\r]\r
2830 [endsect]\r[section:chunked http::basic_parser::chunked]\r[indexterm2 chunked..http::basic_parser]\r
2831 Returns `true` if the last value for Transfer-Encoding is "chunked". \r[heading Synopsis]\r```\rbool\rchunked() const;\r```\r\r[heading Description]\r
2832 [heading Remarks]\r
2833 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
2834 [endsect]\r[section:content_length http::basic_parser::content_length]\r[indexterm2 content_length..http::basic_parser]\r
2835 Returns the optional value of Content-Length if known. \r[heading Synopsis]\r```\rboost::optional< std::uint64_t >\rcontent_length() const;\r```\r\r[heading Description]\r
2836 [heading Remarks]\r
2837 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
2838 [endsect]\r[section:content_length_remaining http::basic_parser::content_length_remaining]\r[indexterm2 content_length_remaining..http::basic_parser]\r
2839 Returns the remaining content length if known. \r[heading Synopsis]\r```\rboost::optional< std::uint64_t >\rcontent_length_remaining() const;\r```\r\r[heading Description]\r
2840 If the message header specifies a Content-Length, the return value will be the number of bytes remaining in the payload body have not yet been parsed.
2841 [heading Remarks]\r
2842 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
2843 [endsect]\r[section:eager http::basic_parser::eager]\r[indexterm2 eager..http::basic_parser]\r
2844 Returns `true` if the eager parse option is set. ```\rbool\r``[link beast.ref.boost__beast__http__basic_parser.eager.overload1 eager]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_parser.eager.overload1 more...]]``\r\r```\r
2845 Set the eager parse option. ```\rvoid\r``[link beast.ref.boost__beast__http__basic_parser.eager.overload2 eager]``(\r    bool v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_parser.eager.overload2 more...]]``\r```\r[section:overload1 http::basic_parser::eager (1 of 2 overloads)]\r
2846 Returns `true` if the eager parse option is set. \r[heading Synopsis]\r```\rbool\reager() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::basic_parser::eager (2 of 2 overloads)]\r
2847 Set the eager parse option. \r[heading Synopsis]\r```\rvoid\reager(\r    bool v);\r```\r\r[heading Description]\r
2848 Normally the parser returns after successfully parsing a structured element (header, chunk header, or chunk body) even if there are octets remaining in the input. This is necessary when attempting to parse the header first, or when the caller wants to inspect information which may be invalidated by subsequent parsing, such as a chunk extension. The `eager` option controls whether the parser keeps going after parsing structured element if there are octets remaining in the buffer and no error occurs. This option is automatically set or cleared during certain stream operations to improve performance with no change in functionality.
2849 The default setting is `false`.
2850 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
2851 `true` to set the eager parse option or `false` to disable it. \r  ]]\r]\r
2852 [endsect]\r[endsect]\r\r[section:got_some http::basic_parser::got_some]\r[indexterm2 got_some..http::basic_parser]\r
2853 Returns `true` if the parser has received at least one byte of input. \r[heading Synopsis]\r```\rbool\rgot_some() const;\r```\r\r[heading Description]\r[endsect]\r[section:header_limit http::basic_parser::header_limit]\r[indexterm2 header_limit..http::basic_parser]\r
2854 Set a limit on the total size of the header. \r[heading Synopsis]\r```\rvoid\rheader_limit(\r    std::uint32_t v);\r```\r\r[heading Description]\r
2855 This function sets the maximum allowed size of the header including all field name, value, and delimiter characters and also including the CRLF sequences in the serialized input. If the end of the header is not found within the limit of the header size, the error [link beast.ref.boost__beast__http__error `http::header_limit`] is returned by [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`].
2856 Setting the limit after any header octets have been parsed results in undefined behavior. [endsect]\r[section:is_done http::basic_parser::is_done]\r[indexterm2 is_done..http::basic_parser]\r
2857 Returns `true` if the message is complete. \r[heading Synopsis]\r```\rbool\ris_done() const;\r```\r\r[heading Description]\r
2858 The message is complete after the full header is prduced and one of the following is true:
2859
2860 * The skip body option was set.
2861
2862
2863 * The semantics of the message indicate there is no body.
2864
2865
2866 * The semantics of the message indicate a body is expected, and the entire body was parsed. 
2867
2868 [endsect]\r[section:is_header_done http::basic_parser::is_header_done]\r[indexterm2 is_header_done..http::basic_parser]\r
2869 Returns `true` if a the parser has produced the full header. \r[heading Synopsis]\r```\rbool\ris_header_done() const;\r```\r\r[heading Description]\r[endsect]\r[section:is_request http::basic_parser::is_request]\r[indexterm2 is_request..http::basic_parser]\r
2870 `true` if this parser parses requests, `false` for responses. \r[heading Synopsis]\r\r```\rusing is_request = std::integral_constant< bool, isRequest >;\r```\r\r[heading Description]\r[endsect]\r[section:keep_alive http::basic_parser::keep_alive]\r[indexterm2 keep_alive..http::basic_parser]\r
2871 Returns `true` if the message has keep-alive connection semantics. \r[heading Synopsis]\r```\rbool\rkeep_alive() const;\r```\r\r[heading Description]\r
2872 This function always returns `false` if [link beast.ref.boost__beast__http__basic_parser.need_eof `http::basic_parser::need_eof`] would return `false`.
2873 [heading Remarks]\r
2874 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
2875 [endsect]\r[section:need_eof http::basic_parser::need_eof]\r[indexterm2 need_eof..http::basic_parser]\r
2876 Returns `true` if the message semantics require an end of file. \r[heading Synopsis]\r```\rbool\rneed_eof() const;\r```\r\r[heading Description]\r
2877 Depending on the contents of the header, the parser may require and end of file notification to know where the end of the body lies. If this function returns `true` it will be necessary to call [link beast.ref.boost__beast__http__basic_parser.put_eof `http::basic_parser::put_eof`] when there will never be additional data from the input. [endsect]\r[section:on_body_impl http::basic_parser::on_body_impl]\r[indexterm2 on_body_impl..http::basic_parser]\r
2878 Called each time additional data is received representing the content body. \r[heading Synopsis]\r```\rstd::size_t\ron_body_impl(\r    string_view body,\r    error_code& ec);\r```\r\r[heading Description]\r
2879 This virtual function is invoked for each piece of the body which is received while parsing of a message. This function is only used when no chunked transfer encoding is present.
2880 [heading Parameters]\r[table [[Name][Description]]\r  [[`body`][\r    
2881 A string holding the additional body contents. This may contain nulls or unprintable characters.\r  ]]\r  [[`ec`][\r    
2882 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked.\r  ]]\r]\r
2883 [heading See Also]\r
2884 [link beast.ref.boost__beast__http__basic_parser.on_chunk_body_impl `http::basic_parser::on_chunk_body_impl`] 
2885 [endsect]\r[section:on_body_init_impl http::basic_parser::on_body_init_impl]\r[indexterm2 on_body_init_impl..http::basic_parser]\r
2886 Called once before the body is processed. \r[heading Synopsis]\r```\rvoid\ron_body_init_impl(\r    boost::optional< std::uint64_t > const& content_length,\r    error_code& ec);\r```\r\r[heading Description]\r
2887 This virtual function is invoked once, before the content body is processed (but after the complete header is received).
2888 [heading Parameters]\r[table [[Name][Description]]\r  [[`content_length`][\r    
2889 A value representing the content length in bytes if the length is known (this can include a zero length). Otherwise, the value will be `boost::none`.\r  ]]\r  [[`ec`][\r    
2890 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked. \r  ]]\r]\r
2891 [endsect]\r[section:on_chunk_body_impl http::basic_parser::on_chunk_body_impl]\r[indexterm2 on_chunk_body_impl..http::basic_parser]\r
2892 Called each time additional data is received representing part of a body chunk. \r[heading Synopsis]\r```\rstd::size_t\ron_chunk_body_impl(\r    std::uint64_t remain,\r    string_view body,\r    error_code& ec);\r```\r\r[heading Description]\r
2893 This virtual function is invoked for each piece of the body which is received while parsing of a message. This function is only used when no chunked transfer encoding is present.
2894 [heading Parameters]\r[table [[Name][Description]]\r  [[`remain`][\r    
2895 The number of bytes remaining in this chunk. This includes the contents of passed `body`. If this value is zero, then this represents the final chunk.\r  ]]\r  [[`body`][\r    
2896 A string holding the additional body contents. This may contain nulls or unprintable characters.\r  ]]\r  [[`ec`][\r    
2897 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked.\r  ]]\r]\r
2898 [heading Return Value]
2899 This function should return the number of bytes actually consumed from the `body` value. Any bytes that are not consumed on this call will be presented in a subsequent call.
2900 [heading See Also]\r
2901 [link beast.ref.boost__beast__http__basic_parser.on_body_impl `http::basic_parser::on_body_impl`] 
2902 [endsect]\r[section:on_chunk_header_impl http::basic_parser::on_chunk_header_impl]\r[indexterm2 on_chunk_header_impl..http::basic_parser]\r
2903 Called each time a new chunk header of a chunk encoded body is received. \r[heading Synopsis]\r```\rvoid\ron_chunk_header_impl(\r    std::uint64_t size,\r    string_view extensions,\r    error_code& ec);\r```\r\r[heading Description]\r
2904 This function is invoked each time a new chunk header is received. The function is only used when the chunked transfer encoding is present.
2905 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
2906 The size of this chunk, in bytes.\r  ]]\r  [[`extensions`][\r    
2907 A string containing the entire chunk extensions. This may be empty, indicating no extensions are present.\r  ]]\r  [[`ec`][\r    
2908 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked. \r  ]]\r]\r
2909 [endsect]\r[section:on_field_impl http::basic_parser::on_field_impl]\r[indexterm2 on_field_impl..http::basic_parser]\r
2910 Called once for each complete field in the HTTP header. \r[heading Synopsis]\r```\rvoid\ron_field_impl(\r    field name,\r    string_view name_string,\r    string_view value,\r    error_code& ec);\r```\r\r[heading Description]\r
2911 This virtual function is invoked for each field that is received while parsing an HTTP message.
2912 [heading Parameters]\r[table [[Name][Description]]\r  [[`name`][\r    
2913 The known field enum value. If the name of the field is not recognized, this value will be [link beast.ref.boost__beast__http__field `http::unknown`].\r  ]]\r  [[`name_string`][\r    
2914 The exact name of the field as received from the input, represented as a string.\r  ]]\r  [[`value`][\r    
2915 A string holding the value of the field.\r  ]]\r  [[`ec`][\r    
2916 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked. \r  ]]\r]\r
2917 [endsect]\r[section:on_finish_impl http::basic_parser::on_finish_impl]\r[indexterm2 on_finish_impl..http::basic_parser]\r
2918 Called once when the complete message is received. \r[heading Synopsis]\r```\rvoid\ron_finish_impl(\r    error_code& ec);\r```\r\r[heading Description]\r
2919 This virtual function is invoked once, after successfully parsing a complete HTTP message.
2920 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
2921 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked. \r  ]]\r]\r
2922 [endsect]\r[section:on_header_impl http::basic_parser::on_header_impl]\r[indexterm2 on_header_impl..http::basic_parser]\r
2923 Called once after the complete HTTP header is received. \r[heading Synopsis]\r```\rvoid\ron_header_impl(\r    error_code& ec);\r```\r\r[heading Description]\r
2924 This virtual function is invoked once, after the complete HTTP header is received while parsing a message.
2925 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
2926 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked. \r  ]]\r]\r
2927 [endsect]\r[section:on_request_impl http::basic_parser::on_request_impl]\r[indexterm2 on_request_impl..http::basic_parser]\r
2928 Called after receiving the request-line. \r[heading Synopsis]\r```\rvoid\ron_request_impl(\r    verb method,\r    string_view method_str,\r    string_view target,\r    int version,\r    error_code& ec);\r```\r\r[heading Description]\r
2929 This virtual function is invoked after receiving a request-line when parsing HTTP requests. It can only be called when `isRequest == true`.
2930 [heading Parameters]\r[table [[Name][Description]]\r  [[`method`][\r    
2931 The verb enumeration. If the method string is not one of the predefined strings, this value will be [link beast.ref.boost__beast__http__field `http::unknown`].\r  ]]\r  [[`method_str`][\r    
2932 The unmodified string representing the verb.\r  ]]\r  [[`target`][\r    
2933 The request-target.\r  ]]\r  [[`version`][\r    
2934 The HTTP-version. This will be 10 for HTTP/1.0, and 11 for HTTP/1.1.\r  ]]\r  [[`ec`][\r    
2935 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked. \r  ]]\r]\r
2936 [endsect]\r[section:on_response_impl http::basic_parser::on_response_impl]\r[indexterm2 on_response_impl..http::basic_parser]\r
2937 Called after receiving the status-line. \r[heading Synopsis]\r```\rvoid\ron_response_impl(\r    int code,\r    string_view reason,\r    int version,\r    error_code& ec);\r```\r\r[heading Description]\r
2938 This virtual function is invoked after receiving a status-line when parsing HTTP responses. It can only be called when `isRequest == false`.
2939 [heading Parameters]\r[table [[Name][Description]]\r  [[`code`][\r    
2940 The numeric status code.\r  ]]\r  [[`reason`][\r    
2941 The reason-phrase. Note that this value is now obsolete, and only provided for historical or diagnostic purposes.\r  ]]\r  [[`version`][\r    
2942 The HTTP-version. This will be 10 for HTTP/1.0, and 11 for HTTP/1.1.\r  ]]\r  [[`ec`][\r    
2943 An output parameter which the function may set to indicate an error. The error will be clear before this function is invoked. \r  ]]\r]\r
2944 [endsect]\r[section:operator_eq_ http::basic_parser::operator=]\r[indexterm2 operator=..http::basic_parser]\r
2945 Move assignment. \r[heading Synopsis]\r```\rbasic_parser&\roperator=(\r    basic_parser&&);\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ http::basic_parser::operator=]\r[indexterm2 operator=..http::basic_parser]\r
2946 Copy assignment. \r[heading Synopsis]\r```\rbasic_parser&\roperator=(\r    basic_parser const&);\r```\r\r[heading Description]\r[endsect]\r[section:put http::basic_parser::put]\r[indexterm2 put..http::basic_parser]\r
2947 Write a buffer sequence to the parser. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rput(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
2948 This function attempts to incrementally parse the HTTP message data stored in the caller provided buffers. Upon success, a positive return value indicates that the parser made forward progress, consuming that number of bytes.
2949 In some cases there may be an insufficient number of octets in the input buffer in order to make forward progress. This is indicated by the code [link beast.ref.boost__beast__http__error `http::need_more`]. When this happens, the caller should place additional bytes into the buffer sequence and call [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`] again.
2950 The error code [link beast.ref.boost__beast__http__error `http::need_more`] is special. When this error is returned, a subsequent call to [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`] may succeed if the buffers have been updated. Otherwise, upon error the parser may not be restarted.
2951 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
2952 An object meeting the requirements of ['ConstBufferSequence] that represents the next chunk of message data. If the length of this buffer sequence is one, the implementation will not allocate additional memory. The class [link beast.ref.boost__beast__basic_flat_buffer `basic_flat_buffer`] is provided as one way to meet this requirement\r  ]]\r  [[`ec`][\r    
2953 Set to the error, if any occurred.\r  ]]\r]\r
2954 [heading Return Value]
2955 The number of octets consumed in the buffer sequence. The caller should remove these octets even if the error is set. 
2956 [endsect]\r[section:put_eof http::basic_parser::put_eof]\r[indexterm2 put_eof..http::basic_parser]\r
2957 Inform the parser that the end of stream was reached. \r[heading Synopsis]\r```\rvoid\rput_eof(\r    error_code& ec);\r```\r\r[heading Description]\r
2958 In certain cases, HTTP needs to know where the end of the stream is. For example, sometimes servers send responses without Content-Length and expect the client to consume input (for the body) until EOF. Callbacks and errors will still be processed as usual.
2959 This is typically called when a read from the underlying stream object sets the error code to `net::error::eof`.
2960 [heading Remarks]\r
2961 Only valid after parsing a complete header.
2962 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
2963 Set to the error, if any occurred. \r  ]]\r]\r
2964 [endsect]\r[section:skip http::basic_parser::skip]\r[indexterm2 skip..http::basic_parser]\r
2965 Returns `true` if the skip parse option is set. ```\rbool\r``[link beast.ref.boost__beast__http__basic_parser.skip.overload1 skip]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_parser.skip.overload1 more...]]``\r\r```\r
2966 Set the skip parse option. ```\rvoid\r``[link beast.ref.boost__beast__http__basic_parser.skip.overload2 skip]``(\r    bool v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__basic_parser.skip.overload2 more...]]``\r```\r[section:overload1 http::basic_parser::skip (1 of 2 overloads)]\r
2967 Returns `true` if the skip parse option is set. \r[heading Synopsis]\r```\rbool\rskip() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::basic_parser::skip (2 of 2 overloads)]\r
2968 Set the skip parse option. \r[heading Synopsis]\r```\rvoid\rskip(\r    bool v);\r```\r\r[heading Description]\r
2969 This option controls whether or not the parser expects to see an HTTP body, regardless of the presence or absence of certain fields such as Content-Length or a chunked Transfer-Encoding. Depending on the request, some responses do not carry a body. For example, a 200 response to a CONNECT request from a tunneling proxy, or a response to a HEAD request. In these cases, callers may use this function inform the parser that no body is expected. The parser will consider the message complete after the header has been received.
2970 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
2971 `true` to set the skip body option or `false` to disable it.\r  ]]\r]\r
2972 [heading Remarks]\r
2973 This function must called before any bytes are processed. 
2974 [endsect]\r[endsect]\r\r[section:upgrade http::basic_parser::upgrade]\r[indexterm2 upgrade..http::basic_parser]\r
2975 Returns `true` if the message is an upgrade message. \r[heading Synopsis]\r```\rbool\rupgrade() const;\r```\r\r[heading Description]\r
2976 [heading Remarks]\r
2977 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
2978 [endsect]\r[section:basic_parser_dtor_ http::basic_parser::~basic_parser]\r[indexterm2 ~basic_parser..http::basic_parser]\r
2979 Destructor. \r[heading Synopsis]\r```\rvirtual\r~basic_parser();\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__basic_string_body http::basic_string_body]\r
2980 A ['Body] using `std::basic_string` \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/string_body.hpp]\r\r\r\r```\rtemplate<\r    class CharT,\r    class Traits = std::char_traits<CharT>,\r    class __Allocator__ = std::allocator<CharT>>\rstruct basic_string_body\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_string_body.reader [*reader]]]\r    [\r      The algorithm for parsing the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_string_body.value_type [*value_type]]]\r    [\r      The type of container used for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_string_body.writer [*writer]]]\r    [\r      The algorithm for serializing the body. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_string_body.size [*size]]]\r    [\r      Returns the payload size of the body. \r    ]\r  ]\r]\r\r[heading Description]\r
2981 This body uses `std::basic_string` as a memory-based container for holding message payloads. Messages using this body type may be serialized and parsed. [section:reader http::basic_string_body::reader]\r[indexterm2 reader..http::basic_string_body]\r
2982 The algorithm for parsing the body. \r[heading Synopsis]\r\r```\rusing reader = ``['implementation-defined]``;\r```\r\r[heading Description]\r
2983 Meets the requirements of ['BodyReader]. [endsect]\r[section:size http::basic_string_body::size]\r[indexterm2 size..http::basic_string_body]\r
2984 Returns the payload size of the body. \r[heading Synopsis]\r```\rstatic\rstd::uint64_t\rsize(\r    value_type const& body);\r```\r\r[heading Description]\r
2985 When this body is used with [link beast.ref.boost__beast__http__message.prepare_payload `http::message::prepare_payload`], the Content-Length will be set to the payload size, and any chunked Transfer-Encoding will be removed. [endsect]\r[section:value_type http::basic_string_body::value_type]\r[indexterm2 value_type..http::basic_string_body]\r
2986 The type of container used for the body. \r[heading Synopsis]\r\r```\rusing value_type = std::basic_string< CharT, Traits, Allocator >;\r```\r\r[heading Description]\r
2987 This determines the type of [link beast.ref.boost__beast__http__message.body `http::message::body`] when this body type is used with a message container. [endsect]\r[section:writer http::basic_string_body::writer]\r[indexterm2 writer..http::basic_string_body]\r
2988 The algorithm for serializing the body. \r[heading Synopsis]\r\r```\rusing writer = ``['implementation-defined]``;\r```\r\r[heading Description]\r
2989 Meets the requirements of ['BodyWriter]. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__buffer_body http::buffer_body]\r
2990 A ['Body] using a caller provided buffer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/buffer_body.hpp]\r\r\r\r```\rstruct buffer_body\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__buffer_body__value_type [*value_type]]]\r    [\r      The type of the body member when used in a message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__buffer_body.reader [*reader]]]\r    [\r      The algorithm for parsing the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__buffer_body.writer [*writer]]]\r    [\r      The algorithm for serializing the body. \r    ]\r  ]\r]\r\r[heading Description]\r
2991 Messages using this body type may be serialized and parsed. To use this class, the caller must initialize the members of [link beast.ref.boost__beast__http__buffer_body__value_type `http::buffer_body::value_type`] to appropriate values before each call to read or write during a stream operation. [section:reader http::buffer_body::reader]\r[indexterm2 reader..http::buffer_body]\r
2992 The algorithm for parsing the body. \r[heading Synopsis]\r\r```\rusing reader = ``['implementation-defined]``;\r```\r\r[heading Description]\r
2993 Meets the requirements of ['BodyReader]. [endsect]\r[section:writer http::buffer_body::writer]\r[indexterm2 writer..http::buffer_body]\r
2994 The algorithm for serializing the body. \r[heading Synopsis]\r\r```\rusing writer = ``['implementation-defined]``;\r```\r\r[heading Description]\r
2995 Meets the requirements of ['BodyWriter]. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__buffer_body__value_type http::buffer_body::value_type]\r
2996 The type of the body member when used in a message. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/buffer_body.hpp]\r\r\r\r```\rstruct value_type\r```\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__buffer_body__value_type.data [*data]]]\r    [\r      A pointer to a contiguous area of memory of size octets, else nullptr. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__buffer_body__value_type.more [*more]]]\r    [\r      true if this is not the last buffer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__buffer_body__value_type.size [*size]]]\r    [\r      The number of octets in the buffer pointed to by data. \r    ]\r  ]\r]\r\r[heading Description]\r[section:data http::buffer_body::value_type::data]\r[indexterm2 data..http::buffer_body::value_type]\r
2997 A pointer to a contiguous area of memory of [link beast.ref.boost__beast__http__buffer_body__value_type.size `http::buffer_body::value_type::size`] octets, else `nullptr`. \r[heading Synopsis]\r```\rvoid * data = nullptr;\r```\r\r[heading Description]\r
2998 [heading When Serializing]
2999
3000 If this is `nullptr` and `more` is `true`, the error [link beast.ref.boost__beast__http__error `http::need_buffer`] will be returned from [link beast.ref.boost__beast__http__serializer.get `http::serializer::get`] Otherwise, the serializer will use the memory pointed to by `data` having `size` octets of valid storage as the next buffer representing the body.
3001 [heading When Parsing]
3002
3003 If this is `nullptr`, the error [link beast.ref.boost__beast__http__error `http::need_buffer`] will be returned from [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`]. Otherwise, the parser will store body octets into the memory pointed to by `data` having `size` octets of valid storage. After octets are stored, the `data` and `size` members are adjusted: `data` is incremented to point to the next octet after the data written, while `size` is decremented to reflect the remaining space at the memory location pointed to by `data`. [endsect]\r[section:more http::buffer_body::value_type::more]\r[indexterm2 more..http::buffer_body::value_type]\r
3004 `true` if this is not the last buffer. \r[heading Synopsis]\r```\rbool more = true;\r```\r\r[heading Description]\r
3005 [heading When Serializing]
3006
3007 If this is `true` and `data` is `nullptr`, the error [link beast.ref.boost__beast__http__error `http::need_buffer`] will be returned from [link beast.ref.boost__beast__http__serializer.get `http::serializer::get`]
3008 [heading When Parsing]
3009
3010 This field is not used during parsing. [endsect]\r[section:size http::buffer_body::value_type::size]\r[indexterm2 size..http::buffer_body::value_type]\r
3011 The number of octets in the buffer pointed to by [link beast.ref.boost__beast__http__buffer_body__value_type.data `http::buffer_body::value_type::data`]. \r[heading Synopsis]\r```\rstd::size_t size = 0;\r```\r\r[heading Description]\r
3012 [heading When Serializing]
3013
3014 If `data` is `nullptr` during serialization, this value is ignored. Otherwise, it represents the number of valid body octets pointed to by `data`.
3015 [heading When Parsing]
3016
3017 The value of this field will be decremented during parsing to indicate the number of remaining free octets in the buffer pointed to by `data`. When it reaches zero, the parser will return [link beast.ref.boost__beast__http__error `http::need_buffer`], indicating to the caller that the values of `data` and `size` should be updated to point to a new memory buffer. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__chunk_body http::chunk_body]\r
3018 A ['chunk]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rtemplate<\r    class __ConstBufferSequence__>\rclass chunk_body\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__chunk_body.const_iterator [*const_iterator]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_body.value_type [*value_type]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__chunk_body.begin [*begin]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_body.chunk_body [*chunk_body]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_body.end [*end]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r]\r\r[heading Description]\r
3019 This implements a ['ConstBufferSequence] representing a ['chunk]. The serialized format is as follows: \r```\r  chunk           = chunk-size [ chunk-ext ] CRLF chunk-data CRLF
3020   chunk-size      = 1*HEXDIG
3021   chunk-ext       = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
3022   chunk-ext-name  = token
3023   chunk-ext-val   = token / quoted-string
3024   chunk-data      = 1*OCTET ; a sequence of chunk-size octets
3025 ```\rThe chunk extension is optional.
3026 To use this class, pass an instance of it to a stream algorithm as the buffer sequence.
3027 [heading See Also]\r
3028 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3029 [section:begin http::chunk_body::begin]\r[indexterm2 begin..http::chunk_body]\r
3030 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:chunk_body http::chunk_body::chunk_body]\r[indexterm2 chunk_body..http::chunk_body]\r
3031 Constructor. ```\rexplicit\r``[link beast.ref.boost__beast__http__chunk_body.chunk_body.overload1 chunk_body]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_body.chunk_body.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__chunk_body.chunk_body.overload2 chunk_body]``(\r    ConstBufferSequence const& buffers,\r    string_view extensions);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_body.chunk_body.overload2 more...]]``\r\rtemplate<\r    class ChunkExtensions>\r``[link beast.ref.boost__beast__http__chunk_body.chunk_body.overload3 chunk_body]``(\r    ConstBufferSequence const& buffers,\r    ChunkExtensions&& extensions);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_body.chunk_body.overload3 more...]]``\r\rtemplate<\r    class ChunkExtensions,\r    class __Allocator__>\r``[link beast.ref.boost__beast__http__chunk_body.chunk_body.overload4 chunk_body]``(\r    ConstBufferSequence const& buffers,\r    ChunkExtensions&& extensions,\r    Allocator const& allocator);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_body.chunk_body.overload4 more...]]``\r```\r[section:overload1 http::chunk_body::chunk_body (1 of 4 overloads)]\r
3032 Constructor. \r[heading Synopsis]\r```\rchunk_body(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
3033 This constructs buffers representing a complete ['chunk] with no chunk extensions and having the size and contents of the specified buffer sequence.
3034 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3035 A buffer sequence representing the chunk body. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid while this object is in use.\r  ]]\r]\r
3036 [heading See Also]\r
3037 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3038 [endsect]\r[section:overload2 http::chunk_body::chunk_body (2 of 4 overloads)]\r
3039 Constructor. \r[heading Synopsis]\r```\rchunk_body(\r    ConstBufferSequence const& buffers,\r    string_view extensions);\r```\r\r[heading Description]\r
3040 This constructs buffers representing a complete ['chunk] with the passed chunk extensions and having the size and contents of the specified buffer sequence.
3041 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3042 A buffer sequence representing the chunk body. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid while this object is in use.\r  ]]\r  [[`extensions`][\r    
3043 The chunk extensions string. This string must be formatted correctly as per rfc7230, using this BNF syntax: \r```\r  chunk-ext       = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
3044   chunk-ext-name  = token
3045   chunk-ext-val   = token / quoted-string
3046 ```\rThe data pointed to by this string view must remain valid for the lifetime of any operations performed on the object.\r  ]]\r]\r
3047 [heading See Also]\r
3048 [@https://tools.ietf.org/html/rfc7230#section-4.1.1 https://tools.ietf.org/html/rfc7230#section-4.1.1] 
3049 [endsect]\r[section:overload3 http::chunk_body::chunk_body (3 of 4 overloads)]\r
3050 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class ChunkExtensions>\rchunk_body(\r    ConstBufferSequence const& buffers,\r    ChunkExtensions&& extensions);\r```\r\r[heading Description]\r
3051 This constructs buffers representing a complete ['chunk] with the passed chunk extensions and having the size and contents of the specified buffer sequence. The default allocator is used to provide storage for the extensions object.
3052 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3053 A buffer sequence representing the chunk body. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid while this object is in use.\r  ]]\r  [[`extensions`][\r    
3054 The chunk extensions object. The expression `extensions.str()` must be valid, and the return type must be convertible to [link beast.ref.boost__beast__string_view `string_view`]. This object will be copied or moved as needed to ensure that the chunk header object retains ownership of the buffers provided by the chunk extensions object.\r  ]]\r]\r
3055 [heading Remarks]\r
3056 This function participates in overload resolution only if [*ChunkExtensions] meets the requirements stated above.
3057 [heading See Also]\r
3058 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3059 [endsect]\r[section:overload4 http::chunk_body::chunk_body (4 of 4 overloads)]\r
3060 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class ChunkExtensions,\r    class __Allocator__>\rchunk_body(\r    ConstBufferSequence const& buffers,\r    ChunkExtensions&& extensions,\r    Allocator const& allocator);\r```\r\r[heading Description]\r
3061 This constructs buffers representing a complete ['chunk] with the passed chunk extensions and having the size and contents of the specified buffer sequence. The specified allocator is used to provide storage for the extensions object.
3062 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3063 A buffer sequence representing the chunk body. Although the buffers object may be copied as necessary, ownership of the underlying memory blocks is retained by the caller, which must guarantee that they remain valid while this object is in use.\r  ]]\r  [[`extensions`][\r    
3064 The chunk extensions object. The expression `extensions.str()` must be valid, and the return type must be convertible to [link beast.ref.boost__beast__string_view `string_view`]. This object will be copied or moved as needed to ensure that the chunk header object retains ownership of the buffers provided by the chunk extensions object.\r  ]]\r  [[`allocator`][\r    
3065 The allocator to provide storage for the moved or copied extensions object.\r  ]]\r]\r
3066 [heading Remarks]\r
3067 This function participates in overload resolution only if [*ChunkExtensions] meets the requirements stated above.
3068 [heading See Also]\r
3069 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3070 [endsect]\r[endsect]\r\r[section:const_iterator http::chunk_body::const_iterator]\r[indexterm2 const_iterator..http::chunk_body]\r
3071 Required for ['ConstBufferSequence] \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:end http::chunk_body::end]\r[indexterm2 end..http::chunk_body]\r
3072 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:value_type http::chunk_body::value_type]\r[indexterm2 value_type..http::chunk_body]\r
3073 Required for ['ConstBufferSequence] \r[heading Synopsis]\r\r```\rusing value_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__chunk_crlf http::chunk_crlf]\r
3074 A chunked encoding crlf. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rstruct chunk_crlf\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__chunk_crlf.const_iterator [*const_iterator]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_crlf.value_type [*value_type]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__chunk_crlf.begin [*begin]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_crlf.chunk_crlf [*chunk_crlf]]]\r    [\r      Constructor. \r\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_crlf.end [*end]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r]\r\r[heading Description]\r
3075 This implements a ['ConstBufferSequence] holding the CRLF (`"\r\n"`) used as a delimiter in a ['chunk].
3076 To use this class, pass an instance of it to a stream algorithm as the buffer sequence: \r```\r  // writes "\r\n"
3077   net::write(stream, chunk_crlf{});
3078 ```\r
3079 [heading See Also]\r
3080 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3081 [section:begin http::chunk_crlf::begin]\r[indexterm2 begin..http::chunk_crlf]\r
3082 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:chunk_crlf http::chunk_crlf::chunk_crlf]\r[indexterm2 chunk_crlf..http::chunk_crlf]\r
3083 Constructor. ```\r``[link beast.ref.boost__beast__http__chunk_crlf.chunk_crlf.overload1 chunk_crlf]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_crlf.chunk_crlf.overload1 more...]]``\r\r```\r
3084 Required for ['ConstBufferSequence] ```\r``[link beast.ref.boost__beast__http__chunk_crlf.chunk_crlf.overload2 chunk_crlf]``(\r    chunk_crlf const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_crlf.chunk_crlf.overload2 more...]]``\r```\r[section:overload1 http::chunk_crlf::chunk_crlf (1 of 2 overloads)]\r
3085 Constructor. \r[heading Synopsis]\r```\rchunk_crlf();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::chunk_crlf::chunk_crlf (2 of 2 overloads)]\r
3086 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rchunk_crlf(\r    chunk_crlf const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:const_iterator http::chunk_crlf::const_iterator]\r[indexterm2 const_iterator..http::chunk_crlf]\r
3087 Required for ['ConstBufferSequence] \r[heading Synopsis]\r\r```\rusing const_iterator = value_type const *;\r```\r\r[heading Description]\r[endsect]\r[section:end http::chunk_crlf::end]\r[indexterm2 end..http::chunk_crlf]\r
3088 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:value_type http::chunk_crlf::value_type]\r[indexterm2 value_type..http::chunk_crlf]\r
3089 Required for ['ConstBufferSequence] \r[heading Synopsis]\r\r```\rusing value_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__chunk_extensions http::chunk_extensions]\r[indexterm1 http::chunk_extensions]\r
3090 A set of chunk extensions. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rusing chunk_extensions = basic_chunk_extensions< std::allocator< char > >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.value_type [*value_type]]]\r    [\r      The type of value when iterating. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.basic_chunk_extensions [*basic_chunk_extensions]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.begin [*begin]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.clear [*clear]]]\r    [\r      Clear the chunk extensions. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.end [*end]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.insert [*insert]]]\r    [\r      Insert an extension name with an empty value. \r\r      Insert an extension value. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.parse [*parse]]]\r    [\r      Parse a set of chunk extensions. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_chunk_extensions.str [*str]]]\r    [\r      Return the serialized representation of the chunk extension. \r    ]\r  ]\r]\r
3091 This container stores a set of chunk extensions suited for use with [link beast.ref.boost__beast__http__chunk_header `http::chunk_header`] and [link beast.ref.boost__beast__http__chunk_body `http::chunk_body`]. The container may be iterated to access the extensions in their structured form.
3092 Meets the requirements of ChunkExtensions \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__chunk_header http::chunk_header]\r
3093 A ['chunk] header. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rclass chunk_header\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__chunk_header.const_iterator [*const_iterator]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_header.value_type [*value_type]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__chunk_header.begin [*begin]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_header.chunk_header [*chunk_header]]]\r    [\r      Constructor. \r\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_header.end [*end]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r]\r\r[heading Description]\r
3094 This implements a ['ConstBufferSequence] representing the header of a ['chunk]. The serialized format is as follows: \r```\r  chunk-header    = 1*HEXDIG chunk-ext CRLF       
3095   chunk-ext       = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
3096   chunk-ext-name  = token
3097   chunk-ext-val   = token / quoted-string
3098 ```\rThe chunk extension is optional. After the header and chunk body have been serialized, it is the callers responsibility to also serialize the final CRLF (`"\r\n"`).
3099 This class allows the caller to emit piecewise chunk bodies, by first serializing the chunk header using this class and then serializing the chunk body in a series of one or more calls to a stream write operation.
3100 To use this class, pass an instance of it to a stream algorithm as the buffer sequence: \r```\r  // writes "400;x\r\n"
3101   net::write(stream, chunk_header{1024, "x"});
3102 ```\r
3103 [heading See Also]\r
3104 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3105 [section:begin http::chunk_header::begin]\r[indexterm2 begin..http::chunk_header]\r
3106 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:chunk_header http::chunk_header::chunk_header]\r[indexterm2 chunk_header..http::chunk_header]\r
3107 Constructor. ```\rexplicit\r``[link beast.ref.boost__beast__http__chunk_header.chunk_header.overload1 chunk_header]``(\r    std::size_t size);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_header.chunk_header.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__chunk_header.chunk_header.overload2 chunk_header]``(\r    std::size_t size,\r    string_view extensions);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_header.chunk_header.overload2 more...]]``\r\rtemplate<\r    class ChunkExtensions>\r``[link beast.ref.boost__beast__http__chunk_header.chunk_header.overload3 chunk_header]``(\r    std::size_t size,\r    ChunkExtensions&& extensions);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_header.chunk_header.overload3 more...]]``\r\rtemplate<\r    class ChunkExtensions,\r    class __Allocator__>\r``[link beast.ref.boost__beast__http__chunk_header.chunk_header.overload4 chunk_header]``(\r    std::size_t size,\r    ChunkExtensions&& extensions,\r    Allocator const& allocator);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_header.chunk_header.overload4 more...]]``\r\r```\r
3108 Required for ['ConstBufferSequence] ```\r``[link beast.ref.boost__beast__http__chunk_header.chunk_header.overload5 chunk_header]``(\r    chunk_header const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_header.chunk_header.overload5 more...]]``\r```\r[section:overload1 http::chunk_header::chunk_header (1 of 5 overloads)]\r
3109 Constructor. \r[heading Synopsis]\r```\rchunk_header(\r    std::size_t size);\r```\r\r[heading Description]\r
3110 This constructs a buffer sequence representing a ['chunked-body] size and terminating CRLF (`"\r\n"`) with no chunk extensions.
3111 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
3112 The size of the chunk body that follows. The value must be greater than zero.\r  ]]\r]\r
3113 [heading See Also]\r
3114 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3115 [endsect]\r[section:overload2 http::chunk_header::chunk_header (2 of 5 overloads)]\r
3116 Constructor. \r[heading Synopsis]\r```\rchunk_header(\r    std::size_t size,\r    string_view extensions);\r```\r\r[heading Description]\r
3117 This constructs a buffer sequence representing a ['chunked-body] size and terminating CRLF (`"\r\n"`) with provided chunk extensions.
3118 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
3119 The size of the chunk body that follows. The value must be greater than zero.\r  ]]\r  [[`extensions`][\r    
3120 The chunk extensions string. This string must be formatted correctly as per rfc7230, using this BNF syntax: \r```\r  chunk-ext       = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
3121   chunk-ext-name  = token
3122   chunk-ext-val   = token / quoted-string
3123 ```\rThe data pointed to by this string view must remain valid for the lifetime of any operations performed on the object.\r  ]]\r]\r
3124 [heading See Also]\r
3125 [@https://tools.ietf.org/html/rfc7230#section-4.1.1 https://tools.ietf.org/html/rfc7230#section-4.1.1] 
3126 [endsect]\r[section:overload3 http::chunk_header::chunk_header (3 of 5 overloads)]\r
3127 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class ChunkExtensions>\rchunk_header(\r    std::size_t size,\r    ChunkExtensions&& extensions);\r```\r\r[heading Description]\r
3128 This constructs a buffer sequence representing a ['chunked-body] size and terminating CRLF (`"\r\n"`) with provided chunk extensions. The default allocator is used to provide storage for the extensions object.
3129 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
3130 The size of the chunk body that follows. The value must be greater than zero.\r  ]]\r  [[`extensions`][\r    
3131 The chunk extensions object. The expression `extensions.str()` must be valid, and the return type must be convertible to [link beast.ref.boost__beast__string_view `string_view`]. This object will be copied or moved as needed to ensure that the chunk header object retains ownership of the buffers provided by the chunk extensions object.\r  ]]\r]\r
3132 [heading Remarks]\r
3133 This function participates in overload resolution only if [*ChunkExtensions] meets the requirements stated above.
3134 [heading See Also]\r
3135 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3136 [endsect]\r[section:overload4 http::chunk_header::chunk_header (4 of 5 overloads)]\r
3137 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class ChunkExtensions,\r    class __Allocator__>\rchunk_header(\r    std::size_t size,\r    ChunkExtensions&& extensions,\r    Allocator const& allocator);\r```\r\r[heading Description]\r
3138 This constructs a buffer sequence representing a ['chunked-body] size and terminating CRLF (`"\r\n"`) with provided chunk extensions. The specified allocator is used to provide storage for the extensions object.
3139 [heading Parameters]\r[table [[Name][Description]]\r  [[`size`][\r    
3140 The size of the chunk body that follows. The value be greater than zero.\r  ]]\r  [[`extensions`][\r    
3141 The chunk extensions object. The expression `extensions.str()` must be valid, and the return type must be convertible to [link beast.ref.boost__beast__string_view `string_view`]. This object will be copied or moved as needed to ensure that the chunk header object retains ownership of the buffers provided by the chunk extensions object.\r  ]]\r  [[`allocator`][\r    
3142 The allocator to provide storage for the moved or copied extensions object.\r  ]]\r]\r
3143 [heading Remarks]\r
3144 This function participates in overload resolution only if [*ChunkExtensions] meets the requirements stated above.
3145 [heading See Also]\r
3146 [@https://tools.ietf.org/html/rfc7230#section-4.1 https://tools.ietf.org/html/rfc7230#section-4.1] 
3147 [endsect]\r[section:overload5 http::chunk_header::chunk_header (5 of 5 overloads)]\r
3148 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rchunk_header(\r    chunk_header const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:const_iterator http::chunk_header::const_iterator]\r[indexterm2 const_iterator..http::chunk_header]\r
3149 Required for ['ConstBufferSequence] \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:end http::chunk_header::end]\r[indexterm2 end..http::chunk_header]\r
3150 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:value_type http::chunk_header::value_type]\r[indexterm2 value_type..http::chunk_header]\r
3151 Required for ['ConstBufferSequence] \r[heading Synopsis]\r\r```\rusing value_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__chunk_last http::chunk_last]\r
3152 A chunked-encoding last chunk. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rtemplate<\r    class Trailer = chunk_crlf>\rclass chunk_last\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__chunk_last.const_iterator [*const_iterator]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_last.value_type [*value_type]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__chunk_last.begin [*begin]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_last.chunk_last [*chunk_last]]]\r    [\r      Constructor. \r\r      Required for ConstBufferSequence \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__chunk_last.end [*end]]]\r    [\r      Required for ConstBufferSequence \r    ]\r  ]\r]\r\r[heading Description]\r[section:begin http::chunk_last::begin]\r[indexterm2 begin..http::chunk_last]\r
3153 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:chunk_last http::chunk_last::chunk_last]\r[indexterm2 chunk_last..http::chunk_last]\r
3154 Constructor. ```\r``[link beast.ref.boost__beast__http__chunk_last.chunk_last.overload1 chunk_last]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_last.chunk_last.overload1 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__http__chunk_last.chunk_last.overload2 chunk_last]``(\r    Trailer const& trailer);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_last.chunk_last.overload2 more...]]``\r\rtemplate<\r    class __Allocator__>\r``[link beast.ref.boost__beast__http__chunk_last.chunk_last.overload3 chunk_last]``(\r    Trailer const& trailer,\r    Allocator const& allocator);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_last.chunk_last.overload3 more...]]``\r\r```\r
3155 Required for ['ConstBufferSequence] ```\r``[link beast.ref.boost__beast__http__chunk_last.chunk_last.overload4 chunk_last]``(\r    chunk_last const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__chunk_last.chunk_last.overload4 more...]]``\r```\r[section:overload1 http::chunk_last::chunk_last (1 of 4 overloads)]\r
3156 Constructor. \r[heading Synopsis]\r```\rchunk_last();\r```\r\r[heading Description]\r
3157 The last chunk will have an empty trailer [endsect]\r[section:overload2 http::chunk_last::chunk_last (2 of 4 overloads)]\r
3158 Constructor. \r[heading Synopsis]\r```\rchunk_last(\r    Trailer const& trailer);\r```\r\r[heading Description]\r
3159 [heading Parameters]\r[table [[Name][Description]]\r  [[`trailer`][\r    
3160 The trailer to use. This may be a type meeting the requirements of either Fields or ConstBufferSequence. If it is a ConstBufferSequence, the trailer must be formatted correctly as per rfc7230 including a CRLF on its own line to denote the end of the trailer. \r  ]]\r]\r
3161 [endsect]\r[section:overload3 http::chunk_last::chunk_last (3 of 4 overloads)]\r
3162 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class __Allocator__>\rchunk_last(\r    Trailer const& trailer,\r    Allocator const& allocator);\r```\r\r[heading Description]\r
3163 [heading Parameters]\r[table [[Name][Description]]\r  [[`trailer`][\r    
3164 The trailer to use. This type must meet the requirements of Fields.\r  ]]\r  [[`allocator`][\r    
3165 The allocator to use for storing temporary data associated with the serialized trailer buffers. \r  ]]\r]\r
3166 [endsect]\r[section:overload4 http::chunk_last::chunk_last (4 of 4 overloads)]\r
3167 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rchunk_last(\r    chunk_last const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:const_iterator http::chunk_last::const_iterator]\r[indexterm2 const_iterator..http::chunk_last]\r
3168 Required for ['ConstBufferSequence] \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:end http::chunk_last::end]\r[indexterm2 end..http::chunk_last]\r
3169 Required for ['ConstBufferSequence] \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:value_type http::chunk_last::value_type]\r[indexterm2 value_type..http::chunk_last]\r
3170 Required for ['ConstBufferSequence] \r[heading Synopsis]\r\r```\rusing value_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__dynamic_body http::dynamic_body]\r[indexterm1 http::dynamic_body]\r
3171 A dynamic message body represented by a [link beast.ref.boost__beast__multi_buffer `multi_buffer`]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/dynamic_body.hpp]\r\r\r\r```\rusing dynamic_body = basic_dynamic_body< multi_buffer >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_dynamic_body.reader [*reader]]]\r    [\r      The algorithm for parsing the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_dynamic_body.value_type [*value_type]]]\r    [\r      The type of container used for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_dynamic_body.writer [*writer]]]\r    [\r      The algorithm for serializing the body. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_dynamic_body.size [*size]]]\r    [\r      Returns the payload size of the body. \r    ]\r  ]\r]\r
3172 This body uses a ['DynamicBuffer] as a memory-based container for holding message payloads. Messages using this body type may be serialized and parsed. \r[heading Description]\r
3173 Meets the requirements of ['Body]. \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__empty_body http::empty_body]\r
3174 An empty ['Body] \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/empty_body.hpp]\r\r\r\r```\rstruct empty_body\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__empty_body__value_type [*value_type]]]\r    [\r      The type of container used for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__empty_body.reader [*reader]]]\r    [\r      The algorithm for parsing the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__empty_body.writer [*writer]]]\r    [\r      The algorithm for serializing the body. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__empty_body.size [*size]]]\r    [\r      Returns the payload size of the body. \r    ]\r  ]\r]\r\r[heading Description]\r
3175 This body is used to represent messages which do not have a message body. If this body is used with a parser, and the parser encounters octets corresponding to a message body, the parser will fail with the error [link beast.ref.boost__beast__http__error `http::unexpected_body`].
3176 The Content-Length of this body is always 0. [section:reader http::empty_body::reader]\r[indexterm2 reader..http::empty_body]\r
3177 The algorithm for parsing the body. \r[heading Synopsis]\r\r```\rusing reader = ``['implementation-defined]``;\r```\r\r[heading Description]\r
3178 Meets the requirements of ['BodyReader]. [endsect]\r[section:size http::empty_body::size]\r[indexterm2 size..http::empty_body]\r
3179 Returns the payload size of the body. \r[heading Synopsis]\r```\rstatic\rstd::uint64_t\rsize(\r    value_type);\r```\r\r[heading Description]\r
3180 When this body is used with [link beast.ref.boost__beast__http__message.prepare_payload `http::message::prepare_payload`], the Content-Length will be set to the payload size, and any chunked Transfer-Encoding will be removed. [endsect]\r[section:writer http::empty_body::writer]\r[indexterm2 writer..http::empty_body]\r
3181 The algorithm for serializing the body. \r[heading Synopsis]\r\r```\rusing writer = ``['implementation-defined]``;\r```\r\r[heading Description]\r
3182 Meets the requirements of ['BodyWriter]. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__empty_body__value_type http::empty_body::value_type]\r
3183 The type of container used for the body. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/empty_body.hpp]\r\r\r\r```\rstruct value_type\r```\r\r[heading Description]\r
3184 This determines the type of [link beast.ref.boost__beast__http__message.body `http::message::body`] when this body type is used with a message container. \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__error http::error]\r[indexterm1 http::error]\r
3185 Error codes returned from HTTP algorithms and operations. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/error.hpp]\r\r\r```\renum error\r```\r\r[indexterm2 end_of_stream..http::error]\r[indexterm2 partial_message..http::error]\r[indexterm2 need_more..http::error]\r[indexterm2 unexpected_body..http::error]\r[indexterm2 need_buffer..http::error]\r[indexterm2 end_of_chunk..http::error]\r[indexterm2 buffer_overflow..http::error]\r[indexterm2 header_limit..http::error]\r[indexterm2 body_limit..http::error]\r[indexterm2 bad_alloc..http::error]\r[indexterm2 bad_line_ending..http::error]\r[indexterm2 bad_method..http::error]\r[indexterm2 bad_target..http::error]\r[indexterm2 bad_version..http::error]\r[indexterm2 bad_status..http::error]\r[indexterm2 bad_reason..http::error]\r[indexterm2 bad_field..http::error]\r[indexterm2 bad_value..http::error]\r[indexterm2 bad_content_length..http::error]\r[indexterm2 bad_transfer_encoding..http::error]\r[indexterm2 bad_chunk..http::error]\r[indexterm2 bad_chunk_extension..http::error]\r[indexterm2 bad_obs_fold..http::error]\r[indexterm2 stale_parser..http::error]\r[heading Values]\r[table [[Name][Description]]\r  [[[^end_of_stream]][The end of the stream was reached. \r\rThis error is returned when attempting to read HTTP data,
3186 and the stream returns the error `net::error::eof`
3187 before any octets corresponding to a new HTTP message have
3188 been received.
3189  ]]\r  [[[^partial_message]][The incoming message is incomplete. \r\rThis happens when the end of stream is reached during
3190 parsing and some octets have been received, but not the
3191 entire message.
3192  ]]\r  [[[^need_more]][Additional buffers are required. \r\rThis error is returned during parsing when additional
3193 octets are needed. The caller should append more data
3194 to the existing buffer and retry the parse operaetion.
3195  ]]\r  [[[^unexpected_body]][An unexpected body was encountered during parsing. \r\rThis error is returned when attempting to parse body
3196 octets into a message container which has the
3197 @ref empty_body body type.
3198
3199 @see empty_body
3200  ]]\r  [[[^need_buffer]][Additional buffers are required. \r\rThis error is returned under the following conditions:
3201
3202 @li During serialization when using @ref buffer_body.
3203 The caller should update the body to point to a new
3204 buffer or indicate that there are no more octets in
3205 the body.
3206
3207 @li During parsing when using @ref buffer_body.
3208 The caller should update the body to point to a new
3209 storage area to receive additional body octets.
3210  ]]\r  [[[^end_of_chunk]][The end of a chunk was reached. \r\r]]\r  [[[^buffer_overflow]][Buffer maximum exceeded. \r\rThis error is returned when reading HTTP content
3211 into a dynamic buffer, and the operation would
3212 exceed the maximum size of the buffer.
3213  ]]\r  [[[^header_limit]][Header limit exceeded. \r\rThe parser detected an incoming message header which
3214 exceeded a configured limit.
3215  ]]\r  [[[^body_limit]][Body limit exceeded. \r\rThe parser detected an incoming message body which
3216 exceeded a configured limit.
3217  ]]\r  [[[^bad_alloc]][A memory allocation failed. \r\rWhen basic_fields throws std::bad_alloc, it is
3218 converted into this error by @ref parser.
3219  ]]\r  [[[^bad_line_ending]][The line ending was malformed. \r\r]]\r  [[[^bad_method]][The method is invalid. \r\r]]\r  [[[^bad_target]][The request-target is invalid. \r\r]]\r  [[[^bad_version]][The HTTP-version is invalid. \r\r]]\r  [[[^bad_status]][The status-code is invalid. \r\r]]\r  [[[^bad_reason]][The reason-phrase is invalid. \r\r]]\r  [[[^bad_field]][The field name is invalid. \r\r]]\r  [[[^bad_value]][The field value is invalid. \r\r]]\r  [[[^bad_content_length]][The Content-Length is invalid. \r\r]]\r  [[[^bad_transfer_encoding]][The Transfer-Encoding is invalid. \r\r]]\r  [[[^bad_chunk]][The chunk syntax is invalid. \r\r]]\r  [[[^bad_chunk_extension]][The chunk extension is invalid. \r\r]]\r  [[[^bad_obs_fold]][An obs-fold exceeded an internal limit. \r\r]]\r  [[[^stale_parser]][The parser is stale. \r\rThis happens when attempting to re-use a parser that has
3220 already completed parsing a message. Programs must construct
3221 a new parser for each message. This can be easily done by
3222 storing the parser in an boost or std::optional container.
3223  ]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__ext_list http::ext_list]\r
3224 A list of extensions in a comma separated HTTP field value. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/rfc7230.hpp]\r\r\r\r```\rclass ext_list\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.const_iterator [*const_iterator]]]\r    [\r      A constant iterator to the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.value_type [*value_type]]]\r    [\r      The type of each element in the list. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.begin [*begin]]]\r    [\r      Return a const iterator to the beginning of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.cbegin [*cbegin]]]\r    [\r      Return a const iterator to the beginning of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.cend [*cend]]]\r    [\r      Return a const iterator to the end of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.end [*end]]]\r    [\r      Return a const iterator to the end of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.exists [*exists]]]\r    [\r      Return true if a token is present in the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.ext_list [*ext_list]]]\r    [\r      Construct a list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__ext_list.find [*find]]]\r    [\r      Find a token in the list. \r    ]\r  ]\r]\r\r[heading Description]\r
3225 This container allows iteration of the extensions in an HTTP field value. The extension list is a comma separated list of token parameter list pairs.
3226 If a parsing error is encountered while iterating the string, the behavior of the container will be as if a string containing only characters up to but excluding the first invalid character was used to construct the list.
3227 [heading BNF]
3228 \r```\r  ext-list    = *( "," OWS ) ext *( OWS "," [ OWS ext ] )
3229   ext         = token param-list
3230   param-list  = *( OWS ";" OWS param )
3231   param       = token OWS [ "=" OWS ( token / quoted-string ) ]
3232 ```\r
3233 To use this class, construct with the string to be parsed and then use [link beast.ref.boost__beast__http__ext_list.begin `http::ext_list::begin`] and [link beast.ref.boost__beast__http__ext_list.end `http::ext_list::end`], or range-for to iterate each item:
3234 [heading Example]
3235 \r```\r  for(auto const& ext : ext_list{"none, 7z;level=9, zip;no_context_takeover;bits=15"})
3236   {
3237       std::cout << ext.first << "\n";
3238       for(auto const& param : ext.second)
3239       {
3240           std::cout << ";" << param.first;
3241           if(! param.second.empty())
3242               std::cout << "=" << param.second;
3243           std::cout << "\n";
3244       }
3245   }
3246 ```\r
3247 [section:begin http::ext_list::begin]\r[indexterm2 begin..http::ext_list]\r
3248 Return a const iterator to the beginning of the list. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cbegin http::ext_list::cbegin]\r[indexterm2 cbegin..http::ext_list]\r
3249 Return a const iterator to the beginning of the list. \r[heading Synopsis]\r```\rconst_iterator\rcbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cend http::ext_list::cend]\r[indexterm2 cend..http::ext_list]\r
3250 Return a const iterator to the end of the list. \r[heading Synopsis]\r```\rconst_iterator\rcend() const;\r```\r\r[heading Description]\r[endsect]\r[section:const_iterator http::ext_list::const_iterator]\r[indexterm2 const_iterator..http::ext_list]\r
3251 A constant iterator to the list. \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:end http::ext_list::end]\r[indexterm2 end..http::ext_list]\r
3252 Return a const iterator to the end of the list. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:exists http::ext_list::exists]\r[indexterm2 exists..http::ext_list]\r
3253 Return `true` if a token is present in the list. \r[heading Synopsis]\r```\rbool\rexists(\r    string_view const& s);\r```\r\r[heading Description]\r
3254 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3255 The token to find. A case-insensitive comparison is used. \r  ]]\r]\r
3256 [endsect]\r[section:ext_list http::ext_list::ext_list]\r[indexterm2 ext_list..http::ext_list]\r
3257 Construct a list. \r[heading Synopsis]\r```\rext_list(\r    string_view s);\r```\r\r[heading Description]\r
3258 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3259 A string containing the list contents. The string must remain valid for the lifetime of the container. \r  ]]\r]\r
3260 [endsect]\r[section:find http::ext_list::find]\r[indexterm2 find..http::ext_list]\r
3261 Find a token in the list. \r[heading Synopsis]\r```\rconst_iterator\rfind(\r    string_view const& s);\r```\r\r[heading Description]\r
3262 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3263 The token to find. A case-insensitive comparison is used.\r  ]]\r]\r
3264 [heading Return Value]
3265 An iterator to the matching token, or `end()` if no token exists. 
3266 [endsect]\r[section:value_type http::ext_list::value_type]\r[indexterm2 value_type..http::ext_list]\r
3267 The type of each element in the list. \r[heading Synopsis]\r\r```\rusing value_type = std::pair< string_view, param_list >;\r```\r\r[heading Description]\r
3268 The first element of the pair is the extension token, and the second element of the pair is an iterable container holding the extension's name/value parameters. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__field http::field]\r[indexterm1 http::field]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/field.hpp]\r\r\r```\renum field\r```\r\r[indexterm2 unknown..http::field]\r[indexterm2 a_im..http::field]\r[indexterm2 accept..http::field]\r[indexterm2 accept_additions..http::field]\r[indexterm2 accept_charset..http::field]\r[indexterm2 accept_datetime..http::field]\r[indexterm2 accept_encoding..http::field]\r[indexterm2 accept_features..http::field]\r[indexterm2 accept_language..http::field]\r[indexterm2 accept_patch..http::field]\r[indexterm2 accept_post..http::field]\r[indexterm2 accept_ranges..http::field]\r[indexterm2 access_control..http::field]\r[indexterm2 access_control_allow_credentials..http::field]\r[indexterm2 access_control_allow_headers..http::field]\r[indexterm2 access_control_allow_methods..http::field]\r[indexterm2 access_control_allow_origin..http::field]\r[indexterm2 access_control_expose_headers..http::field]\r[indexterm2 access_control_max_age..http::field]\r[indexterm2 access_control_request_headers..http::field]\r[indexterm2 access_control_request_method..http::field]\r[indexterm2 age..http::field]\r[indexterm2 allow..http::field]\r[indexterm2 alpn..http::field]\r[indexterm2 also_control..http::field]\r[indexterm2 alt_svc..http::field]\r[indexterm2 alt_used..http::field]\r[indexterm2 alternate_recipient..http::field]\r[indexterm2 alternates..http::field]\r[indexterm2 apparently_to..http::field]\r[indexterm2 apply_to_redirect_ref..http::field]\r[indexterm2 approved..http::field]\r[indexterm2 archive..http::field]\r[indexterm2 archived_at..http::field]\r[indexterm2 article_names..http::field]\r[indexterm2 article_updates..http::field]\r[indexterm2 authentication_control..http::field]\r[indexterm2 authentication_info..http::field]\r[indexterm2 authentication_results..http::field]\r[indexterm2 authorization..http::field]\r[indexterm2 auto_submitted..http::field]\r[indexterm2 autoforwarded..http::field]\r[indexterm2 autosubmitted..http::field]\r[indexterm2 base..http::field]\r[indexterm2 bcc..http::field]\r[indexterm2 body..http::field]\r[indexterm2 c_ext..http::field]\r[indexterm2 c_man..http::field]\r[indexterm2 c_opt..http::field]\r[indexterm2 c_pep..http::field]\r[indexterm2 c_pep_info..http::field]\r[indexterm2 cache_control..http::field]\r[indexterm2 caldav_timezones..http::field]\r[indexterm2 cancel_key..http::field]\r[indexterm2 cancel_lock..http::field]\r[indexterm2 cc..http::field]\r[indexterm2 close..http::field]\r[indexterm2 comments..http::field]\r[indexterm2 compliance..http::field]\r[indexterm2 connection..http::field]\r[indexterm2 content_alternative..http::field]\r[indexterm2 content_base..http::field]\r[indexterm2 content_description..http::field]\r[indexterm2 content_disposition..http::field]\r[indexterm2 content_duration..http::field]\r[indexterm2 content_encoding..http::field]\r[indexterm2 content_features..http::field]\r[indexterm2 content_id..http::field]\r[indexterm2 content_identifier..http::field]\r[indexterm2 content_language..http::field]\r[indexterm2 content_length..http::field]\r[indexterm2 content_location..http::field]\r[indexterm2 content_md5..http::field]\r[indexterm2 content_range..http::field]\r[indexterm2 content_return..http::field]\r[indexterm2 content_script_type..http::field]\r[indexterm2 content_style_type..http::field]\r[indexterm2 content_transfer_encoding..http::field]\r[indexterm2 content_type..http::field]\r[indexterm2 content_version..http::field]\r[indexterm2 control..http::field]\r[indexterm2 conversion..http::field]\r[indexterm2 conversion_with_loss..http::field]\r[indexterm2 cookie..http::field]\r[indexterm2 cookie2..http::field]\r[indexterm2 cost..http::field]\r[indexterm2 dasl..http::field]\r[indexterm2 date..http::field]\r[indexterm2 date_received..http::field]\r[indexterm2 dav..http::field]\r[indexterm2 default_style..http::field]\r[indexterm2 deferred_delivery..http::field]\r[indexterm2 delivery_date..http::field]\r[indexterm2 delta_base..http::field]\r[indexterm2 depth..http::field]\r[indexterm2 derived_from..http::field]\r[indexterm2 destination..http::field]\r[indexterm2 differential_id..http::field]\r[indexterm2 digest..http::field]\r[indexterm2 discarded_x400_ipms_extensions..http::field]\r[indexterm2 discarded_x400_mts_extensions..http::field]\r[indexterm2 disclose_recipients..http::field]\r[indexterm2 disposition_notification_options..http::field]\r[indexterm2 disposition_notification_to..http::field]\r[indexterm2 distribution..http::field]\r[indexterm2 dkim_signature..http::field]\r[indexterm2 dl_expansion_history..http::field]\r[indexterm2 downgraded_bcc..http::field]\r[indexterm2 downgraded_cc..http::field]\r[indexterm2 downgraded_disposition_notification_to..http::field]\r[indexterm2 downgraded_final_recipient..http::field]\r[indexterm2 downgraded_from..http::field]\r[indexterm2 downgraded_in_reply_to..http::field]\r[indexterm2 downgraded_mail_from..http::field]\r[indexterm2 downgraded_message_id..http::field]\r[indexterm2 downgraded_original_recipient..http::field]\r[indexterm2 downgraded_rcpt_to..http::field]\r[indexterm2 downgraded_references..http::field]\r[indexterm2 downgraded_reply_to..http::field]\r[indexterm2 downgraded_resent_bcc..http::field]\r[indexterm2 downgraded_resent_cc..http::field]\r[indexterm2 downgraded_resent_from..http::field]\r[indexterm2 downgraded_resent_reply_to..http::field]\r[indexterm2 downgraded_resent_sender..http::field]\r[indexterm2 downgraded_resent_to..http::field]\r[indexterm2 downgraded_return_path..http::field]\r[indexterm2 downgraded_sender..http::field]\r[indexterm2 downgraded_to..http::field]\r[indexterm2 ediint_features..http::field]\r[indexterm2 eesst_version..http::field]\r[indexterm2 encoding..http::field]\r[indexterm2 encrypted..http::field]\r[indexterm2 errors_to..http::field]\r[indexterm2 etag..http::field]\r[indexterm2 expect..http::field]\r[indexterm2 expires..http::field]\r[indexterm2 expiry_date..http::field]\r[indexterm2 ext..http::field]\r[indexterm2 followup_to..http::field]\r[indexterm2 forwarded..http::field]\r[indexterm2 from..http::field]\r[indexterm2 generate_delivery_report..http::field]\r[indexterm2 getprofile..http::field]\r[indexterm2 hobareg..http::field]\r[indexterm2 host..http::field]\r[indexterm2 http2_settings..http::field]\r[indexterm2 if_..http::field]\r[indexterm2 if_match..http::field]\r[indexterm2 if_modified_since..http::field]\r[indexterm2 if_none_match..http::field]\r[indexterm2 if_range..http::field]\r[indexterm2 if_schedule_tag_match..http::field]\r[indexterm2 if_unmodified_since..http::field]\r[indexterm2 im..http::field]\r[indexterm2 importance..http::field]\r[indexterm2 in_reply_to..http::field]\r[indexterm2 incomplete_copy..http::field]\r[indexterm2 injection_date..http::field]\r[indexterm2 injection_info..http::field]\r[indexterm2 jabber_id..http::field]\r[indexterm2 keep_alive..http::field]\r[indexterm2 keywords..http::field]\r[indexterm2 label..http::field]\r[indexterm2 language..http::field]\r[indexterm2 last_modified..http::field]\r[indexterm2 latest_delivery_time..http::field]\r[indexterm2 lines..http::field]\r[indexterm2 link..http::field]\r[indexterm2 list_archive..http::field]\r[indexterm2 list_help..http::field]\r[indexterm2 list_id..http::field]\r[indexterm2 list_owner..http::field]\r[indexterm2 list_post..http::field]\r[indexterm2 list_subscribe..http::field]\r[indexterm2 list_unsubscribe..http::field]\r[indexterm2 list_unsubscribe_post..http::field]\r[indexterm2 location..http::field]\r[indexterm2 lock_token..http::field]\r[indexterm2 man..http::field]\r[indexterm2 max_forwards..http::field]\r[indexterm2 memento_datetime..http::field]\r[indexterm2 message_context..http::field]\r[indexterm2 message_id..http::field]\r[indexterm2 message_type..http::field]\r[indexterm2 meter..http::field]\r[indexterm2 method_check..http::field]\r[indexterm2 method_check_expires..http::field]\r[indexterm2 mime_version..http::field]\r[indexterm2 mmhs_acp127_message_identifier..http::field]\r[indexterm2 mmhs_authorizing_users..http::field]\r[indexterm2 mmhs_codress_message_indicator..http::field]\r[indexterm2 mmhs_copy_precedence..http::field]\r[indexterm2 mmhs_exempted_address..http::field]\r[indexterm2 mmhs_extended_authorisation_info..http::field]\r[indexterm2 mmhs_handling_instructions..http::field]\r[indexterm2 mmhs_message_instructions..http::field]\r[indexterm2 mmhs_message_type..http::field]\r[indexterm2 mmhs_originator_plad..http::field]\r[indexterm2 mmhs_originator_reference..http::field]\r[indexterm2 mmhs_other_recipients_indicator_cc..http::field]\r[indexterm2 mmhs_other_recipients_indicator_to..http::field]\r[indexterm2 mmhs_primary_precedence..http::field]\r[indexterm2 mmhs_subject_indicator_codes..http::field]\r[indexterm2 mt_priority..http::field]\r[indexterm2 negotiate..http::field]\r[indexterm2 newsgroups..http::field]\r[indexterm2 nntp_posting_date..http::field]\r[indexterm2 nntp_posting_host..http::field]\r[indexterm2 non_compliance..http::field]\r[indexterm2 obsoletes..http::field]\r[indexterm2 opt..http::field]\r[indexterm2 optional..http::field]\r[indexterm2 optional_www_authenticate..http::field]\r[indexterm2 ordering_type..http::field]\r[indexterm2 organization..http::field]\r[indexterm2 origin..http::field]\r[indexterm2 original_encoded_information_types..http::field]\r[indexterm2 original_from..http::field]\r[indexterm2 original_message_id..http::field]\r[indexterm2 original_recipient..http::field]\r[indexterm2 original_sender..http::field]\r[indexterm2 original_subject..http::field]\r[indexterm2 originator_return_address..http::field]\r[indexterm2 overwrite..http::field]\r[indexterm2 p3p..http::field]\r[indexterm2 path..http::field]\r[indexterm2 pep..http::field]\r[indexterm2 pep_info..http::field]\r[indexterm2 pics_label..http::field]\r[indexterm2 position..http::field]\r[indexterm2 posting_version..http::field]\r[indexterm2 pragma..http::field]\r[indexterm2 prefer..http::field]\r[indexterm2 preference_applied..http::field]\r[indexterm2 prevent_nondelivery_report..http::field]\r[indexterm2 priority..http::field]\r[indexterm2 privicon..http::field]\r[indexterm2 profileobject..http::field]\r[indexterm2 protocol..http::field]\r[indexterm2 protocol_info..http::field]\r[indexterm2 protocol_query..http::field]\r[indexterm2 protocol_request..http::field]\r[indexterm2 proxy_authenticate..http::field]\r[indexterm2 proxy_authentication_info..http::field]\r[indexterm2 proxy_authorization..http::field]\r[indexterm2 proxy_connection..http::field]\r[indexterm2 proxy_features..http::field]\r[indexterm2 proxy_instruction..http::field]\r[indexterm2 public_..http::field]\r[indexterm2 public_key_pins..http::field]\r[indexterm2 public_key_pins_report_only..http::field]\r[indexterm2 range..http::field]\r[indexterm2 received..http::field]\r[indexterm2 received_spf..http::field]\r[indexterm2 redirect_ref..http::field]\r[indexterm2 references..http::field]\r[indexterm2 referer..http::field]\r[indexterm2 referer_root..http::field]\r[indexterm2 relay_version..http::field]\r[indexterm2 reply_by..http::field]\r[indexterm2 reply_to..http::field]\r[indexterm2 require_recipient_valid_since..http::field]\r[indexterm2 resent_bcc..http::field]\r[indexterm2 resent_cc..http::field]\r[indexterm2 resent_date..http::field]\r[indexterm2 resent_from..http::field]\r[indexterm2 resent_message_id..http::field]\r[indexterm2 resent_reply_to..http::field]\r[indexterm2 resent_sender..http::field]\r[indexterm2 resent_to..http::field]\r[indexterm2 resolution_hint..http::field]\r[indexterm2 resolver_location..http::field]\r[indexterm2 retry_after..http::field]\r[indexterm2 return_path..http::field]\r[indexterm2 safe..http::field]\r[indexterm2 schedule_reply..http::field]\r[indexterm2 schedule_tag..http::field]\r[indexterm2 sec_websocket_accept..http::field]\r[indexterm2 sec_websocket_extensions..http::field]\r[indexterm2 sec_websocket_key..http::field]\r[indexterm2 sec_websocket_protocol..http::field]\r[indexterm2 sec_websocket_version..http::field]\r[indexterm2 security_scheme..http::field]\r[indexterm2 see_also..http::field]\r[indexterm2 sender..http::field]\r[indexterm2 sensitivity..http::field]\r[indexterm2 server..http::field]\r[indexterm2 set_cookie..http::field]\r[indexterm2 set_cookie2..http::field]\r[indexterm2 setprofile..http::field]\r[indexterm2 sio_label..http::field]\r[indexterm2 sio_label_history..http::field]\r[indexterm2 slug..http::field]\r[indexterm2 soapaction..http::field]\r[indexterm2 solicitation..http::field]\r[indexterm2 status_uri..http::field]\r[indexterm2 strict_transport_security..http::field]\r[indexterm2 subject..http::field]\r[indexterm2 subok..http::field]\r[indexterm2 subst..http::field]\r[indexterm2 summary..http::field]\r[indexterm2 supersedes..http::field]\r[indexterm2 surrogate_capability..http::field]\r[indexterm2 surrogate_control..http::field]\r[indexterm2 tcn..http::field]\r[indexterm2 te..http::field]\r[indexterm2 timeout..http::field]\r[indexterm2 title..http::field]\r[indexterm2 to..http::field]\r[indexterm2 topic..http::field]\r[indexterm2 trailer..http::field]\r[indexterm2 transfer_encoding..http::field]\r[indexterm2 ttl..http::field]\r[indexterm2 ua_color..http::field]\r[indexterm2 ua_media..http::field]\r[indexterm2 ua_pixels..http::field]\r[indexterm2 ua_resolution..http::field]\r[indexterm2 ua_windowpixels..http::field]\r[indexterm2 upgrade..http::field]\r[indexterm2 urgency..http::field]\r[indexterm2 uri..http::field]\r[indexterm2 user_agent..http::field]\r[indexterm2 variant_vary..http::field]\r[indexterm2 vary..http::field]\r[indexterm2 vbr_info..http::field]\r[indexterm2 version..http::field]\r[indexterm2 via..http::field]\r[indexterm2 want_digest..http::field]\r[indexterm2 warning..http::field]\r[indexterm2 www_authenticate..http::field]\r[indexterm2 x_archived_at..http::field]\r[indexterm2 x_device_accept..http::field]\r[indexterm2 x_device_accept_charset..http::field]\r[indexterm2 x_device_accept_encoding..http::field]\r[indexterm2 x_device_accept_language..http::field]\r[indexterm2 x_device_user_agent..http::field]\r[indexterm2 x_frame_options..http::field]\r[indexterm2 x_mittente..http::field]\r[indexterm2 x_pgp_sig..http::field]\r[indexterm2 x_ricevuta..http::field]\r[indexterm2 x_riferimento_message_id..http::field]\r[indexterm2 x_tiporicevuta..http::field]\r[indexterm2 x_trasporto..http::field]\r[indexterm2 x_verificasicurezza..http::field]\r[indexterm2 x400_content_identifier..http::field]\r[indexterm2 x400_content_return..http::field]\r[indexterm2 x400_content_type..http::field]\r[indexterm2 x400_mts_identifier..http::field]\r[indexterm2 x400_originator..http::field]\r[indexterm2 x400_received..http::field]\r[indexterm2 x400_recipients..http::field]\r[indexterm2 x400_trace..http::field]\r[indexterm2 xref..http::field]\r[heading Values]\r[table [[Name][Description]]\r  [[[^unknown]][\r\r]]\r  [[[^a_im]][\r\r]]\r  [[[^accept]][\r\r]]\r  [[[^accept_additions]][\r\r]]\r  [[[^accept_charset]][\r\r]]\r  [[[^accept_datetime]][\r\r]]\r  [[[^accept_encoding]][\r\r]]\r  [[[^accept_features]][\r\r]]\r  [[[^accept_language]][\r\r]]\r  [[[^accept_patch]][\r\r]]\r  [[[^accept_post]][\r\r]]\r  [[[^accept_ranges]][\r\r]]\r  [[[^access_control]][\r\r]]\r  [[[^access_control_allow_credentials]][\r\r]]\r  [[[^access_control_allow_headers]][\r\r]]\r  [[[^access_control_allow_methods]][\r\r]]\r  [[[^access_control_allow_origin]][\r\r]]\r  [[[^access_control_expose_headers]][\r\r]]\r  [[[^access_control_max_age]][\r\r]]\r  [[[^access_control_request_headers]][\r\r]]\r  [[[^access_control_request_method]][\r\r]]\r  [[[^age]][\r\r]]\r  [[[^allow]][\r\r]]\r  [[[^alpn]][\r\r]]\r  [[[^also_control]][\r\r]]\r  [[[^alt_svc]][\r\r]]\r  [[[^alt_used]][\r\r]]\r  [[[^alternate_recipient]][\r\r]]\r  [[[^alternates]][\r\r]]\r  [[[^apparently_to]][\r\r]]\r  [[[^apply_to_redirect_ref]][\r\r]]\r  [[[^approved]][\r\r]]\r  [[[^archive]][\r\r]]\r  [[[^archived_at]][\r\r]]\r  [[[^article_names]][\r\r]]\r  [[[^article_updates]][\r\r]]\r  [[[^authentication_control]][\r\r]]\r  [[[^authentication_info]][\r\r]]\r  [[[^authentication_results]][\r\r]]\r  [[[^authorization]][\r\r]]\r  [[[^auto_submitted]][\r\r]]\r  [[[^autoforwarded]][\r\r]]\r  [[[^autosubmitted]][\r\r]]\r  [[[^base]][\r\r]]\r  [[[^bcc]][\r\r]]\r  [[[^body]][\r\r]]\r  [[[^c_ext]][\r\r]]\r  [[[^c_man]][\r\r]]\r  [[[^c_opt]][\r\r]]\r  [[[^c_pep]][\r\r]]\r  [[[^c_pep_info]][\r\r]]\r  [[[^cache_control]][\r\r]]\r  [[[^caldav_timezones]][\r\r]]\r  [[[^cancel_key]][\r\r]]\r  [[[^cancel_lock]][\r\r]]\r  [[[^cc]][\r\r]]\r  [[[^close]][\r\r]]\r  [[[^comments]][\r\r]]\r  [[[^compliance]][\r\r]]\r  [[[^connection]][\r\r]]\r  [[[^content_alternative]][\r\r]]\r  [[[^content_base]][\r\r]]\r  [[[^content_description]][\r\r]]\r  [[[^content_disposition]][\r\r]]\r  [[[^content_duration]][\r\r]]\r  [[[^content_encoding]][\r\r]]\r  [[[^content_features]][\r\r]]\r  [[[^content_id]][\r\r]]\r  [[[^content_identifier]][\r\r]]\r  [[[^content_language]][\r\r]]\r  [[[^content_length]][\r\r]]\r  [[[^content_location]][\r\r]]\r  [[[^content_md5]][\r\r]]\r  [[[^content_range]][\r\r]]\r  [[[^content_return]][\r\r]]\r  [[[^content_script_type]][\r\r]]\r  [[[^content_style_type]][\r\r]]\r  [[[^content_transfer_encoding]][\r\r]]\r  [[[^content_type]][\r\r]]\r  [[[^content_version]][\r\r]]\r  [[[^control]][\r\r]]\r  [[[^conversion]][\r\r]]\r  [[[^conversion_with_loss]][\r\r]]\r  [[[^cookie]][\r\r]]\r  [[[^cookie2]][\r\r]]\r  [[[^cost]][\r\r]]\r  [[[^dasl]][\r\r]]\r  [[[^date]][\r\r]]\r  [[[^date_received]][\r\r]]\r  [[[^dav]][\r\r]]\r  [[[^default_style]][\r\r]]\r  [[[^deferred_delivery]][\r\r]]\r  [[[^delivery_date]][\r\r]]\r  [[[^delta_base]][\r\r]]\r  [[[^depth]][\r\r]]\r  [[[^derived_from]][\r\r]]\r  [[[^destination]][\r\r]]\r  [[[^differential_id]][\r\r]]\r  [[[^digest]][\r\r]]\r  [[[^discarded_x400_ipms_extensions]][\r\r]]\r  [[[^discarded_x400_mts_extensions]][\r\r]]\r  [[[^disclose_recipients]][\r\r]]\r  [[[^disposition_notification_options]][\r\r]]\r  [[[^disposition_notification_to]][\r\r]]\r  [[[^distribution]][\r\r]]\r  [[[^dkim_signature]][\r\r]]\r  [[[^dl_expansion_history]][\r\r]]\r  [[[^downgraded_bcc]][\r\r]]\r  [[[^downgraded_cc]][\r\r]]\r  [[[^downgraded_disposition_notification_to]][\r\r]]\r  [[[^downgraded_final_recipient]][\r\r]]\r  [[[^downgraded_from]][\r\r]]\r  [[[^downgraded_in_reply_to]][\r\r]]\r  [[[^downgraded_mail_from]][\r\r]]\r  [[[^downgraded_message_id]][\r\r]]\r  [[[^downgraded_original_recipient]][\r\r]]\r  [[[^downgraded_rcpt_to]][\r\r]]\r  [[[^downgraded_references]][\r\r]]\r  [[[^downgraded_reply_to]][\r\r]]\r  [[[^downgraded_resent_bcc]][\r\r]]\r  [[[^downgraded_resent_cc]][\r\r]]\r  [[[^downgraded_resent_from]][\r\r]]\r  [[[^downgraded_resent_reply_to]][\r\r]]\r  [[[^downgraded_resent_sender]][\r\r]]\r  [[[^downgraded_resent_to]][\r\r]]\r  [[[^downgraded_return_path]][\r\r]]\r  [[[^downgraded_sender]][\r\r]]\r  [[[^downgraded_to]][\r\r]]\r  [[[^ediint_features]][\r\r]]\r  [[[^eesst_version]][\r\r]]\r  [[[^encoding]][\r\r]]\r  [[[^encrypted]][\r\r]]\r  [[[^errors_to]][\r\r]]\r  [[[^etag]][\r\r]]\r  [[[^expect]][\r\r]]\r  [[[^expires]][\r\r]]\r  [[[^expiry_date]][\r\r]]\r  [[[^ext]][\r\r]]\r  [[[^followup_to]][\r\r]]\r  [[[^forwarded]][\r\r]]\r  [[[^from]][\r\r]]\r  [[[^generate_delivery_report]][\r\r]]\r  [[[^getprofile]][\r\r]]\r  [[[^hobareg]][\r\r]]\r  [[[^host]][\r\r]]\r  [[[^http2_settings]][\r\r]]\r  [[[^if_]][\r\r]]\r  [[[^if_match]][\r\r]]\r  [[[^if_modified_since]][\r\r]]\r  [[[^if_none_match]][\r\r]]\r  [[[^if_range]][\r\r]]\r  [[[^if_schedule_tag_match]][\r\r]]\r  [[[^if_unmodified_since]][\r\r]]\r  [[[^im]][\r\r]]\r  [[[^importance]][\r\r]]\r  [[[^in_reply_to]][\r\r]]\r  [[[^incomplete_copy]][\r\r]]\r  [[[^injection_date]][\r\r]]\r  [[[^injection_info]][\r\r]]\r  [[[^jabber_id]][\r\r]]\r  [[[^keep_alive]][\r\r]]\r  [[[^keywords]][\r\r]]\r  [[[^label]][\r\r]]\r  [[[^language]][\r\r]]\r  [[[^last_modified]][\r\r]]\r  [[[^latest_delivery_time]][\r\r]]\r  [[[^lines]][\r\r]]\r  [[[^link]][\r\r]]\r  [[[^list_archive]][\r\r]]\r  [[[^list_help]][\r\r]]\r  [[[^list_id]][\r\r]]\r  [[[^list_owner]][\r\r]]\r  [[[^list_post]][\r\r]]\r  [[[^list_subscribe]][\r\r]]\r  [[[^list_unsubscribe]][\r\r]]\r  [[[^list_unsubscribe_post]][\r\r]]\r  [[[^location]][\r\r]]\r  [[[^lock_token]][\r\r]]\r  [[[^man]][\r\r]]\r  [[[^max_forwards]][\r\r]]\r  [[[^memento_datetime]][\r\r]]\r  [[[^message_context]][\r\r]]\r  [[[^message_id]][\r\r]]\r  [[[^message_type]][\r\r]]\r  [[[^meter]][\r\r]]\r  [[[^method_check]][\r\r]]\r  [[[^method_check_expires]][\r\r]]\r  [[[^mime_version]][\r\r]]\r  [[[^mmhs_acp127_message_identifier]][\r\r]]\r  [[[^mmhs_authorizing_users]][\r\r]]\r  [[[^mmhs_codress_message_indicator]][\r\r]]\r  [[[^mmhs_copy_precedence]][\r\r]]\r  [[[^mmhs_exempted_address]][\r\r]]\r  [[[^mmhs_extended_authorisation_info]][\r\r]]\r  [[[^mmhs_handling_instructions]][\r\r]]\r  [[[^mmhs_message_instructions]][\r\r]]\r  [[[^mmhs_message_type]][\r\r]]\r  [[[^mmhs_originator_plad]][\r\r]]\r  [[[^mmhs_originator_reference]][\r\r]]\r  [[[^mmhs_other_recipients_indicator_cc]][\r\r]]\r  [[[^mmhs_other_recipients_indicator_to]][\r\r]]\r  [[[^mmhs_primary_precedence]][\r\r]]\r  [[[^mmhs_subject_indicator_codes]][\r\r]]\r  [[[^mt_priority]][\r\r]]\r  [[[^negotiate]][\r\r]]\r  [[[^newsgroups]][\r\r]]\r  [[[^nntp_posting_date]][\r\r]]\r  [[[^nntp_posting_host]][\r\r]]\r  [[[^non_compliance]][\r\r]]\r  [[[^obsoletes]][\r\r]]\r  [[[^opt]][\r\r]]\r  [[[^optional]][\r\r]]\r  [[[^optional_www_authenticate]][\r\r]]\r  [[[^ordering_type]][\r\r]]\r  [[[^organization]][\r\r]]\r  [[[^origin]][\r\r]]\r  [[[^original_encoded_information_types]][\r\r]]\r  [[[^original_from]][\r\r]]\r  [[[^original_message_id]][\r\r]]\r  [[[^original_recipient]][\r\r]]\r  [[[^original_sender]][\r\r]]\r  [[[^original_subject]][\r\r]]\r  [[[^originator_return_address]][\r\r]]\r  [[[^overwrite]][\r\r]]\r  [[[^p3p]][\r\r]]\r  [[[^path]][\r\r]]\r  [[[^pep]][\r\r]]\r  [[[^pep_info]][\r\r]]\r  [[[^pics_label]][\r\r]]\r  [[[^position]][\r\r]]\r  [[[^posting_version]][\r\r]]\r  [[[^pragma]][\r\r]]\r  [[[^prefer]][\r\r]]\r  [[[^preference_applied]][\r\r]]\r  [[[^prevent_nondelivery_report]][\r\r]]\r  [[[^priority]][\r\r]]\r  [[[^privicon]][\r\r]]\r  [[[^profileobject]][\r\r]]\r  [[[^protocol]][\r\r]]\r  [[[^protocol_info]][\r\r]]\r  [[[^protocol_query]][\r\r]]\r  [[[^protocol_request]][\r\r]]\r  [[[^proxy_authenticate]][\r\r]]\r  [[[^proxy_authentication_info]][\r\r]]\r  [[[^proxy_authorization]][\r\r]]\r  [[[^proxy_connection]][\r\r]]\r  [[[^proxy_features]][\r\r]]\r  [[[^proxy_instruction]][\r\r]]\r  [[[^public_]][\r\r]]\r  [[[^public_key_pins]][\r\r]]\r  [[[^public_key_pins_report_only]][\r\r]]\r  [[[^range]][\r\r]]\r  [[[^received]][\r\r]]\r  [[[^received_spf]][\r\r]]\r  [[[^redirect_ref]][\r\r]]\r  [[[^references]][\r\r]]\r  [[[^referer]][\r\r]]\r  [[[^referer_root]][\r\r]]\r  [[[^relay_version]][\r\r]]\r  [[[^reply_by]][\r\r]]\r  [[[^reply_to]][\r\r]]\r  [[[^require_recipient_valid_since]][\r\r]]\r  [[[^resent_bcc]][\r\r]]\r  [[[^resent_cc]][\r\r]]\r  [[[^resent_date]][\r\r]]\r  [[[^resent_from]][\r\r]]\r  [[[^resent_message_id]][\r\r]]\r  [[[^resent_reply_to]][\r\r]]\r  [[[^resent_sender]][\r\r]]\r  [[[^resent_to]][\r\r]]\r  [[[^resolution_hint]][\r\r]]\r  [[[^resolver_location]][\r\r]]\r  [[[^retry_after]][\r\r]]\r  [[[^return_path]][\r\r]]\r  [[[^safe]][\r\r]]\r  [[[^schedule_reply]][\r\r]]\r  [[[^schedule_tag]][\r\r]]\r  [[[^sec_websocket_accept]][\r\r]]\r  [[[^sec_websocket_extensions]][\r\r]]\r  [[[^sec_websocket_key]][\r\r]]\r  [[[^sec_websocket_protocol]][\r\r]]\r  [[[^sec_websocket_version]][\r\r]]\r  [[[^security_scheme]][\r\r]]\r  [[[^see_also]][\r\r]]\r  [[[^sender]][\r\r]]\r  [[[^sensitivity]][\r\r]]\r  [[[^server]][\r\r]]\r  [[[^set_cookie]][\r\r]]\r  [[[^set_cookie2]][\r\r]]\r  [[[^setprofile]][\r\r]]\r  [[[^sio_label]][\r\r]]\r  [[[^sio_label_history]][\r\r]]\r  [[[^slug]][\r\r]]\r  [[[^soapaction]][\r\r]]\r  [[[^solicitation]][\r\r]]\r  [[[^status_uri]][\r\r]]\r  [[[^strict_transport_security]][\r\r]]\r  [[[^subject]][\r\r]]\r  [[[^subok]][\r\r]]\r  [[[^subst]][\r\r]]\r  [[[^summary]][\r\r]]\r  [[[^supersedes]][\r\r]]\r  [[[^surrogate_capability]][\r\r]]\r  [[[^surrogate_control]][\r\r]]\r  [[[^tcn]][\r\r]]\r  [[[^te]][\r\r]]\r  [[[^timeout]][\r\r]]\r  [[[^title]][\r\r]]\r  [[[^to]][\r\r]]\r  [[[^topic]][\r\r]]\r  [[[^trailer]][\r\r]]\r  [[[^transfer_encoding]][\r\r]]\r  [[[^ttl]][\r\r]]\r  [[[^ua_color]][\r\r]]\r  [[[^ua_media]][\r\r]]\r  [[[^ua_pixels]][\r\r]]\r  [[[^ua_resolution]][\r\r]]\r  [[[^ua_windowpixels]][\r\r]]\r  [[[^upgrade]][\r\r]]\r  [[[^urgency]][\r\r]]\r  [[[^uri]][\r\r]]\r  [[[^user_agent]][\r\r]]\r  [[[^variant_vary]][\r\r]]\r  [[[^vary]][\r\r]]\r  [[[^vbr_info]][\r\r]]\r  [[[^version]][\r\r]]\r  [[[^via]][\r\r]]\r  [[[^want_digest]][\r\r]]\r  [[[^warning]][\r\r]]\r  [[[^www_authenticate]][\r\r]]\r  [[[^x_archived_at]][\r\r]]\r  [[[^x_device_accept]][\r\r]]\r  [[[^x_device_accept_charset]][\r\r]]\r  [[[^x_device_accept_encoding]][\r\r]]\r  [[[^x_device_accept_language]][\r\r]]\r  [[[^x_device_user_agent]][\r\r]]\r  [[[^x_frame_options]][\r\r]]\r  [[[^x_mittente]][\r\r]]\r  [[[^x_pgp_sig]][\r\r]]\r  [[[^x_ricevuta]][\r\r]]\r  [[[^x_riferimento_message_id]][\r\r]]\r  [[[^x_tiporicevuta]][\r\r]]\r  [[[^x_trasporto]][\r\r]]\r  [[[^x_verificasicurezza]][\r\r]]\r  [[[^x400_content_identifier]][\r\r]]\r  [[[^x400_content_return]][\r\r]]\r  [[[^x400_content_type]][\r\r]]\r  [[[^x400_mts_identifier]][\r\r]]\r  [[[^x400_originator]][\r\r]]\r  [[[^x400_received]][\r\r]]\r  [[[^x400_recipients]][\r\r]]\r  [[[^x400_trace]][\r\r]]\r  [[[^xref]][\r\r]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__fields http::fields]\r[indexterm1 http::fields]\r
3269 A typical HTTP header fields container. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/fields.hpp]\r\r\r\r```\rusing fields = basic_fields< std::allocator< char > >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.allocator_type [*allocator_type]]]\r    [\r      The type of allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields__value_type [*value_type]]]\r    [\r      The type of element used to represent a field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.const_iterator [*const_iterator]]]\r    [\r      A constant iterator to the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.iterator [*iterator]]]\r    [\r      A constant iterator to the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.key_compare [*key_compare]]]\r    [\r      A strictly less predicate for comparing keys, using a case-insensitive comparison. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.writer [*writer]]]\r    [\r      The algorithm used to serialize the header. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.at [*at]]]\r    [\r      Returns the value for a field, or throws an exception. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.basic_fields [*basic_fields]]]\r    [\r      Constructor. \r\r      Move constructor. \r\r      Copy constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.begin [*begin]]]\r    [\r      Return a const iterator to the beginning of the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.cbegin [*cbegin]]]\r    [\r      Return a const iterator to the beginning of the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.cend [*cend]]]\r    [\r      Return a const iterator to the end of the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.clear [*clear]]]\r    [\r      Remove all fields from the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.count [*count]]]\r    [\r      Return the number of fields with the specified name. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.end [*end]]]\r    [\r      Return a const iterator to the end of the field sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.equal_range [*equal_range]]]\r    [\r      Returns a range of iterators to the fields with the specified name. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.erase [*erase]]]\r    [\r      Remove a field. \r\r      Remove all fields with the specified name. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.find [*find]]]\r    [\r      Returns an iterator to the case-insensitive matching field. \r\r      Returns an iterator to the case-insensitive matching field name. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_allocator [*get_allocator]]]\r    [\r      Return a copy of the allocator associated with the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.insert [*insert]]]\r    [\r      Insert a field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.key_comp [*key_comp]]]\r    [\r      Returns a copy of the key comparison function. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.operator_eq_ [*operator=]]]\r    [\r      Move assignment. \r\r      Copy assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.operator_lb__rb_ [*operator\[\]]]]\r    [\r      Returns the value for a field, or "" if it does not exist. \r\r      Returns the value for a case-insensitive matching header, or "" if it does not exist. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set [*set]]]\r    [\r      Set a field value, removing any other instances of that field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.swap [*swap]]]\r    [\r      Return a buffer sequence representing the trailers. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.basic_fields_dtor_ [*~basic_fields]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Protected Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_chunked_impl [*get_chunked_impl]]]\r    [\r      Returns the chunked Transfer-Encoding setting. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_keep_alive_impl [*get_keep_alive_impl]]]\r    [\r      Returns the keep-alive setting. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_method_impl [*get_method_impl]]]\r    [\r      Returns the request-method string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_reason_impl [*get_reason_impl]]]\r    [\r      Returns the response reason-phrase string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.get_target_impl [*get_target_impl]]]\r    [\r      Returns the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.has_content_length_impl [*has_content_length_impl]]]\r    [\r      Returns true if the Content-Length field is present. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_chunked_impl [*set_chunked_impl]]]\r    [\r      Adjusts the chunked Transfer-Encoding value. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_content_length_impl [*set_content_length_impl]]]\r    [\r      Sets or clears the Content-Length field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_keep_alive_impl [*set_keep_alive_impl]]]\r    [\r      Adjusts the Connection field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_method_impl [*set_method_impl]]]\r    [\r      Set or clear the method string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_reason_impl [*set_reason_impl]]]\r    [\r      Set or clear the reason string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.set_target_impl [*set_target_impl]]]\r    [\r      Set or clear the target string. \r    ]\r  ]\r]\r[heading Friends]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_fields.swap [*swap]]]\r    [\r      Swap two field containers. \r    ]\r  ]\r]\r
3270 This container is designed to store the field value pairs that make up the fields and trailers in an HTTP message. Objects of this type are iterable, with each element holding the field name and field value.
3271 Field names are stored as-is, but comparisons are case-insensitive. The container behaves as a `std::multiset`; there will be a separate value for each occurrence of the same field name. When the container is iterated the fields are presented in the order of insertion, with fields having the same name following each other consecutively.
3272 Meets the requirements of ['Fields]
3273 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Allocator`][\r    
3274 The allocator to use. \r  ]]\r]\r
3275 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__file_body http::file_body]\r[indexterm1 http::file_body]\r
3276 A message body represented by a file on the filesystem. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/file_body.hpp]\r\r\r\r```\rusing file_body = basic_file_body< file >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__reader [*reader]]]\r    [\r      Algorithm for storing buffers when parsing. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__value_type [*value_type]]]\r    [\r      The type of the message::body member. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body__writer [*writer]]]\r    [\r      Algorithm for retrieving buffers when serializing. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body.file_type [*file_type]]]\r    [\r      The type of File this body uses. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_file_body.size [*size]]]\r    [\r      Returns the size of the body. \r    ]\r  ]\r]\r
3277 Messages with this type have bodies represented by a file on the file system. When parsing a message using this body type, the data is stored in the file pointed to by the path, which must be writable. When serializing, the implementation will read the file and present those octets as the body content. This may be used to serve content from a directory as part of a web service.
3278 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`File`][\r    
3279 The implementation to use for accessing files. This type must meet the requirements of ['File]. \r  ]]\r]\r
3280 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__header http::header]\r
3281 A container for an HTTP request or response header. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/message.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest,\r    class __Fields__ = fields>\rclass header :\r    public Fields\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__header.fields_type [*fields_type]]]\r    [\r      The type representing the fields. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.is_request [*is_request]]]\r    [\r      Indicates if the header is a request or response. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__header.header [*header]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.method [*method]]]\r    [\r      Return the request-method verb. \r\r      Set the request-method. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.method_string [*method_string]]]\r    [\r      Return the request-method as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.reason [*reason]]]\r    [\r      Return the response reason-phrase. \r\r      Set the response reason-phrase (deprecated) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.result [*result]]]\r    [\r      The response status-code result. \r\r      Set the response status-code. \r\r      Set the response status-code as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.result_int [*result_int]]]\r    [\r      The response status-code expressed as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.target [*target]]]\r    [\r      Returns the request-target string. \r\r      Set the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.version [*version]]]\r    [\r      Return the HTTP-version. \r\r      Set the HTTP-version. \r    ]\r  ]\r]\r\r[heading Description]\r
3282 This container is derived from the `Fields` template type. To understand all of the members of this class it is necessary to view the declaration for the `Fields` type. When using the default fields container, those declarations are in [link beast.ref.boost__beast__http__fields `http::fields`].
3283 Newly constructed header objects have version set to HTTP/1.1. Newly constructed response objects also have result code set to [link beast.ref.boost__beast__http__status `http::ok`].
3284 A `header` includes the start-line and header-fields. [section:fields_type http::header::fields_type]\r[indexterm2 fields_type..http::header]\r
3285 The type representing the fields. \r[heading Synopsis]\r\r```\rusing fields_type = Fields;\r```\r\r[heading Description]\r[endsect]\r[section:header http::header::header]\r[indexterm2 header..http::header]\r
3286 Constructor. ```\r``[link beast.ref.boost__beast__http__header.header.overload1 header]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.header.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__header.header.overload2 header]``(\r    header&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.header.overload2 more...]]``\r\r``[link beast.ref.boost__beast__http__header.header.overload3 header]``(\r    header const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.header.overload3 more...]]``\r\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__http__header.header.overload4 header]``(\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.header.overload4 more...]]``\r```\r[section:overload1 http::header::header (1 of 4 overloads)]\r
3287 Constructor. \r[heading Synopsis]\r```\rheader();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::header::header (2 of 4 overloads)]\r
3288 Constructor. \r[heading Synopsis]\r```\rheader(\r    header&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 http::header::header (3 of 4 overloads)]\r
3289 Constructor. \r[heading Synopsis]\r```\rheader(\r    header const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 http::header::header (4 of 4 overloads)]\r
3290 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rheader(\r    Args&&... args);\r```\r\r[heading Description]\r
3291 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
3292 Arguments forwarded to the `Fields` base class constructor.\r  ]]\r]\r
3293 [heading Remarks]\r
3294 This constructor participates in overload resolution if and only if the first parameter is not convertible to [link beast.ref.boost__beast__http__header `http::header`], [link beast.ref.boost__beast__http__verb `http::verb`], or [link beast.ref.boost__beast__http__status `http::status`]. 
3295 [endsect]\r[endsect]\r\r[section:is_request http::header::is_request]\r[indexterm2 is_request..http::header]\r
3296 Indicates if the header is a request or response. \r[heading Synopsis]\r\r```\rusing is_request = std::integral_constant< bool, isRequest >;\r```\r\r[heading Description]\r[endsect]\r[section:method http::header::method]\r[indexterm2 method..http::header]\r
3297 Return the request-method verb. ```\rverb\r``[link beast.ref.boost__beast__http__header.method.overload1 method]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.method.overload1 more...]]``\r\r```\r
3298 Set the request-method. ```\rvoid\r``[link beast.ref.boost__beast__http__header.method.overload2 method]``(\r    verb v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.method.overload2 more...]]``\r```\r[section:overload1 http::header::method (1 of 2 overloads)]\r
3299 Return the request-method verb. \r[heading Synopsis]\r```\rverb\rmethod() const;\r```\r\r[heading Description]\r
3300 If the request-method is not one of the recognized verbs, [link beast.ref.boost__beast__http__field `http::unknown`] is returned. Callers may use [link beast.ref.boost__beast__http__header.method_string `http::header::method_string`] to retrieve the exact text.
3301 [heading Remarks]\r
3302 This function is only available when `isRequest == true`.
3303 [heading See Also]\r
3304 [link beast.ref.boost__beast__http__header.method_string `http::header::method_string`] 
3305 [endsect]\r[section:overload2 http::header::method (2 of 2 overloads)]\r
3306 Set the request-method. \r[heading Synopsis]\r```\rvoid\rmethod(\r    verb v);\r```\r\r[heading Description]\r
3307 This function will set the method for requests to a known verb.
3308 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3309 The request method verb to set. This may not be [link beast.ref.boost__beast__http__field `http::unknown`].\r  ]]\r]\r
3310 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::invalid_argument`][\r    
3311 when `v == verb::unknown`.\r  ]]\r]\r
3312 [heading Remarks]\r
3313 This function is only available when `isRequest == true`. 
3314 [endsect]\r[endsect]\r\r[section:method_string http::header::method_string]\r[indexterm2 method_string..http::header]\r
3315 Return the request-method as a string. ```\rstring_view\r``[link beast.ref.boost__beast__http__header.method_string.overload1 method_string]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.method_string.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__http__header.method_string.overload2 method_string]``(\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.method_string.overload2 more...]]``\r```\r[section:overload1 http::header::method_string (1 of 2 overloads)]\r
3316 Return the request-method as a string. \r[heading Synopsis]\r```\rstring_view\rmethod_string() const;\r```\r\r[heading Description]\r
3317 [heading Remarks]\r
3318 This function is only available when `isRequest == true`.
3319 [heading See Also]\r
3320 [link beast.ref.boost__beast__http__header.method `http::header::method`] 
3321 [endsect]\r[section:overload2 http::header::method_string (2 of 2 overloads)]\r
3322 Set the request-method. \r[heading Synopsis]\r```\rvoid\rmethod_string(\r    string_view s);\r```\r\r[heading Description]\r
3323 This function will set the request-method a known verb if the string matches, otherwise it will store a copy of the passed string.
3324 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3325 A string representing the request-method.\r  ]]\r]\r
3326 [heading Remarks]\r
3327 This function is only available when `isRequest == true`. 
3328 [endsect]\r[endsect]\r\r[section:operator_eq_ http::header::operator=]\r[indexterm2 operator=..http::header]\r
3329 Assignment. ```\rheader&\r``[link beast.ref.boost__beast__http__header.operator_eq_.overload1 operator=]``(\r    header&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.operator_eq_.overload1 more...]]``\r\rheader&\r``[link beast.ref.boost__beast__http__header.operator_eq_.overload2 operator=]``(\r    header const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.operator_eq_.overload2 more...]]``\r```\r[section:overload1 http::header::operator= (1 of 2 overloads)]\r
3330 Assignment. \r[heading Synopsis]\r```\rheader&\roperator=(\r    header&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::header::operator= (2 of 2 overloads)]\r
3331 Assignment. \r[heading Synopsis]\r```\rheader&\roperator=(\r    header const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:reason http::header::reason]\r[indexterm2 reason..http::header]\r
3332 Return the response reason-phrase. ```\rstring_view\r``[link beast.ref.boost__beast__http__header.reason.overload1 reason]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.reason.overload1 more...]]``\r\r```\r
3333 Set the response reason-phrase (deprecated) ```\rvoid\r``[link beast.ref.boost__beast__http__header.reason.overload2 reason]``(\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.reason.overload2 more...]]``\r```\r[section:overload1 http::header::reason (1 of 2 overloads)]\r
3334 Return the response reason-phrase. \r[heading Synopsis]\r```\rstring_view\rreason() const;\r```\r\r[heading Description]\r
3335 The reason-phrase is obsolete as of rfc7230.
3336 [heading Remarks]\r
3337 This function is only available when `isRequest == false`. 
3338 [endsect]\r[section:overload2 http::header::reason (2 of 2 overloads)]\r
3339 Set the response reason-phrase (deprecated) \r[heading Synopsis]\r```\rvoid\rreason(\r    string_view s);\r```\r\r[heading Description]\r
3340 This function sets a custom reason-phrase to a copy of the string passed in. Normally it is not necessary to set the reason phrase on an outgoing response object; the implementation will automatically use the standard reason text for the corresponding status code.
3341 To clear a previously set custom phrase, pass an empty string. This will restore the default standard reason text based on the status code used when serializing.
3342 The reason-phrase is obsolete as of rfc7230.
3343 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3344 The string to use for the reason-phrase.\r  ]]\r]\r
3345 [heading Remarks]\r
3346 This function is only available when `isRequest == false`. 
3347 [endsect]\r[endsect]\r\r[section:result http::header::result]\r[indexterm2 result..http::header]\r
3348 The response status-code result. ```\rstatus\r``[link beast.ref.boost__beast__http__header.result.overload1 result]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.result.overload1 more...]]``\r\r```\r
3349 Set the response status-code. ```\rvoid\r``[link beast.ref.boost__beast__http__header.result.overload2 result]``(\r    status v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.result.overload2 more...]]``\r\r```\r
3350 Set the response status-code as an integer. ```\rvoid\r``[link beast.ref.boost__beast__http__header.result.overload3 result]``(\r    unsigned v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.result.overload3 more...]]``\r```\r[section:overload1 http::header::result (1 of 3 overloads)]\r
3351 The response status-code result. \r[heading Synopsis]\r```\rstatus\rresult() const;\r```\r\r[heading Description]\r
3352 If the actual status code is not a known code, this function returns [link beast.ref.boost__beast__http__field `http::unknown`]. Use [link beast.ref.boost__beast__http__header.result_int `http::header::result_int`] to return the raw status code as a number.
3353 [heading Remarks]\r
3354 This member is only available when `isRequest == false`. 
3355 [endsect]\r[section:overload2 http::header::result (2 of 3 overloads)]\r
3356 Set the response status-code. \r[heading Synopsis]\r```\rvoid\rresult(\r    status v);\r```\r\r[heading Description]\r
3357 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3358 The code to set.\r  ]]\r]\r
3359 [heading Remarks]\r
3360 This member is only available when `isRequest == false`. 
3361 [endsect]\r[section:overload3 http::header::result (3 of 3 overloads)]\r
3362 Set the response status-code as an integer. \r[heading Synopsis]\r```\rvoid\rresult(\r    unsigned v);\r```\r\r[heading Description]\r
3363 This sets the status code to the exact number passed in. If the number does not correspond to one of the known status codes, the function [link beast.ref.boost__beast__http__header.result `http::header::result`] will return [link beast.ref.boost__beast__http__field `http::unknown`]. Use [link beast.ref.boost__beast__http__header.result_int `http::header::result_int`] to obtain the original raw status-code.
3364 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3365 The status-code integer to set.\r  ]]\r]\r
3366 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::invalid_argument`][\r    
3367 if `v > 999`. \r  ]]\r]\r
3368 [endsect]\r[endsect]\r\r[section:result_int http::header::result_int]\r[indexterm2 result_int..http::header]\r
3369 The response status-code expressed as an integer. \r[heading Synopsis]\r```\runsigned\rresult_int() const;\r```\r\r[heading Description]\r
3370 This returns the raw status code as an integer, even when that code is not in the list of known status codes.
3371 [heading Remarks]\r
3372 This member is only available when `isRequest == false`. 
3373 [endsect]\r[section:target http::header::target]\r[indexterm2 target..http::header]\r
3374 Returns the request-target string. ```\rstring_view\r``[link beast.ref.boost__beast__http__header.target.overload1 target]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.target.overload1 more...]]``\r\r```\r
3375 Set the request-target string. ```\rvoid\r``[link beast.ref.boost__beast__http__header.target.overload2 target]``(\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.target.overload2 more...]]``\r```\r[section:overload1 http::header::target (1 of 2 overloads)]\r
3376 Returns the request-target string. \r[heading Synopsis]\r```\rstring_view\rtarget() const;\r```\r\r[heading Description]\r
3377 The request target string returned is the same string which was received from the network or stored. In particular, it will contain url-encoded characters and should follow the syntax rules for URIs used with HTTP.
3378 [heading Remarks]\r
3379 This function is only available when `isRequest == true`. 
3380 [endsect]\r[section:overload2 http::header::target (2 of 2 overloads)]\r
3381 Set the request-target string. \r[heading Synopsis]\r```\rvoid\rtarget(\r    string_view s);\r```\r\r[heading Description]\r
3382 It is the caller's responsibility to ensure that the request target string follows the syntax rules for URIs used with HTTP. In particular, reserved or special characters must be url-encoded. The implementation does not perform syntax checking on the passed string.
3383 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3384 A string representing the request-target.\r  ]]\r]\r
3385 [heading Remarks]\r
3386 This function is only available when `isRequest == true`. 
3387 [endsect]\r[endsect]\r\r[section:version http::header::version]\r[indexterm2 version..http::header]\r
3388 Return the HTTP-version. ```\runsigned\r``[link beast.ref.boost__beast__http__header.version.overload1 version]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.version.overload1 more...]]``\r\r```\r
3389 Set the HTTP-version. ```\rvoid\r``[link beast.ref.boost__beast__http__header.version.overload2 version]``(\r    unsigned value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__header.version.overload2 more...]]``\r```\r[section:overload1 http::header::version (1 of 2 overloads)]\r
3390 Return the HTTP-version. \r[heading Synopsis]\r```\runsigned\rversion() const;\r```\r\r[heading Description]\r
3391 This holds both the major and minor version numbers, using these formulas: \r```\r  unsigned major = version / 10;
3392   unsigned minor = version % 10;
3393 ```\r
3394 Newly constructed headers will use HTTP/1.1 by default. [endsect]\r[section:overload2 http::header::version (2 of 2 overloads)]\r
3395 Set the HTTP-version. \r[heading Synopsis]\r```\rvoid\rversion(\r    unsigned value);\r```\r\r[heading Description]\r
3396 This holds both the major and minor version numbers, using these formulas: \r```\r  unsigned major = version / 10;
3397   unsigned minor = version % 10;
3398 ```\r
3399 Newly constructed headers will use HTTP/1.1 by default.
3400 [heading Parameters]\r[table [[Name][Description]]\r  [[`value`][\r    
3401 The version number to use \r  ]]\r]\r
3402 [endsect]\r[endsect]\r\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__icy_stream http::icy_stream]\r
3403 Stream wrapper to process Shoutcast HTTP responses. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/http/icy_stream.hpp]\r\r\r\r```\rtemplate<\r    class NextLayer>\rclass icy_stream\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.executor_type [*executor_type]]]\r    [\r      The type of the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.next_layer_type [*next_layer_type]]]\r    [\r      The type of the next layer. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.async_read_some [*async_read_some]]]\r    [\r      Start an asynchronous read. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.async_write_some [*async_write_some]]]\r    [\r      Start an asynchronous write. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.get_executor [*get_executor]]]\r    [\r      Get the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.icy_stream [*icy_stream]]]\r    [\r      \r\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.next_layer [*next_layer]]]\r    [\r      Get a reference to the next layer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.operator_eq_ [*operator=]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.read_some [*read_some]]]\r    [\r      Read some data from the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.write_some [*write_some]]]\r    [\r      Write some data to the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__icy_stream.icy_stream_dtor_ [*~icy_stream]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
3404 This wrapper replaces the word "ICY" in the first HTTP response received on the connection, with "HTTP/1.1". This allows the Beast parser to be used with Shoutcast servers, which send a non-standard HTTP message as the response.
3405 For asynchronous operations, the application must ensure that they are are all performed within the same implicit or explicit strand.
3406 [heading Thread Safety]
3407 ['Distinct] ['objects:] Safe.\r\r['Shared] ['objects:] Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
3408 [heading Example]
3409 To use the [link beast.ref.boost__beast__http__icy_stream `http::icy_stream`] template with an [link beast.ref.boost__beast__tcp_stream `tcp_stream`] you would write: \r```\r  http::icy_stream<tcp_stream> is(ioc);
3410 ```\r
3411 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`NextLayer`][\r    
3412 The type representing the next layer, to which data will be read and written during operations. For synchronous operations, the type must support the ['SyncStream] concept. For asynchronous operations, the type must support the ['AsyncStream] concept.\r  ]]\r]\r
3413 [heading Remarks]\r
3414 A stream object must not be moved or destroyed while there are pending asynchronous operations associated with it.
3415 [heading Concepts]
3416 ['AsyncStream], ['SyncStream] 
3417 [section:async_read_some http::icy_stream::async_read_some]\r[indexterm2 async_read_some..http::icy_stream]\r
3418 Start an asynchronous read. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__,\r    class __ReadHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_read_some(\r    MutableBufferSequence const& buffers,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
3419 This function is used to asynchronously read one or more bytes of data from the stream. The function call always returns immediately.
3420 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3421 The buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
3422 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
3423     const boost::system::error_code& error, // Result of operation.
3424     std::size_t bytes_transferred           // Number of bytes read.
3425   );
3426 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
3427 [heading Remarks]\r
3428 The `async_read_some` operation may not read all of the requested number of bytes. Consider using the function `net::async_read` if you need to ensure that the requested amount of data is read before the asynchronous operation completes. 
3429 [endsect]\r[section:async_write_some http::icy_stream::async_write_some]\r[indexterm2 async_write_some..http::icy_stream]\r
3430 Start an asynchronous write. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class __WriteHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_write_some(\r    ConstBufferSequence const& buffers,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
3431 This function is used to asynchronously write one or more bytes of data to the stream. The function call always returns immediately.
3432 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3433 The data to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
3434 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
3435     error_code const& error,          // Result of operation.
3436     std::size_t bytes_transferred     // Number of bytes written.
3437   );
3438 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
3439 [heading Remarks]\r
3440 The `async_write_some` operation may not transmit all of the data to the peer. Consider using the function `net::async_write` if you need to ensure that all data is written before the asynchronous operation completes. 
3441 [endsect]\r[section:executor_type http::icy_stream::executor_type]\r[indexterm2 executor_type..http::icy_stream]\r
3442 The type of the executor associated with the object. \r[heading Synopsis]\r\r```\rusing executor_type = typename next_layer_type::executor_type;\r```\r\r[heading Description]\r[endsect]\r[section:get_executor http::icy_stream::get_executor]\r[indexterm2 get_executor..http::icy_stream]\r
3443 Get the executor associated with the object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor();\r```\r\r[heading Description]\r
3444 This function may be used to obtain the executor object that the stream uses to dispatch handlers for asynchronous operations.
3445 [heading Return Value]
3446 A copy of the executor that stream will use to dispatch handlers. 
3447 [endsect]\r[section:icy_stream http::icy_stream::icy_stream]\r[indexterm2 icy_stream..http::icy_stream]\r```\r``[link beast.ref.boost__beast__http__icy_stream.icy_stream.overload1 icy_stream]``(\r    icy_stream&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.icy_stream.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__icy_stream.icy_stream.overload2 icy_stream]``(\r    icy_stream const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.icy_stream.overload2 more...]]``\r\r```\r
3448 Constructor. ```\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__http__icy_stream.icy_stream.overload3 icy_stream]``(\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.icy_stream.overload3 more...]]``\r```\r[section:overload1 http::icy_stream::icy_stream (1 of 3 overloads)]\r\r[heading Synopsis]\r```\ricy_stream(\r    icy_stream&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::icy_stream::icy_stream (2 of 3 overloads)]\r\r[heading Synopsis]\r```\ricy_stream(\r    icy_stream const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 http::icy_stream::icy_stream (3 of 3 overloads)]\r
3449 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\ricy_stream(\r    Args&&... args);\r```\r\r[heading Description]\r
3450 Arguments, if any, are forwarded to the next layer's constructor. [endsect]\r[endsect]\r\r[section:next_layer http::icy_stream::next_layer]\r[indexterm2 next_layer..http::icy_stream]\r
3451 Get a reference to the next layer. ```\rnext_layer_type&\r``[link beast.ref.boost__beast__http__icy_stream.next_layer.overload1 next_layer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.next_layer.overload1 more...]]``\r\rnext_layer_type const &\r``[link beast.ref.boost__beast__http__icy_stream.next_layer.overload2 next_layer]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.next_layer.overload2 more...]]``\r```\r[section:overload1 http::icy_stream::next_layer (1 of 2 overloads)]\r
3452 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type&\rnext_layer();\r```\r\r[heading Description]\r
3453 This function returns a reference to the next layer in a stack of stream layers.
3454 [heading Return Value]
3455 A reference to the next layer in the stack of stream layers. 
3456 [endsect]\r[section:overload2 http::icy_stream::next_layer (2 of 2 overloads)]\r
3457 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type const &\rnext_layer() const;\r```\r\r[heading Description]\r
3458 This function returns a reference to the next layer in a stack of stream layers.
3459 [heading Return Value]
3460 A reference to the next layer in the stack of stream layers. 
3461 [endsect]\r[endsect]\r\r[section:next_layer_type http::icy_stream::next_layer_type]\r[indexterm2 next_layer_type..http::icy_stream]\r
3462 The type of the next layer. \r[heading Synopsis]\r\r```\rusing next_layer_type = typename std::remove_reference< NextLayer >::type;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ http::icy_stream::operator=]\r[indexterm2 operator=..http::icy_stream]\r```\ricy_stream&\r``[link beast.ref.boost__beast__http__icy_stream.operator_eq_.overload1 operator=]``(\r    icy_stream&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.operator_eq_.overload1 more...]]``\r\ricy_stream&\r``[link beast.ref.boost__beast__http__icy_stream.operator_eq_.overload2 operator=]``(\r    icy_stream const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.operator_eq_.overload2 more...]]``\r```\r[section:overload1 http::icy_stream::operator= (1 of 2 overloads)]\r\r[heading Synopsis]\r```\ricy_stream&\roperator=(\r    icy_stream&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::icy_stream::operator= (2 of 2 overloads)]\r\r[heading Synopsis]\r```\ricy_stream&\roperator=(\r    icy_stream const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:read_some http::icy_stream::read_some]\r[indexterm2 read_some..http::icy_stream]\r
3463 Read some data from the stream. ```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__http__icy_stream.read_some.overload1 read_some]``(\r    MutableBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.read_some.overload1 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__http__icy_stream.read_some.overload2 read_some]``(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.read_some.overload2 more...]]``\r```\r[section:overload1 http::icy_stream::read_some (1 of 2 overloads)]\r
3464 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers);\r```\r\r[heading Description]\r
3465 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
3466 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3467 The buffers into which the data will be read.\r  ]]\r]\r
3468 [heading Return Value]
3469 The number of bytes read.
3470 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
3471 Thrown on failure.\r  ]]\r]\r
3472 [heading Remarks]\r
3473 The `read_some` operation may not read all of the requested number of bytes. Consider using the function `net::read` if you need to ensure that the requested amount of data is read before the blocking operation completes. 
3474 [endsect]\r[section:overload2 http::icy_stream::read_some (2 of 2 overloads)]\r
3475 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
3476 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
3477 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3478 The buffers into which the data will be read.\r  ]]\r  [[`ec`][\r    
3479 Set to indicate what error occurred, if any.\r  ]]\r]\r
3480 [heading Return Value]
3481 The number of bytes read.
3482 [heading Remarks]\r
3483 The `read_some` operation may not read all of the requested number of bytes. Consider using the function `net::read` if you need to ensure that the requested amount of data is read before the blocking operation completes. 
3484 [endsect]\r[endsect]\r\r[section:write_some http::icy_stream::write_some]\r[indexterm2 write_some..http::icy_stream]\r
3485 Write some data to the stream. ```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__http__icy_stream.write_some.overload1 write_some]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.write_some.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__http__icy_stream.write_some.overload2 write_some]``(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__icy_stream.write_some.overload2 more...]]``\r```\r[section:overload1 http::icy_stream::write_some (1 of 2 overloads)]\r
3486 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
3487 This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
3488 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3489 The data to be written.\r  ]]\r]\r
3490 [heading Return Value]
3491 The number of bytes written.
3492 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
3493 Thrown on failure.\r  ]]\r]\r
3494 [heading Remarks]\r
3495 The `write_some` operation may not transmit all of the data to the peer. Consider using the function `net::write` if you need to ensure that all data is written before the blocking operation completes. 
3496 [endsect]\r[section:overload2 http::icy_stream::write_some (2 of 2 overloads)]\r
3497 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
3498 This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
3499 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3500 The data to be written.\r  ]]\r  [[`ec`][\r    
3501 Set to indicate what error occurred, if any.\r  ]]\r]\r
3502 [heading Return Value]
3503 The number of bytes written.
3504 [heading Remarks]\r
3505 The `write_some` operation may not transmit all of the data to the peer. Consider using the function `net::write` if you need to ensure that all data is written before the blocking operation completes. 
3506 [endsect]\r[endsect]\r\r[section:icy_stream_dtor_ http::icy_stream::~icy_stream]\r[indexterm2 ~icy_stream..http::icy_stream]\r
3507 Destructor. \r[heading Synopsis]\r```\r~icy_stream();\r```\r\r[heading Description]\r
3508 The treatment of pending operations will be the same as that of the next layer. [endsect]\r\r\r[endsect]\r\r\r\r[section:boost__beast__http__int_to_status http::int_to_status]\r[indexterm1 http::int_to_status]\r
3509 Converts the integer to a known status-code. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/status.hpp]\r\r\r\r```\rstatus\rint_to_status(\r    unsigned v);\r\r```\r\r[heading Description]\r
3510 If the integer does not match a known status code, [link beast.ref.boost__beast__http__field `http::unknown`] is returned. \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__is_body http::is_body]\r[indexterm1 http::is_body]\r
3511 Determine if a type meets the ['Body] named requirements. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/type_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_body = ``['see-below]``;\r```\r\r[heading Description]\r
3512 This alias template is `std::true_type` if `T` meets the requirements, otherwise it is `std::false_type`.
3513 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`T`][\r    
3514 The type to test.\r  ]]\r]\r
3515 [heading Example]
3516 \r```\r  template<bool isRequest, class Body, class Fields>
3517   void check_body(message<isRequest, Body, Fields> const&)
3518   {
3519       static_assert(is_body<Body>::value,
3520           "Body type requirements not met");
3521   }
3522 ```\r
3523 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__is_body_reader http::is_body_reader]\r[indexterm1 http::is_body_reader]\r
3524 Determine if a type has a nested ['BodyReader]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/type_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_body_reader = ``['see-below]``;\r```\r\r[heading Description]\r
3525 This alias template is `std::true_type` when:
3526
3527 * `T` has a nested type named `reader`
3528
3529
3530 * `reader` meets the requirements of ['BodyReader].
3531
3532 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`T`][\r    
3533 The body type to test.\r  ]]\r]\r
3534 [heading Example]
3535 \r```\r  template<bool isRequest, class Body, class Fields>
3536   void check_can_parse(message<isRequest, Body, Fields>&)
3537   {
3538       static_assert(is_body_reader<Body>::value,
3539           "Cannot parse Body, no reader");
3540   }
3541 ```\r
3542 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__is_body_writer http::is_body_writer]\r[indexterm1 http::is_body_writer]\r
3543 Determine if a type has a nested ['BodyWriter]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/type_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_body_writer = ``['see-below]``;\r```\r\r[heading Description]\r
3544 This alias template is `std::true_type` when:
3545
3546 * `T` has a nested type named `writer`
3547
3548
3549 * `writer` meets the requirements of ['BodyWriter].
3550
3551 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`T`][\r    
3552 The body type to test.\r  ]]\r]\r
3553 [heading Example]
3554 \r```\r  template<bool isRequest, class Body, class Fields>
3555   void check_can_serialize(message<isRequest, Body, Fields> const&)
3556   {
3557       static_assert(is_body_writer<Body>::value,
3558           "Cannot serialize Body, no reader");
3559   }
3560 ```\r
3561 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__is_fields http::is_fields]\r[indexterm1 http::is_fields]\r
3562 Determine if a type meets the ['Fields] named requirements. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/type_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_fields = ``['see-below]``;\r```\r\r[heading Description]\r
3563 This alias template is `std::true_type` if `T` meets the requirements, otherwise it is `std::false_type`.
3564 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`T`][\r    
3565 The type to test.\r  ]]\r]\r
3566 [heading Example]
3567 Use with `static_assert`: \r```\r  template<bool isRequest, class Body, class Fields>
3568   void f(message<isRequest, Body, Fields> const&)
3569   {
3570       static_assert(is_fields<Fields>::value,
3571           "Fields type requirements not met");
3572   ...
3573 ```\r
3574 Use with `std::enable_if` (SFINAE): \r```\r  template<bool isRequest, class Body, class Fields>
3575   typename std::enable_if<is_fields<Fields>::value>::type
3576   f(message<isRequest, Body, Fields> const&);
3577 ```\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__is_mutable_body_writer http::is_mutable_body_writer]\r[indexterm1 http::is_mutable_body_writer]\r
3578 Determine if a type has a nested ['BodyWriter]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/type_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_mutable_body_writer = ``['see-below]``;\r```\r\r[heading Description]\r
3579 This alias template is `std::true_type` when:
3580
3581 * `T` has a nested type named `writer`
3582
3583
3584 * `writer` meets the requirements of ['BodyWriter].
3585
3586 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`T`][\r    
3587 The body type to test. \r  ]]\r]\r
3588 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__make_chunk http::make_chunk]\r[indexterm1 http::make_chunk]\r
3589 Returns a [link beast.ref.boost__beast__http__chunk_body `http::chunk_body`]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class... Args>\rauto\rmake_chunk(\r    ConstBufferSequence const& buffers,\r    Args&&... args);\r\r```\r\r[heading Description]\r
3590 This functions constructs and returns a complete [link beast.ref.boost__beast__http__chunk_body `http::chunk_body`] for a chunk body represented by the specified buffer sequence.
3591 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
3592 The buffers representing the chunk body.\r  ]]\r  [[`args`][\r    
3593 Optional arguments passed to the [link beast.ref.boost__beast__http__chunk_body `http::chunk_body`] constructor.\r  ]]\r]\r
3594 [heading Remarks]\r
3595 This function is provided as a notational convenience to omit specification of the class template arguments. 
3596 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__make_chunk_last http::make_chunk_last]\r[indexterm1 http::make_chunk_last]\r
3597 Returns a [link beast.ref.boost__beast__http__chunk_last `http::chunk_last`]. ```\rchunk_last< chunk_crlf >\r``[link beast.ref.boost__beast__http__make_chunk_last.overload1 make_chunk_last]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__make_chunk_last.overload1 more...]]``\r\rtemplate<\r    class Trailer,\r    class... Args>\rchunk_last< Trailer >\r``[link beast.ref.boost__beast__http__make_chunk_last.overload2 make_chunk_last]``(\r    Trailer const& trailer,\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__make_chunk_last.overload2 more...]]``\r```\r[section:overload1 http::make_chunk_last (1 of 2 overloads)]\r
3598 Returns a [link beast.ref.boost__beast__http__chunk_last `http::chunk_last`]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rchunk_last< chunk_crlf >\rmake_chunk_last();\r\r```\r\r[heading Description]\r
3599 [heading Remarks]\r
3600 This function is provided as a notational convenience to omit specification of the class template arguments. 
3601 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::make_chunk_last (2 of 2 overloads)]\r
3602 Returns a [link beast.ref.boost__beast__http__chunk_last `http::chunk_last`]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/chunk_encode.hpp]\r\r\r\r```\rtemplate<\r    class Trailer,\r    class... Args>\rchunk_last< Trailer >\rmake_chunk_last(\r    Trailer const& trailer,\r    Args&&... args);\r\r```\r\r[heading Description]\r
3603 This function construct and returns a complete [link beast.ref.boost__beast__http__chunk_last `http::chunk_last`] for a last chunk containing the specified trailers.
3604 [heading Parameters]\r[table [[Name][Description]]\r  [[`trailer`][\r    
3605 A ConstBufferSequence or \r  ]]\r]\r
3606 [heading Remarks]\r
3607 This function is provided as a notational convenience to omit specification of the class template arguments.
3608 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
3609 Optional arguments passed to the [link beast.ref.boost__beast__http__chunk_last `http::chunk_last`] constructor. \r  ]]\r]\r
3610 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__message http::message]\r
3611 A container for a complete HTTP message. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/message.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest,\r    class __Body__,\r    class __Fields__ = fields>\rclass message :\r    public http::header< isRequest, Fields >\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__message.body_type [*body_type]]]\r    [\r      The type providing the body traits. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.fields_type [*fields_type]]]\r    [\r      The type representing the fields. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.header_type [*header_type]]]\r    [\r      The base class used to hold the header portion of the message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.is_request [*is_request]]]\r    [\r      Indicates if the header is a request or response. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__message.base [*base]]]\r    [\r      Returns the header portion of the message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.body [*body]]]\r    [\r      Returns the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.chunked [*chunked]]]\r    [\r      Returns true if the chunked Transfer-Encoding is specified. \r\r      Set or clear the chunked Transfer-Encoding. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.content_length [*content_length]]]\r    [\r      Set or clear the Content-Length field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.has_content_length [*has_content_length]]]\r    [\r      Returns true if the Content-Length field is present. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.keep_alive [*keep_alive]]]\r    [\r      Returns true if the message semantics indicate keep-alive. \r\r      Set the keep-alive message semantic option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.message [*message]]]\r    [\r      Constructor. \r\r      Construct a message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.method [*method]]]\r    [\r      Return the request-method verb. \r\r      Set the request-method. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.method_string [*method_string]]]\r    [\r      Return the request-method as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.need_eof [*need_eof]]]\r    [\r      Returns true if the message semantics require an end of file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.payload_size [*payload_size]]]\r    [\r      Returns the payload size of the body in octets if possible. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.prepare_payload [*prepare_payload]]]\r    [\r      Prepare the message payload fields for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.reason [*reason]]]\r    [\r      Return the response reason-phrase. \r\r      Set the response reason-phrase (deprecated) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.result [*result]]]\r    [\r      The response status-code result. \r\r      Set the response status-code. \r\r      Set the response status-code as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.result_int [*result_int]]]\r    [\r      The response status-code expressed as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.target [*target]]]\r    [\r      Returns the request-target string. \r\r      Set the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.version [*version]]]\r    [\r      Return the HTTP-version. \r\r      Set the HTTP-version. \r    ]\r  ]\r]\r\r[heading Description]\r
3612 This container is derived from the `Fields` template type. To understand all of the members of this class it is necessary to view the declaration for the `Fields` type. When using the default fields container, those declarations are in [link beast.ref.boost__beast__http__fields `http::fields`].
3613 A message can be a request or response, depending on the `isRequest` template argument value. Requests and responses have different types; functions may be overloaded based on the type if desired.
3614 The `Body` template argument type determines the model used to read or write the content body of the message.
3615 Newly constructed messages objects have version set to HTTP/1.1. Newly constructed response objects also have result code set to [link beast.ref.boost__beast__http__status `http::ok`].
3616 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
3617 `true` if this represents a request, or `false` if this represents a response. Some class data members are conditionally present depending on this value.\r  ]]\r  [[`Body`][\r    
3618 A type meeting the requirements of Body.\r  ]]\r  [[`Fields`][\r    
3619 The type of container used to hold the field value pairs. \r  ]]\r]\r
3620 [section:base http::message::base]\r[indexterm2 base..http::message]\r
3621 Returns the header portion of the message. ```\rheader_type const &\r``[link beast.ref.boost__beast__http__message.base.overload1 base]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.base.overload1 more...]]``\r\rheader_type&\r``[link beast.ref.boost__beast__http__message.base.overload2 base]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.base.overload2 more...]]``\r```\r[section:overload1 http::message::base (1 of 2 overloads)]\r
3622 Returns the header portion of the message. \r[heading Synopsis]\r```\rheader_type const &\rbase() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::message::base (2 of 2 overloads)]\r
3623 Returns the header portion of the message. \r[heading Synopsis]\r```\rheader_type&\rbase();\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:body http::message::body]\r[indexterm2 body..http::message]\r
3624 Returns the body. ```\rbody_type::value_type&\r``[link beast.ref.boost__beast__http__message.body.overload1 body]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.body.overload1 more...]]``\r\rbody_type::value_type&&\r``[link beast.ref.boost__beast__http__message.body.overload2 body]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.body.overload2 more...]]``\r\rbody_type::value_type const &\r``[link beast.ref.boost__beast__http__message.body.overload3 body]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.body.overload3 more...]]``\r```\r[section:overload1 http::message::body (1 of 3 overloads)]\r
3625 Returns the body. \r[heading Synopsis]\r```\rbody_type::value_type&\rbody();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::message::body (2 of 3 overloads)]\r
3626 Returns the body. \r[heading Synopsis]\r```\rbody_type::value_type&&\rbody();\r```\r\r[heading Description]\r[endsect]\r[section:overload3 http::message::body (3 of 3 overloads)]\r
3627 Returns the body. \r[heading Synopsis]\r```\rbody_type::value_type const &\rbody() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:body_type http::message::body_type]\r[indexterm2 body_type..http::message]\r
3628 The type providing the body traits. \r[heading Synopsis]\r\r```\rusing body_type = Body;\r```\r\r[heading Description]\r
3629 The [link beast.ref.boost__beast__http__message.body `http::message::body`] member will be of type `body_type::value_type`. [endsect]\r[section:chunked http::message::chunked]\r[indexterm2 chunked..http::message]\r
3630 Returns `true` if the chunked Transfer-Encoding is specified. ```\rbool\r``[link beast.ref.boost__beast__http__message.chunked.overload1 chunked]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.chunked.overload1 more...]]``\r\r```\r
3631 Set or clear the chunked Transfer-Encoding. ```\rvoid\r``[link beast.ref.boost__beast__http__message.chunked.overload2 chunked]``(\r    bool value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.chunked.overload2 more...]]``\r```\r[section:overload1 http::message::chunked (1 of 2 overloads)]\r
3632 Returns `true` if the chunked Transfer-Encoding is specified. \r[heading Synopsis]\r```\rbool\rchunked() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::message::chunked (2 of 2 overloads)]\r
3633 Set or clear the chunked Transfer-Encoding. \r[heading Synopsis]\r```\rvoid\rchunked(\r    bool value);\r```\r\r[heading Description]\r
3634 This function will set or remove the "chunked" transfer encoding as the last item in the list of encodings in the field.
3635 If the result of removing the chunked token results in an empty string, the field is erased.
3636 The Content-Length field is erased unconditionally. [endsect]\r[endsect]\r\r[section:content_length http::message::content_length]\r[indexterm2 content_length..http::message]\r
3637 Set or clear the Content-Length field. \r[heading Synopsis]\r```\rvoid\rcontent_length(\r    boost::optional< std::uint64_t > const& value);\r```\r\r[heading Description]\r
3638 This function adjusts the Content-Length field as follows:
3639
3640 * If `value` specifies a value, the Content-Length field is set to the value. Otherwise
3641
3642
3643 * The Content-Length field is erased.
3644
3645 If "chunked" token appears as the last item in the Transfer-Encoding field it is unconditionally removed.
3646 [heading Parameters]\r[table [[Name][Description]]\r  [[`value`][\r    
3647 The value to set for Content-Length. \r  ]]\r]\r
3648 [endsect]\r[section:fields_type http::message::fields_type]\r(Inherited from `http::header`)\r\r[indexterm2 fields_type..http::message]\r
3649 The type representing the fields. \r[heading Synopsis]\r\r```\rusing fields_type = Fields;\r```\r\r[heading Description]\r[endsect]\r[section:has_content_length http::message::has_content_length]\r[indexterm2 has_content_length..http::message]\r
3650 Returns `true` if the Content-Length field is present. \r[heading Synopsis]\r```\rbool\rhas_content_length() const;\r```\r\r[heading Description]\r
3651 This function inspects the fields and returns `true` if the Content-Length field is present. The properties of the body are not checked, this only looks for the field. [endsect]\r[section:header_type http::message::header_type]\r[indexterm2 header_type..http::message]\r
3652 The base class used to hold the header portion of the message. \r[heading Synopsis]\r\r```\rusing header_type = header< isRequest, Fields >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__header.fields_type [*fields_type]]]\r    [\r      The type representing the fields. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.is_request [*is_request]]]\r    [\r      Indicates if the header is a request or response. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__header.header [*header]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.method [*method]]]\r    [\r      Return the request-method verb. \r\r      Set the request-method. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.method_string [*method_string]]]\r    [\r      Return the request-method as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.reason [*reason]]]\r    [\r      Return the response reason-phrase. \r\r      Set the response reason-phrase (deprecated) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.result [*result]]]\r    [\r      The response status-code result. \r\r      Set the response status-code. \r\r      Set the response status-code as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.result_int [*result_int]]]\r    [\r      The response status-code expressed as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.target [*target]]]\r    [\r      Returns the request-target string. \r\r      Set the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.version [*version]]]\r    [\r      Return the HTTP-version. \r\r      Set the HTTP-version. \r    ]\r  ]\r]\r
3653 This container is derived from the `Fields` template type. To understand all of the members of this class it is necessary to view the declaration for the `Fields` type. When using the default fields container, those declarations are in [link beast.ref.boost__beast__http__fields `http::fields`].
3654 Newly constructed header objects have version set to HTTP/1.1. Newly constructed response objects also have result code set to [link beast.ref.boost__beast__http__status `http::ok`].
3655 A `header` includes the start-line and header-fields. \r[heading Description]\r[endsect]\r[section:is_request http::message::is_request]\r(Inherited from `http::header`)\r\r[indexterm2 is_request..http::message]\r
3656 Indicates if the header is a request or response. \r[heading Synopsis]\r\r```\rusing is_request = std::integral_constant< bool, isRequest >;\r```\r\r[heading Description]\r[endsect]\r[section:keep_alive http::message::keep_alive]\r[indexterm2 keep_alive..http::message]\r
3657 Returns `true` if the message semantics indicate keep-alive. ```\rbool\r``[link beast.ref.boost__beast__http__message.keep_alive.overload1 keep_alive]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.keep_alive.overload1 more...]]``\r\r```\r
3658 Set the keep-alive message semantic option. ```\rvoid\r``[link beast.ref.boost__beast__http__message.keep_alive.overload2 keep_alive]``(\r    bool value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.keep_alive.overload2 more...]]``\r```\r[section:overload1 http::message::keep_alive (1 of 2 overloads)]\r
3659 Returns `true` if the message semantics indicate keep-alive. \r[heading Synopsis]\r```\rbool\rkeep_alive() const;\r```\r\r[heading Description]\r
3660 The value depends on the version in the message, which must be set to the final value before this function is called or else the return value is unreliable. [endsect]\r[section:overload2 http::message::keep_alive (2 of 2 overloads)]\r
3661 Set the keep-alive message semantic option. \r[heading Synopsis]\r```\rvoid\rkeep_alive(\r    bool value);\r```\r\r[heading Description]\r
3662 This function adjusts the Connection field to indicate whether or not the connection should be kept open after the corresponding response. The result depends on the version set on the message, which must be set to the final value before making this call.
3663 [heading Parameters]\r[table [[Name][Description]]\r  [[`value`][\r    
3664 `true` if the connection should persist. \r  ]]\r]\r
3665 [endsect]\r[endsect]\r\r[section:message http::message::message]\r[indexterm2 message..http::message]\r
3666 Constructor. ```\r``[link beast.ref.boost__beast__http__message.message.overload1 message]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__message.message.overload2 message]``(\r    message&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload2 more...]]``\r\r``[link beast.ref.boost__beast__http__message.message.overload3 message]``(\r    message const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload3 more...]]``\r\rtemplate<\r    class... BodyArgs>\rexplicit\r``[link beast.ref.boost__beast__http__message.message.overload4 message]``(\r    header_type&& h,\r    BodyArgs&&... body_args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload4 more...]]``\r\rtemplate<\r    class... BodyArgs>\rexplicit\r``[link beast.ref.boost__beast__http__message.message.overload5 message]``(\r    header_type const& h,\r    BodyArgs&&... body_args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload5 more...]]``\r\r``[link beast.ref.boost__beast__http__message.message.overload6 message]``(\r    verb method,\r    string_view target,\r    unsigned version);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload6 more...]]``\r\rtemplate<\r    class BodyArg>\r``[link beast.ref.boost__beast__http__message.message.overload7 message]``(\r    verb method,\r    string_view target,\r    unsigned version,\r    BodyArg&& body_arg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload7 more...]]``\r\rtemplate<\r    class BodyArg,\r    class FieldsArg>\r``[link beast.ref.boost__beast__http__message.message.overload8 message]``(\r    verb method,\r    string_view target,\r    unsigned version,\r    BodyArg&& body_arg,\r    FieldsArg&& fields_arg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload8 more...]]``\r\r``[link beast.ref.boost__beast__http__message.message.overload9 message]``(\r    status result,\r    unsigned version);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload9 more...]]``\r\rtemplate<\r    class BodyArg>\r``[link beast.ref.boost__beast__http__message.message.overload10 message]``(\r    status result,\r    unsigned version,\r    BodyArg&& body_arg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload10 more...]]``\r\rtemplate<\r    class BodyArg,\r    class FieldsArg>\r``[link beast.ref.boost__beast__http__message.message.overload11 message]``(\r    status result,\r    unsigned version,\r    BodyArg&& body_arg,\r    FieldsArg&& fields_arg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload11 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__http__message.message.overload12 message]``(\r    std::piecewise_construct_t);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload12 more...]]``\r\r```\r
3667 Construct a message. ```\rtemplate<\r    class... BodyArgs>\r``[link beast.ref.boost__beast__http__message.message.overload13 message]``(\r    std::piecewise_construct_t,\r    std::tuple< BodyArgs... > body_args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload13 more...]]``\r\rtemplate<\r    class... BodyArgs,\r    class... FieldsArgs>\r``[link beast.ref.boost__beast__http__message.message.overload14 message]``(\r    std::piecewise_construct_t,\r    std::tuple< BodyArgs... > body_args,\r    std::tuple< FieldsArgs... > fields_args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.message.overload14 more...]]``\r```\r[section:overload1 http::message::message (1 of 14 overloads)]\r
3668 Constructor. \r[heading Synopsis]\r```\rmessage();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::message::message (2 of 14 overloads)]\r
3669 Constructor. \r[heading Synopsis]\r```\rmessage(\r    message&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 http::message::message (3 of 14 overloads)]\r
3670 Constructor. \r[heading Synopsis]\r```\rmessage(\r    message const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 http::message::message (4 of 14 overloads)]\r
3671 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... BodyArgs>\rmessage(\r    header_type&& h,\r    BodyArgs&&... body_args);\r```\r\r[heading Description]\r
3672 [heading Parameters]\r[table [[Name][Description]]\r  [[`h`][\r    
3673 The header to move construct from.\r  ]]\r  [[`body_args`][\r    
3674 Optional arguments forwarded to the `body` constructor. \r  ]]\r]\r
3675 [endsect]\r[section:overload5 http::message::message (5 of 14 overloads)]\r
3676 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... BodyArgs>\rmessage(\r    header_type const& h,\r    BodyArgs&&... body_args);\r```\r\r[heading Description]\r
3677 [heading Parameters]\r[table [[Name][Description]]\r  [[`h`][\r    
3678 The header to copy construct from.\r  ]]\r  [[`body_args`][\r    
3679 Optional arguments forwarded to the `body` constructor. \r  ]]\r]\r
3680 [endsect]\r[section:overload6 http::message::message (6 of 14 overloads)]\r
3681 Constructor. \r[heading Synopsis]\r```\rmessage(\r    verb method,\r    string_view target,\r    unsigned version);\r```\r\r[heading Description]\r
3682 [heading Parameters]\r[table [[Name][Description]]\r  [[`method`][\r    
3683 The request-method to use.\r  ]]\r  [[`target`][\r    
3684 The request-target.\r  ]]\r  [[`version`][\r    
3685 The HTTP-version.\r  ]]\r]\r
3686 [heading Remarks]\r
3687 This function is only available when `isRequest == true`. 
3688 [endsect]\r[section:overload7 http::message::message (7 of 14 overloads)]\r
3689 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class BodyArg>\rmessage(\r    verb method,\r    string_view target,\r    unsigned version,\r    BodyArg&& body_arg);\r```\r\r[heading Description]\r
3690 [heading Parameters]\r[table [[Name][Description]]\r  [[`method`][\r    
3691 The request-method to use.\r  ]]\r  [[`target`][\r    
3692 The request-target.\r  ]]\r  [[`version`][\r    
3693 The HTTP-version.\r  ]]\r  [[`body_arg`][\r    
3694 An argument forwarded to the `body` constructor.\r  ]]\r]\r
3695 [heading Remarks]\r
3696 This function is only available when `isRequest == true`. 
3697 [endsect]\r[section:overload8 http::message::message (8 of 14 overloads)]\r
3698 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class BodyArg,\r    class FieldsArg>\rmessage(\r    verb method,\r    string_view target,\r    unsigned version,\r    BodyArg&& body_arg,\r    FieldsArg&& fields_arg);\r```\r\r[heading Description]\r
3699 [heading Parameters]\r[table [[Name][Description]]\r  [[`method`][\r    
3700 The request-method to use.\r  ]]\r  [[`target`][\r    
3701 The request-target.\r  ]]\r  [[`version`][\r    
3702 The HTTP-version.\r  ]]\r  [[`body_arg`][\r    
3703 An argument forwarded to the `body` constructor.\r  ]]\r  [[`fields_arg`][\r    
3704 An argument forwarded to the `Fields` constructor.\r  ]]\r]\r
3705 [heading Remarks]\r
3706 This function is only available when `isRequest == true`. 
3707 [endsect]\r[section:overload9 http::message::message (9 of 14 overloads)]\r
3708 Constructor. \r[heading Synopsis]\r```\rmessage(\r    status result,\r    unsigned version);\r```\r\r[heading Description]\r
3709 [heading Parameters]\r[table [[Name][Description]]\r  [[`result`][\r    
3710 The status-code for the response.\r  ]]\r  [[`version`][\r    
3711 The HTTP-version.\r  ]]\r]\r
3712 [heading Remarks]\r
3713 This member is only available when `isRequest == false`. 
3714 [endsect]\r[section:overload10 http::message::message (10 of 14 overloads)]\r
3715 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class BodyArg>\rmessage(\r    status result,\r    unsigned version,\r    BodyArg&& body_arg);\r```\r\r[heading Description]\r
3716 [heading Parameters]\r[table [[Name][Description]]\r  [[`result`][\r    
3717 The status-code for the response.\r  ]]\r  [[`version`][\r    
3718 The HTTP-version.\r  ]]\r  [[`body_arg`][\r    
3719 An argument forwarded to the `body` constructor.\r  ]]\r]\r
3720 [heading Remarks]\r
3721 This member is only available when `isRequest == false`. 
3722 [endsect]\r[section:overload11 http::message::message (11 of 14 overloads)]\r
3723 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class BodyArg,\r    class FieldsArg>\rmessage(\r    status result,\r    unsigned version,\r    BodyArg&& body_arg,\r    FieldsArg&& fields_arg);\r```\r\r[heading Description]\r
3724 [heading Parameters]\r[table [[Name][Description]]\r  [[`result`][\r    
3725 The status-code for the response.\r  ]]\r  [[`version`][\r    
3726 The HTTP-version.\r  ]]\r  [[`body_arg`][\r    
3727 An argument forwarded to the `body` constructor.\r  ]]\r  [[`fields_arg`][\r    
3728 An argument forwarded to the `Fields` base class constructor.\r  ]]\r]\r
3729 [heading Remarks]\r
3730 This member is only available when `isRequest == false`. 
3731 [endsect]\r[section:overload12 http::message::message (12 of 14 overloads)]\r
3732 Constructor. \r[heading Synopsis]\r```\rmessage(\r    std::piecewise_construct_t);\r```\r\r[heading Description]\r
3733 The header and body are default-constructed. [endsect]\r[section:overload13 http::message::message (13 of 14 overloads)]\r
3734 Construct a message. \r[heading Synopsis]\r```\rtemplate<\r    class... BodyArgs>\rmessage(\r    std::piecewise_construct_t,\r    std::tuple< BodyArgs... > body_args);\r```\r\r[heading Description]\r
3735 [heading Parameters]\r[table [[Name][Description]]\r  [[`body_args`][\r    
3736 A tuple forwarded as a parameter pack to the body constructor. \r  ]]\r]\r
3737 [endsect]\r[section:overload14 http::message::message (14 of 14 overloads)]\r
3738 Construct a message. \r[heading Synopsis]\r```\rtemplate<\r    class... BodyArgs,\r    class... FieldsArgs>\rmessage(\r    std::piecewise_construct_t,\r    std::tuple< BodyArgs... > body_args,\r    std::tuple< FieldsArgs... > fields_args);\r```\r\r[heading Description]\r
3739 [heading Parameters]\r[table [[Name][Description]]\r  [[`body_args`][\r    
3740 A tuple forwarded as a parameter pack to the body constructor.\r  ]]\r  [[`fields_args`][\r    
3741 A tuple forwarded as a parameter pack to the `Fields` constructor. \r  ]]\r]\r
3742 [endsect]\r[endsect]\r\r[section:method http::message::method]\r[indexterm2 method..http::message]\r
3743 Return the request-method verb. ```\rverb\r``[link beast.ref.boost__beast__http__message.method.overload1 method]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.method.overload1 more...]]``\r\r```\r
3744 Set the request-method. ```\rvoid\r``[link beast.ref.boost__beast__http__message.method.overload2 method]``(\r    verb v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.method.overload2 more...]]``\r```\r[section:overload1 http::message::method (1 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3745 Return the request-method verb. \r[heading Synopsis]\r```\rverb\rmethod() const;\r```\r\r[heading Description]\r
3746 If the request-method is not one of the recognized verbs, [link beast.ref.boost__beast__http__field `http::unknown`] is returned. Callers may use [link beast.ref.boost__beast__http__header.method_string `http::header::method_string`] to retrieve the exact text.
3747 [heading Remarks]\r
3748 This function is only available when `isRequest == true`.
3749 [heading See Also]\r
3750 [link beast.ref.boost__beast__http__header.method_string `http::header::method_string`] 
3751 [endsect]\r[section:overload2 http::message::method (2 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3752 Set the request-method. \r[heading Synopsis]\r```\rvoid\rmethod(\r    verb v);\r```\r\r[heading Description]\r
3753 This function will set the method for requests to a known verb.
3754 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3755 The request method verb to set. This may not be [link beast.ref.boost__beast__http__field `http::unknown`].\r  ]]\r]\r
3756 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::invalid_argument`][\r    
3757 when `v == verb::unknown`.\r  ]]\r]\r
3758 [heading Remarks]\r
3759 This function is only available when `isRequest == true`. 
3760 [endsect]\r[endsect]\r\r[section:method_string http::message::method_string]\r[indexterm2 method_string..http::message]\r
3761 Return the request-method as a string. ```\rstring_view\r``[link beast.ref.boost__beast__http__message.method_string.overload1 method_string]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.method_string.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__http__message.method_string.overload2 method_string]``(\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.method_string.overload2 more...]]``\r```\r[section:overload1 http::message::method_string (1 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3762 Return the request-method as a string. \r[heading Synopsis]\r```\rstring_view\rmethod_string() const;\r```\r\r[heading Description]\r
3763 [heading Remarks]\r
3764 This function is only available when `isRequest == true`.
3765 [heading See Also]\r
3766 [link beast.ref.boost__beast__http__header.method `http::header::method`] 
3767 [endsect]\r[section:overload2 http::message::method_string (2 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3768 Set the request-method. \r[heading Synopsis]\r```\rvoid\rmethod_string(\r    string_view s);\r```\r\r[heading Description]\r
3769 This function will set the request-method a known verb if the string matches, otherwise it will store a copy of the passed string.
3770 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3771 A string representing the request-method.\r  ]]\r]\r
3772 [heading Remarks]\r
3773 This function is only available when `isRequest == true`. 
3774 [endsect]\r[endsect]\r\r[section:need_eof http::message::need_eof]\r[indexterm2 need_eof..http::message]\r
3775 Returns `true` if the message semantics require an end of file. \r[heading Synopsis]\r```\rbool\rneed_eof() const;\r```\r\r[heading Description]\r
3776 For HTTP requests, this function returns the logical NOT of a call to [link beast.ref.boost__beast__http__message.keep_alive `http::message::keep_alive`].
3777 For HTTP responses, this function returns the logical NOT of a call to [link beast.ref.boost__beast__http__message.keep_alive `http::message::keep_alive`] if any of the following are true:
3778
3779 * [link beast.ref.boost__beast__http__message.has_content_length `http::message::has_content_length`] would return `true`
3780
3781
3782 * [link beast.ref.boost__beast__http__message.chunked `http::message::chunked`] would return `true`
3783
3784
3785 * [link beast.ref.boost__beast__http__header.result `http::header::result`] returns [link beast.ref.boost__beast__http__status `http::no_content`]
3786
3787
3788 * [link beast.ref.boost__beast__http__header.result `http::header::result`] returns [link beast.ref.boost__beast__http__status `http::not_modified`]
3789
3790
3791 * [link beast.ref.boost__beast__http__header.result `http::header::result`] returns any informational status class (100 to 199)
3792
3793 Otherwise, the function returns `true`.
3794 [heading See Also]\r
3795 [@https://tools.ietf.org/html/rfc7230#section-3.3 https://tools.ietf.org/html/rfc7230#section-3.3] 
3796 [endsect]\r[section:operator_eq_ http::message::operator=]\r[indexterm2 operator=..http::message]\r
3797 Assignment. ```\rmessage&\r``[link beast.ref.boost__beast__http__message.operator_eq_.overload1 operator=]``(\r    message&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.operator_eq_.overload1 more...]]``\r\rmessage&\r``[link beast.ref.boost__beast__http__message.operator_eq_.overload2 operator=]``(\r    message const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.operator_eq_.overload2 more...]]``\r```\r[section:overload1 http::message::operator= (1 of 2 overloads)]\r
3798 Assignment. \r[heading Synopsis]\r```\rmessage&\roperator=(\r    message&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::message::operator= (2 of 2 overloads)]\r
3799 Assignment. \r[heading Synopsis]\r```\rmessage&\roperator=(\r    message const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:payload_size http::message::payload_size]\r[indexterm2 payload_size..http::message]\r
3800 Returns the payload size of the body in octets if possible. \r[heading Synopsis]\r```\rboost::optional< std::uint64_t >\rpayload_size() const;\r```\r\r[heading Description]\r
3801 This function invokes the ['Body] algorithm to measure the number of octets in the serialized body container. If there is no body, this will return zero. Otherwise, if the body exists but is not known ahead of time, `boost::none` is returned (usually indicating that a chunked Transfer-Encoding will be used).
3802 [heading Remarks]\r
3803 The value of the Content-Length field in the message is not inspected. 
3804 [endsect]\r[section:prepare_payload http::message::prepare_payload]\r[indexterm2 prepare_payload..http::message]\r
3805 Prepare the message payload fields for the body. \r[heading Synopsis]\r```\rvoid\rprepare_payload();\r```\r\r[heading Description]\r
3806 This function will adjust the Content-Length and Transfer-Encoding field values based on the properties of the body.
3807 [heading Example]
3808 \r```\r  request<string_body> req{verb::post, "/"};
3809   req.set(field::user_agent, "Beast");
3810   req.body() = "Hello, world!";
3811   req.prepare_payload();
3812 ```\r
3813 [endsect]\r[section:reason http::message::reason]\r[indexterm2 reason..http::message]\r
3814 Return the response reason-phrase. ```\rstring_view\r``[link beast.ref.boost__beast__http__message.reason.overload1 reason]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.reason.overload1 more...]]``\r\r```\r
3815 Set the response reason-phrase (deprecated) ```\rvoid\r``[link beast.ref.boost__beast__http__message.reason.overload2 reason]``(\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.reason.overload2 more...]]``\r```\r[section:overload1 http::message::reason (1 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3816 Return the response reason-phrase. \r[heading Synopsis]\r```\rstring_view\rreason() const;\r```\r\r[heading Description]\r
3817 The reason-phrase is obsolete as of rfc7230.
3818 [heading Remarks]\r
3819 This function is only available when `isRequest == false`. 
3820 [endsect]\r[section:overload2 http::message::reason (2 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3821 Set the response reason-phrase (deprecated) \r[heading Synopsis]\r```\rvoid\rreason(\r    string_view s);\r```\r\r[heading Description]\r
3822 This function sets a custom reason-phrase to a copy of the string passed in. Normally it is not necessary to set the reason phrase on an outgoing response object; the implementation will automatically use the standard reason text for the corresponding status code.
3823 To clear a previously set custom phrase, pass an empty string. This will restore the default standard reason text based on the status code used when serializing.
3824 The reason-phrase is obsolete as of rfc7230.
3825 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3826 The string to use for the reason-phrase.\r  ]]\r]\r
3827 [heading Remarks]\r
3828 This function is only available when `isRequest == false`. 
3829 [endsect]\r[endsect]\r\r[section:result http::message::result]\r[indexterm2 result..http::message]\r
3830 The response status-code result. ```\rstatus\r``[link beast.ref.boost__beast__http__message.result.overload1 result]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.result.overload1 more...]]``\r\r```\r
3831 Set the response status-code. ```\rvoid\r``[link beast.ref.boost__beast__http__message.result.overload2 result]``(\r    status v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.result.overload2 more...]]``\r\r```\r
3832 Set the response status-code as an integer. ```\rvoid\r``[link beast.ref.boost__beast__http__message.result.overload3 result]``(\r    unsigned v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.result.overload3 more...]]``\r```\r[section:overload1 http::message::result (1 of 3 overloads)]\r(Inherited from `http::header`)\r\r
3833 The response status-code result. \r[heading Synopsis]\r```\rstatus\rresult() const;\r```\r\r[heading Description]\r
3834 If the actual status code is not a known code, this function returns [link beast.ref.boost__beast__http__field `http::unknown`]. Use [link beast.ref.boost__beast__http__header.result_int `http::header::result_int`] to return the raw status code as a number.
3835 [heading Remarks]\r
3836 This member is only available when `isRequest == false`. 
3837 [endsect]\r[section:overload2 http::message::result (2 of 3 overloads)]\r(Inherited from `http::header`)\r\r
3838 Set the response status-code. \r[heading Synopsis]\r```\rvoid\rresult(\r    status v);\r```\r\r[heading Description]\r
3839 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3840 The code to set.\r  ]]\r]\r
3841 [heading Remarks]\r
3842 This member is only available when `isRequest == false`. 
3843 [endsect]\r[section:overload3 http::message::result (3 of 3 overloads)]\r(Inherited from `http::header`)\r\r
3844 Set the response status-code as an integer. \r[heading Synopsis]\r```\rvoid\rresult(\r    unsigned v);\r```\r\r[heading Description]\r
3845 This sets the status code to the exact number passed in. If the number does not correspond to one of the known status codes, the function [link beast.ref.boost__beast__http__header.result `http::header::result`] will return [link beast.ref.boost__beast__http__field `http::unknown`]. Use [link beast.ref.boost__beast__http__header.result_int `http::header::result_int`] to obtain the original raw status-code.
3846 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3847 The status-code integer to set.\r  ]]\r]\r
3848 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::invalid_argument`][\r    
3849 if `v > 999`. \r  ]]\r]\r
3850 [endsect]\r[endsect]\r\r[section:result_int http::message::result_int]\r(Inherited from `http::header`)\r\r[indexterm2 result_int..http::message]\r
3851 The response status-code expressed as an integer. \r[heading Synopsis]\r```\runsigned\rresult_int() const;\r```\r\r[heading Description]\r
3852 This returns the raw status code as an integer, even when that code is not in the list of known status codes.
3853 [heading Remarks]\r
3854 This member is only available when `isRequest == false`. 
3855 [endsect]\r[section:target http::message::target]\r[indexterm2 target..http::message]\r
3856 Returns the request-target string. ```\rstring_view\r``[link beast.ref.boost__beast__http__message.target.overload1 target]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.target.overload1 more...]]``\r\r```\r
3857 Set the request-target string. ```\rvoid\r``[link beast.ref.boost__beast__http__message.target.overload2 target]``(\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.target.overload2 more...]]``\r```\r[section:overload1 http::message::target (1 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3858 Returns the request-target string. \r[heading Synopsis]\r```\rstring_view\rtarget() const;\r```\r\r[heading Description]\r
3859 The request target string returned is the same string which was received from the network or stored. In particular, it will contain url-encoded characters and should follow the syntax rules for URIs used with HTTP.
3860 [heading Remarks]\r
3861 This function is only available when `isRequest == true`. 
3862 [endsect]\r[section:overload2 http::message::target (2 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3863 Set the request-target string. \r[heading Synopsis]\r```\rvoid\rtarget(\r    string_view s);\r```\r\r[heading Description]\r
3864 It is the caller's responsibility to ensure that the request target string follows the syntax rules for URIs used with HTTP. In particular, reserved or special characters must be url-encoded. The implementation does not perform syntax checking on the passed string.
3865 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3866 A string representing the request-target.\r  ]]\r]\r
3867 [heading Remarks]\r
3868 This function is only available when `isRequest == true`. 
3869 [endsect]\r[endsect]\r\r[section:version http::message::version]\r[indexterm2 version..http::message]\r
3870 Return the HTTP-version. ```\runsigned\r``[link beast.ref.boost__beast__http__message.version.overload1 version]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.version.overload1 more...]]``\r\r```\r
3871 Set the HTTP-version. ```\rvoid\r``[link beast.ref.boost__beast__http__message.version.overload2 version]``(\r    unsigned value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__message.version.overload2 more...]]``\r```\r[section:overload1 http::message::version (1 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3872 Return the HTTP-version. \r[heading Synopsis]\r```\runsigned\rversion() const;\r```\r\r[heading Description]\r
3873 This holds both the major and minor version numbers, using these formulas: \r```\r  unsigned major = version / 10;
3874   unsigned minor = version % 10;
3875 ```\r
3876 Newly constructed headers will use HTTP/1.1 by default. [endsect]\r[section:overload2 http::message::version (2 of 2 overloads)]\r(Inherited from `http::header`)\r\r
3877 Set the HTTP-version. \r[heading Synopsis]\r```\rvoid\rversion(\r    unsigned value);\r```\r\r[heading Description]\r
3878 This holds both the major and minor version numbers, using these formulas: \r```\r  unsigned major = version / 10;
3879   unsigned minor = version % 10;
3880 ```\r
3881 Newly constructed headers will use HTTP/1.1 by default.
3882 [heading Parameters]\r[table [[Name][Description]]\r  [[`value`][\r    
3883 The version number to use \r  ]]\r]\r
3884 [endsect]\r[endsect]\r\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__obsolete_reason http::obsolete_reason]\r[indexterm1 http::obsolete_reason]\r
3885 Returns the obsolete reason-phrase text for a status code. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/status.hpp]\r\r\r\r```\rstring_view\robsolete_reason(\r    status v);\r\r```\r\r[heading Description]\r
3886 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3887 The status code to use. \r  ]]\r]\r
3888 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__operator_lt__lt_ http::operator<<]\r[indexterm1 http::operator<<]\r
3889 Write the text for a field name to an output stream. ```\rstd::ostream&\r``[link beast.ref.boost__beast__http__operator_lt__lt_.overload1 operator<<]``(\r    std::ostream& os,\r    field f);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__operator_lt__lt_.overload1 more...]]``\r\r```\r
3890 Outputs the standard reason phrase of a status code to a stream. ```\rstd::ostream&\r``[link beast.ref.boost__beast__http__operator_lt__lt_.overload2 operator<<]``(\r    std::ostream&,\r    status);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__operator_lt__lt_.overload2 more...]]``\r\r```\r
3891 Write the text for a request method verb to an output stream. ```\rstd::ostream&\r``[link beast.ref.boost__beast__http__operator_lt__lt_.overload3 operator<<]``(\r    std::ostream& os,\r    verb v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__operator_lt__lt_.overload3 more...]]``\r\r```\r
3892 Serialize an HTTP/1 header to a `std::ostream`. ```\rtemplate<\r    bool isRequest,\r    class __Fields__>\rstd::ostream&\r``[link beast.ref.boost__beast__http__operator_lt__lt_.overload4 operator<<]``(\r    std::ostream& os,\r    header< isRequest, Fields > const& msg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__operator_lt__lt_.overload4 more...]]``\r\r```\r
3893 Serialize an HTTP/1 message to a `std::ostream`. ```\rtemplate<\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::ostream&\r``[link beast.ref.boost__beast__http__operator_lt__lt_.overload5 operator<<]``(\r    std::ostream& os,\r    message< isRequest, Body, Fields > const& msg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__operator_lt__lt_.overload5 more...]]``\r```\r[section:overload1 http::operator<< (1 of 5 overloads)]\r
3894 Write the text for a field name to an output stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/field.hpp]\r\r\r\r```\rstd::ostream&\roperator<<(\r    std::ostream& os,\r    field f);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::operator<< (2 of 5 overloads)]\r
3895 Outputs the standard reason phrase of a status code to a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/status.hpp]\r\r\r\r```\rstd::ostream&\roperator<<(\r    std::ostream&,\r    status);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload3 http::operator<< (3 of 5 overloads)]\r
3896 Write the text for a request method verb to an output stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/verb.hpp]\r\r\r\r```\rstd::ostream&\roperator<<(\r    std::ostream& os,\r    verb v);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload4 http::operator<< (4 of 5 overloads)]\r
3897 Serialize an HTTP/1 header to a `std::ostream`. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest,\r    class __Fields__>\rstd::ostream&\roperator<<(\r    std::ostream& os,\r    header< isRequest, Fields > const& msg);\r\r```\r\r[heading Description]\r
3898 The function converts the header to its HTTP/1 serialized representation and stores the result in the output stream.
3899 [heading Parameters]\r[table [[Name][Description]]\r  [[`os`][\r    
3900 The output stream to write to.\r  ]]\r  [[`msg`][\r    
3901 The message fields to write. \r  ]]\r]\r
3902 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload5 http::operator<< (5 of 5 overloads)]\r
3903 Serialize an HTTP/1 message to a `std::ostream`. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::ostream&\roperator<<(\r    std::ostream& os,\r    message< isRequest, Body, Fields > const& msg);\r\r```\r\r[heading Description]\r
3904 The function converts the message to its HTTP/1 serialized representation and stores the result in the output stream.
3905 The implementation will automatically perform chunk encoding if the contents of the message indicate that chunk encoding is required.
3906 [heading Parameters]\r[table [[Name][Description]]\r  [[`os`][\r    
3907 The output stream to write to.\r  ]]\r  [[`msg`][\r    
3908 The message to write. \r  ]]\r]\r
3909 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__opt_token_list http::opt_token_list]\r[indexterm1 http::opt_token_list]\r
3910 A list of tokens in a comma separated HTTP field value. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/rfc7230.hpp]\r\r\r\r```\rusing opt_token_list = detail::basic_parsed_list< detail::opt_token_list_policy >;\r```\r\r[heading Description]\r
3911 This container allows iteration of a list of items in a header field value. The input is a comma separated list of tokens.
3912 If a parsing error is encountered while iterating the string, the behavior of the container will be as if a string containing only characters up to but excluding the first invalid character was used to construct the list.
3913 [heading BNF]
3914 \r```\r  token-list  = *( "," OWS ) token *( OWS "," [ OWS token ] )
3915 ```\r
3916 To use this class, construct with the string to be parsed and then use `begin` and `end`, or range-for to iterate each item:
3917 [heading Example]
3918 \r```\r  for(auto const& token : token_list{"apple, pear, banana"})
3919       std::cout << token << "\n";
3920 ```\r
3921 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__param_list http::param_list]\r
3922 A list of parameters in an HTTP extension field value. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/rfc7230.hpp]\r\r\r\r```\rclass param_list\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__param_list.const_iterator [*const_iterator]]]\r    [\r      A constant iterator to the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__param_list.value_type [*value_type]]]\r    [\r      The type of each element in the list. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__param_list.begin [*begin]]]\r    [\r      Return a const iterator to the beginning of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__param_list.cbegin [*cbegin]]]\r    [\r      Return a const iterator to the beginning of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__param_list.cend [*cend]]]\r    [\r      Return a const iterator to the end of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__param_list.end [*end]]]\r    [\r      Return a const iterator to the end of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__param_list.param_list [*param_list]]]\r    [\r      Default constructor. \r\r      Construct a list. \r    ]\r  ]\r]\r\r[heading Description]\r
3923 This container allows iteration of the parameter list in an HTTP extension. The parameter list is a series of name/value pairs with each pair starting with a semicolon. The value is optional.
3924 If a parsing error is encountered while iterating the string, the behavior of the container will be as if a string containing only characters up to but excluding the first invalid character was used to construct the list.
3925 [heading BNF]
3926 \r```\r  param-list  = *( OWS ";" OWS param )
3927   param       = token OWS [ "=" OWS ( token / quoted-string ) ]
3928 ```\r
3929 To use this class, construct with the string to be parsed and then use [link beast.ref.boost__beast__http__param_list.begin `http::param_list::begin`] and [link beast.ref.boost__beast__http__param_list.end `http::param_list::end`], or range-for to iterate each item:
3930 [heading Example]
3931 \r```\r  for(auto const& param : param_list{";level=9;no_context_takeover;bits=15"})
3932   {
3933       std::cout << ";" << param.first;
3934       if(! param.second.empty())
3935           std::cout << "=" << param.second;
3936       std::cout << "\n";
3937   }
3938 ```\r
3939 [section:begin http::param_list::begin]\r[indexterm2 begin..http::param_list]\r
3940 Return a const iterator to the beginning of the list. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cbegin http::param_list::cbegin]\r[indexterm2 cbegin..http::param_list]\r
3941 Return a const iterator to the beginning of the list. \r[heading Synopsis]\r```\rconst_iterator\rcbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cend http::param_list::cend]\r[indexterm2 cend..http::param_list]\r
3942 Return a const iterator to the end of the list. \r[heading Synopsis]\r```\rconst_iterator\rcend() const;\r```\r\r[heading Description]\r[endsect]\r[section:const_iterator http::param_list::const_iterator]\r[indexterm2 const_iterator..http::param_list]\r
3943 A constant iterator to the list. \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:end http::param_list::end]\r[indexterm2 end..http::param_list]\r
3944 Return a const iterator to the end of the list. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:param_list http::param_list::param_list]\r[indexterm2 param_list..http::param_list]\r
3945 Default constructor. ```\r``[link beast.ref.boost__beast__http__param_list.param_list.overload1 param_list]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__param_list.param_list.overload1 more...]]``\r\r```\r
3946 Construct a list. ```\rexplicit\r``[link beast.ref.boost__beast__http__param_list.param_list.overload2 param_list]``(\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__param_list.param_list.overload2 more...]]``\r```\r[section:overload1 http::param_list::param_list (1 of 2 overloads)]\r
3947 Default constructor. \r[heading Synopsis]\r```\rparam_list();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::param_list::param_list (2 of 2 overloads)]\r
3948 Construct a list. \r[heading Synopsis]\r```\rparam_list(\r    string_view s);\r```\r\r[heading Description]\r
3949 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
3950 A string containing the list contents. The string must remain valid for the lifetime of the container. \r  ]]\r]\r
3951 [endsect]\r[endsect]\r\r[section:value_type http::param_list::value_type]\r[indexterm2 value_type..http::param_list]\r
3952 The type of each element in the list. \r[heading Synopsis]\r\r```\rusing value_type = std::pair< string_view, string_view >;\r```\r\r[heading Description]\r
3953 The first string in the pair is the name of the parameter, and the second string in the pair is its value (which may be empty). [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__parser http::parser]\r
3954 An HTTP/1 parser for producing a message. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/parser.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest,\r    class __Body__,\r    class __Allocator__ = std::allocator<char>>\rclass parser :\r    public http::basic_parser< isRequest >\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_request [*is_request]]]\r    [\r      true if this parser parses requests, false for responses. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.value_type [*value_type]]]\r    [\r      The type of message returned by the parser. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__parser.body_limit [*body_limit]]]\r    [\r      Set the limit on the payload body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.chunked [*chunked]]]\r    [\r      Returns true if the last value for Transfer-Encoding is "chunked". \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.content_length [*content_length]]]\r    [\r      Returns the optional value of Content-Length if known. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.content_length_remaining [*content_length_remaining]]]\r    [\r      Returns the remaining content length if known. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.eager [*eager]]]\r    [\r      Returns true if the eager parse option is set. \r\r      Set the eager parse option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.get [*get]]]\r    [\r      Returns the parsed message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.got_some [*got_some]]]\r    [\r      Returns true if the parser has received at least one byte of input. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.header_limit [*header_limit]]]\r    [\r      Set a limit on the total size of the header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_done [*is_done]]]\r    [\r      Returns true if the message is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_header_done [*is_header_done]]]\r    [\r      Returns true if a the parser has produced the full header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.keep_alive [*keep_alive]]]\r    [\r      Returns true if the message has keep-alive connection semantics. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.need_eof [*need_eof]]]\r    [\r      Returns true if the message semantics require an end of file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.on_chunk_body [*on_chunk_body]]]\r    [\r      Set a callback to be invoked on chunk body data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.on_chunk_header [*on_chunk_header]]]\r    [\r      Set a callback to be invoked on each chunk header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.operator_eq_ [*operator=]]]\r    [\r      Assignment (disallowed) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.parser [*parser]]]\r    [\r      Constructor (disallowed) \r\r      Constructor. \r\r      Construct a parser from another parser, changing the Body type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.put [*put]]]\r    [\r      Write a buffer sequence to the parser. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.put_eof [*put_eof]]]\r    [\r      Inform the parser that the end of stream was reached. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.release [*release]]]\r    [\r      Returns ownership of the parsed message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.skip [*skip]]]\r    [\r      Returns true if the skip parse option is set. \r\r      Set the skip parse option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.upgrade [*upgrade]]]\r    [\r      Returns true if the message is an upgrade message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.parser_dtor_ [*~parser]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
3955 This class uses the basic HTTP/1 wire format parser to convert a series of octets into a [link beast.ref.boost__beast__http__message `http::message`] using the [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`] container to represent the fields.
3956 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
3957 Indicates whether a request or response will be parsed.\r  ]]\r  [[`Body`][\r    
3958 The type used to represent the body. This must meet the requirements of ['Body].\r  ]]\r  [[`Allocator`][\r    
3959 The type of allocator used with the [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`] container.\r  ]]\r]\r
3960 [heading Remarks]\r
3961 A new instance of the parser is required for each message. 
3962 [section:body_limit http::parser::body_limit]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 body_limit..http::parser]\r
3963 Set the limit on the payload body. \r[heading Synopsis]\r```\rvoid\rbody_limit(\r    std::uint64_t v);\r```\r\r[heading Description]\r
3964 This function sets the maximum allowed size of the payload body, before any encodings except chunked have been removed. Depending on the message semantics, one of these cases will apply:
3965
3966 * The Content-Length is specified and exceeds the limit. In this case the result [link beast.ref.boost__beast__http__error `http::body_limit`] is returned immediately after the header is parsed.
3967
3968
3969 * The Content-Length is unspecified and the chunked encoding is not specified as the last encoding. In this case the end of message is determined by the end of file indicator on the associated stream or input source. If a sufficient number of body payload octets are presented to the parser to exceed the configured limit, the parse fails with the result [link beast.ref.boost__beast__http__error `http::body_limit`]
3970
3971
3972 * The Transfer-Encoding specifies the chunked encoding as the last encoding. In this case, when the number of payload body octets produced by removing the chunked encoding exceeds the configured limit, the parse fails with the result [link beast.ref.boost__beast__http__error `http::body_limit`].
3973
3974 Setting the limit after any body octets have been parsed results in undefined behavior.
3975 The default limit is 1MB for requests and 8MB for responses.
3976 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3977 The payload body limit to set \r  ]]\r]\r
3978 [endsect]\r[section:chunked http::parser::chunked]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 chunked..http::parser]\r
3979 Returns `true` if the last value for Transfer-Encoding is "chunked". \r[heading Synopsis]\r```\rbool\rchunked() const;\r```\r\r[heading Description]\r
3980 [heading Remarks]\r
3981 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
3982 [endsect]\r[section:content_length http::parser::content_length]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 content_length..http::parser]\r
3983 Returns the optional value of Content-Length if known. \r[heading Synopsis]\r```\rboost::optional< std::uint64_t >\rcontent_length() const;\r```\r\r[heading Description]\r
3984 [heading Remarks]\r
3985 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
3986 [endsect]\r[section:content_length_remaining http::parser::content_length_remaining]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 content_length_remaining..http::parser]\r
3987 Returns the remaining content length if known. \r[heading Synopsis]\r```\rboost::optional< std::uint64_t >\rcontent_length_remaining() const;\r```\r\r[heading Description]\r
3988 If the message header specifies a Content-Length, the return value will be the number of bytes remaining in the payload body have not yet been parsed.
3989 [heading Remarks]\r
3990 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
3991 [endsect]\r[section:eager http::parser::eager]\r[indexterm2 eager..http::parser]\r
3992 Returns `true` if the eager parse option is set. ```\rbool\r``[link beast.ref.boost__beast__http__parser.eager.overload1 eager]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.eager.overload1 more...]]``\r\r```\r
3993 Set the eager parse option. ```\rvoid\r``[link beast.ref.boost__beast__http__parser.eager.overload2 eager]``(\r    bool v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.eager.overload2 more...]]``\r```\r[section:overload1 http::parser::eager (1 of 2 overloads)]\r(Inherited from `http::basic_parser`)\r\r
3994 Returns `true` if the eager parse option is set. \r[heading Synopsis]\r```\rbool\reager() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::parser::eager (2 of 2 overloads)]\r(Inherited from `http::basic_parser`)\r\r
3995 Set the eager parse option. \r[heading Synopsis]\r```\rvoid\reager(\r    bool v);\r```\r\r[heading Description]\r
3996 Normally the parser returns after successfully parsing a structured element (header, chunk header, or chunk body) even if there are octets remaining in the input. This is necessary when attempting to parse the header first, or when the caller wants to inspect information which may be invalidated by subsequent parsing, such as a chunk extension. The `eager` option controls whether the parser keeps going after parsing structured element if there are octets remaining in the buffer and no error occurs. This option is automatically set or cleared during certain stream operations to improve performance with no change in functionality.
3997 The default setting is `false`.
3998 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
3999 `true` to set the eager parse option or `false` to disable it. \r  ]]\r]\r
4000 [endsect]\r[endsect]\r\r[section:get http::parser::get]\r[indexterm2 get..http::parser]\r
4001 Returns the parsed message. ```\rvalue_type const &\r``[link beast.ref.boost__beast__http__parser.get.overload1 get]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.get.overload1 more...]]``\r\rvalue_type&\r``[link beast.ref.boost__beast__http__parser.get.overload2 get]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.get.overload2 more...]]``\r```\r[section:overload1 http::parser::get (1 of 2 overloads)]\r
4002 Returns the parsed message. \r[heading Synopsis]\r```\rvalue_type const &\rget() const;\r```\r\r[heading Description]\r
4003 Depending on the parser's progress, parts of this object may be incomplete. [endsect]\r[section:overload2 http::parser::get (2 of 2 overloads)]\r
4004 Returns the parsed message. \r[heading Synopsis]\r```\rvalue_type&\rget();\r```\r\r[heading Description]\r
4005 Depending on the parser's progress, parts of this object may be incomplete. [endsect]\r[endsect]\r\r[section:got_some http::parser::got_some]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 got_some..http::parser]\r
4006 Returns `true` if the parser has received at least one byte of input. \r[heading Synopsis]\r```\rbool\rgot_some() const;\r```\r\r[heading Description]\r[endsect]\r[section:header_limit http::parser::header_limit]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 header_limit..http::parser]\r
4007 Set a limit on the total size of the header. \r[heading Synopsis]\r```\rvoid\rheader_limit(\r    std::uint32_t v);\r```\r\r[heading Description]\r
4008 This function sets the maximum allowed size of the header including all field name, value, and delimiter characters and also including the CRLF sequences in the serialized input. If the end of the header is not found within the limit of the header size, the error [link beast.ref.boost__beast__http__error `http::header_limit`] is returned by [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`].
4009 Setting the limit after any header octets have been parsed results in undefined behavior. [endsect]\r[section:is_done http::parser::is_done]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 is_done..http::parser]\r
4010 Returns `true` if the message is complete. \r[heading Synopsis]\r```\rbool\ris_done() const;\r```\r\r[heading Description]\r
4011 The message is complete after the full header is prduced and one of the following is true:
4012
4013 * The skip body option was set.
4014
4015
4016 * The semantics of the message indicate there is no body.
4017
4018
4019 * The semantics of the message indicate a body is expected, and the entire body was parsed. 
4020
4021 [endsect]\r[section:is_header_done http::parser::is_header_done]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 is_header_done..http::parser]\r
4022 Returns `true` if a the parser has produced the full header. \r[heading Synopsis]\r```\rbool\ris_header_done() const;\r```\r\r[heading Description]\r[endsect]\r[section:is_request http::parser::is_request]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 is_request..http::parser]\r
4023 `true` if this parser parses requests, `false` for responses. \r[heading Synopsis]\r\r```\rusing is_request = std::integral_constant< bool, isRequest >;\r```\r\r[heading Description]\r[endsect]\r[section:keep_alive http::parser::keep_alive]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 keep_alive..http::parser]\r
4024 Returns `true` if the message has keep-alive connection semantics. \r[heading Synopsis]\r```\rbool\rkeep_alive() const;\r```\r\r[heading Description]\r
4025 This function always returns `false` if [link beast.ref.boost__beast__http__basic_parser.need_eof `http::basic_parser::need_eof`] would return `false`.
4026 [heading Remarks]\r
4027 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
4028 [endsect]\r[section:need_eof http::parser::need_eof]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 need_eof..http::parser]\r
4029 Returns `true` if the message semantics require an end of file. \r[heading Synopsis]\r```\rbool\rneed_eof() const;\r```\r\r[heading Description]\r
4030 Depending on the contents of the header, the parser may require and end of file notification to know where the end of the body lies. If this function returns `true` it will be necessary to call [link beast.ref.boost__beast__http__basic_parser.put_eof `http::basic_parser::put_eof`] when there will never be additional data from the input. [endsect]\r[section:on_chunk_body http::parser::on_chunk_body]\r[indexterm2 on_chunk_body..http::parser]\r
4031 Set a callback to be invoked on chunk body data. \r[heading Synopsis]\r```\rtemplate<\r    class Callback>\rvoid\ron_chunk_body(\r    Callback& cb);\r```\r\r[heading Description]\r
4032 The provided function object 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.
4033 The 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.
4034 [heading Example]
4035 \r```\r  auto callback =
4036       [](std::uint64_t remain, string_view body, error_code& ec)
4037       {
4038           //...
4039       };
4040   parser.on_chunk_body(callback);
4041 ```\r
4042 [heading Parameters]\r[table [[Name][Description]]\r  [[`cb`][\r    
4043 The function to set, which must be invocable with this equivalent signature: \r```\r  std::size_t
4044   on_chunk_header(
4045       std::uint64_t remain,       // Octets remaining in this chunk, includes `body`
4046       string_view body,           // A buffer holding some or all of the remainder of the chunk body
4047       error_code& ec);            // May be set by the callback to indicate an error
4048 ```\r\r  ]]\r]\r
4049 [endsect]\r[section:on_chunk_header http::parser::on_chunk_header]\r[indexterm2 on_chunk_header..http::parser]\r
4050 Set a callback to be invoked on each chunk header. \r[heading Synopsis]\r```\rtemplate<\r    class Callback>\rvoid\ron_chunk_header(\r    Callback& cb);\r```\r\r[heading Description]\r
4051 The 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.
4052 The extensions are provided in raw, validated form, use [link beast.ref.boost__beast__http__basic_chunk_extensions.parse `http::basic_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.
4053 [heading Example]
4054 \r```\r  auto callback =
4055       [](std::uint64_t size, string_view extensions, error_code& ec)
4056       {
4057           //...
4058       };
4059   parser.on_chunk_header(callback);
4060 ```\r
4061 [heading Parameters]\r[table [[Name][Description]]\r  [[`cb`][\r    
4062 The function to set, which must be invocable with this equivalent signature: \r```\r  void
4063   on_chunk_header(
4064       std::uint64_t size,         // Size of the chunk, zero for the last chunk
4065       string_view extensions,     // The chunk-extensions in raw form
4066       error_code& ec);            // May be set by the callback to indicate an error
4067 ```\r\r  ]]\r]\r
4068 [endsect]\r[section:operator_eq_ http::parser::operator=]\r[indexterm2 operator=..http::parser]\r
4069 Assignment (disallowed) \r[heading Synopsis]\r```\rparser&\roperator=(\r    parser const&);\r```\r\r[heading Description]\r[endsect]\r[section:parser http::parser::parser]\r[indexterm2 parser..http::parser]\r
4070 Constructor (disallowed) ```\r``[link beast.ref.boost__beast__http__parser.parser.overload1 parser]``(\r    parser const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.parser.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__parser.parser.overload2 parser]``(\r    parser&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.parser.overload2 more...]]``\r\r```\r
4071 Constructor. ```\r``[link beast.ref.boost__beast__http__parser.parser.overload3 parser]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.parser.overload3 more...]]``\r\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__http__parser.parser.overload4 parser]``(\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.parser.overload4 more...]]``\r\r```\r
4072 Construct a parser from another parser, changing the Body type. ```\rtemplate<\r    class OtherBody,\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__http__parser.parser.overload5 parser]``(\r    parser< isRequest, OtherBody, Allocator >&& parser,\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.parser.overload5 more...]]``\r```\r[section:overload1 http::parser::parser (1 of 5 overloads)]\r
4073 Constructor (disallowed) \r[heading Synopsis]\r```\rparser(\r    parser const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::parser::parser (2 of 5 overloads)]\r
4074 Constructor (disallowed) \r[heading Synopsis]\r```\rparser(\r    parser&& other);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 http::parser::parser (3 of 5 overloads)]\r
4075 Constructor. \r[heading Synopsis]\r```\rparser();\r```\r\r[heading Description]\r[endsect]\r[section:overload4 http::parser::parser (4 of 5 overloads)]\r
4076 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rparser(\r    Args&&... args);\r```\r\r[heading Description]\r
4077 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
4078 Optional arguments forwarded to the [link beast.ref.boost__beast__http__message `http::message`] constructor.\r  ]]\r]\r
4079 [heading Remarks]\r
4080 This function participates in overload resolution only if the first argument is not a [link beast.ref.boost__beast__http__parser `http::parser`]. 
4081 [endsect]\r[section:overload5 http::parser::parser (5 of 5 overloads)]\r
4082 Construct a parser from another parser, changing the Body type. \r[heading Synopsis]\r```\rtemplate<\r    class OtherBody,\r    class... Args>\rparser(\r    parser< isRequest, OtherBody, Allocator >&& parser,\r    Args&&... args);\r```\r\r[heading Description]\r
4083 This constructs a new parser by move constructing the header from another parser with a different body type. The constructed-from parser must not have any parsed body octets or initialized ['BodyReader], otherwise an exception is generated.
4084 [heading Example]
4085 \r```\r  // Deferred body type commitment
4086   request_parser<empty_body> req0;
4087   ...
4088   request_parser<string_body> req{std::move(req0)};
4089 ```\r
4090 If an exception is thrown, the state of the constructed-from parser is undefined.
4091 [heading Parameters]\r[table [[Name][Description]]\r  [[`parser`][\r    
4092 The other parser to construct from. After this call returns, the constructed-from parser may only be destroyed.\r  ]]\r  [[`args`][\r    
4093 Optional arguments forwarded to the message constructor.\r  ]]\r]\r
4094 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::invalid_argument`][\r    
4095 Thrown when the constructed-from parser has already initialized a body reader.\r  ]]\r]\r
4096 [heading Remarks]\r
4097 This function participates in overload resolution only if the other parser uses a different body type. 
4098 [endsect]\r[endsect]\r\r[section:put http::parser::put]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 put..http::parser]\r
4099 Write a buffer sequence to the parser. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rput(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
4100 This function attempts to incrementally parse the HTTP message data stored in the caller provided buffers. Upon success, a positive return value indicates that the parser made forward progress, consuming that number of bytes.
4101 In some cases there may be an insufficient number of octets in the input buffer in order to make forward progress. This is indicated by the code [link beast.ref.boost__beast__http__error `http::need_more`]. When this happens, the caller should place additional bytes into the buffer sequence and call [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`] again.
4102 The error code [link beast.ref.boost__beast__http__error `http::need_more`] is special. When this error is returned, a subsequent call to [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`] may succeed if the buffers have been updated. Otherwise, upon error the parser may not be restarted.
4103 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
4104 An object meeting the requirements of ['ConstBufferSequence] that represents the next chunk of message data. If the length of this buffer sequence is one, the implementation will not allocate additional memory. The class [link beast.ref.boost__beast__basic_flat_buffer `basic_flat_buffer`] is provided as one way to meet this requirement\r  ]]\r  [[`ec`][\r    
4105 Set to the error, if any occurred.\r  ]]\r]\r
4106 [heading Return Value]
4107 The number of octets consumed in the buffer sequence. The caller should remove these octets even if the error is set. 
4108 [endsect]\r[section:put_eof http::parser::put_eof]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 put_eof..http::parser]\r
4109 Inform the parser that the end of stream was reached. \r[heading Synopsis]\r```\rvoid\rput_eof(\r    error_code& ec);\r```\r\r[heading Description]\r
4110 In certain cases, HTTP needs to know where the end of the stream is. For example, sometimes servers send responses without Content-Length and expect the client to consume input (for the body) until EOF. Callbacks and errors will still be processed as usual.
4111 This is typically called when a read from the underlying stream object sets the error code to `net::error::eof`.
4112 [heading Remarks]\r
4113 Only valid after parsing a complete header.
4114 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
4115 Set to the error, if any occurred. \r  ]]\r]\r
4116 [endsect]\r[section:release http::parser::release]\r[indexterm2 release..http::parser]\r
4117 Returns ownership of the parsed message. \r[heading Synopsis]\r```\rvalue_type\rrelease();\r```\r\r[heading Description]\r
4118 Ownership is transferred to the caller. Depending on the parser's progress, parts of this object may be incomplete.
4119 [heading Requires]
4120
4121 [link beast.ref.boost__beast__http__parser.value_type `http::parser::value_type`] is [*MoveConstructible] [endsect]\r[section:skip http::parser::skip]\r[indexterm2 skip..http::parser]\r
4122 Returns `true` if the skip parse option is set. ```\rbool\r``[link beast.ref.boost__beast__http__parser.skip.overload1 skip]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.skip.overload1 more...]]``\r\r```\r
4123 Set the skip parse option. ```\rvoid\r``[link beast.ref.boost__beast__http__parser.skip.overload2 skip]``(\r    bool v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__parser.skip.overload2 more...]]``\r```\r[section:overload1 http::parser::skip (1 of 2 overloads)]\r(Inherited from `http::basic_parser`)\r\r
4124 Returns `true` if the skip parse option is set. \r[heading Synopsis]\r```\rbool\rskip() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::parser::skip (2 of 2 overloads)]\r(Inherited from `http::basic_parser`)\r\r
4125 Set the skip parse option. \r[heading Synopsis]\r```\rvoid\rskip(\r    bool v);\r```\r\r[heading Description]\r
4126 This option controls whether or not the parser expects to see an HTTP body, regardless of the presence or absence of certain fields such as Content-Length or a chunked Transfer-Encoding. Depending on the request, some responses do not carry a body. For example, a 200 response to a CONNECT request from a tunneling proxy, or a response to a HEAD request. In these cases, callers may use this function inform the parser that no body is expected. The parser will consider the message complete after the header has been received.
4127 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
4128 `true` to set the skip body option or `false` to disable it.\r  ]]\r]\r
4129 [heading Remarks]\r
4130 This function must called before any bytes are processed. 
4131 [endsect]\r[endsect]\r\r[section:upgrade http::parser::upgrade]\r(Inherited from `http::basic_parser`)\r\r[indexterm2 upgrade..http::parser]\r
4132 Returns `true` if the message is an upgrade message. \r[heading Synopsis]\r```\rbool\rupgrade() const;\r```\r\r[heading Description]\r
4133 [heading Remarks]\r
4134 The return value is undefined unless [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] would return `true`. 
4135 [endsect]\r[section:value_type http::parser::value_type]\r[indexterm2 value_type..http::parser]\r
4136 The type of message returned by the parser. \r[heading Synopsis]\r\r```\rusing value_type = message< isRequest, Body, basic_fields< Allocator > >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__message.body_type [*body_type]]]\r    [\r      The type providing the body traits. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.fields_type [*fields_type]]]\r    [\r      The type representing the fields. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.header_type [*header_type]]]\r    [\r      The base class used to hold the header portion of the message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.is_request [*is_request]]]\r    [\r      Indicates if the header is a request or response. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__message.base [*base]]]\r    [\r      Returns the header portion of the message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.body [*body]]]\r    [\r      Returns the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.chunked [*chunked]]]\r    [\r      Returns true if the chunked Transfer-Encoding is specified. \r\r      Set or clear the chunked Transfer-Encoding. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.content_length [*content_length]]]\r    [\r      Set or clear the Content-Length field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.has_content_length [*has_content_length]]]\r    [\r      Returns true if the Content-Length field is present. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.keep_alive [*keep_alive]]]\r    [\r      Returns true if the message semantics indicate keep-alive. \r\r      Set the keep-alive message semantic option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.message [*message]]]\r    [\r      Constructor. \r\r      Construct a message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.method [*method]]]\r    [\r      Return the request-method verb. \r\r      Set the request-method. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.method_string [*method_string]]]\r    [\r      Return the request-method as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.need_eof [*need_eof]]]\r    [\r      Returns true if the message semantics require an end of file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.payload_size [*payload_size]]]\r    [\r      Returns the payload size of the body in octets if possible. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.prepare_payload [*prepare_payload]]]\r    [\r      Prepare the message payload fields for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.reason [*reason]]]\r    [\r      Return the response reason-phrase. \r\r      Set the response reason-phrase (deprecated) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.result [*result]]]\r    [\r      The response status-code result. \r\r      Set the response status-code. \r\r      Set the response status-code as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.result_int [*result_int]]]\r    [\r      The response status-code expressed as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.target [*target]]]\r    [\r      Returns the request-target string. \r\r      Set the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.version [*version]]]\r    [\r      Return the HTTP-version. \r\r      Set the HTTP-version. \r    ]\r  ]\r]\r
4137 This container is derived from the `Fields` template type. To understand all of the members of this class it is necessary to view the declaration for the `Fields` type. When using the default fields container, those declarations are in [link beast.ref.boost__beast__http__fields `http::fields`].
4138 A message can be a request or response, depending on the `isRequest` template argument value. Requests and responses have different types; functions may be overloaded based on the type if desired.
4139 The `Body` template argument type determines the model used to read or write the content body of the message.
4140 Newly constructed messages objects have version set to HTTP/1.1. Newly constructed response objects also have result code set to [link beast.ref.boost__beast__http__status `http::ok`].
4141 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
4142 `true` if this represents a request, or `false` if this represents a response. Some class data members are conditionally present depending on this value.\r  ]]\r  [[`Body`][\r    
4143 A type meeting the requirements of Body.\r  ]]\r  [[`Fields`][\r    
4144 The type of container used to hold the field value pairs. \r  ]]\r]\r
4145 \r[heading Description]\r[endsect]\r[section:parser_dtor_ http::parser::~parser]\r[indexterm2 ~parser..http::parser]\r
4146 Destructor. \r[heading Synopsis]\r```\r~parser();\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__read http::read]\r[indexterm1 http::read]\r
4147 Read a complete message from a stream using a parser. ```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\r``[link beast.ref.boost__beast__http__read.overload1 read]``(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__read.overload1 more...]]``\r\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\r``[link beast.ref.boost__beast__http__read.overload2 read]``(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__read.overload2 more...]]``\r\r```\r
4148 Read a complete message from a stream. ```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __Body__,\r    class __Allocator__>\rstd::size_t\r``[link beast.ref.boost__beast__http__read.overload3 read]``(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    message< isRequest, Body, basic_fields< Allocator >>& msg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__read.overload3 more...]]``\r\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __Body__,\r    class __Allocator__>\rstd::size_t\r``[link beast.ref.boost__beast__http__read.overload4 read]``(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    message< isRequest, Body, basic_fields< Allocator >>& msg,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__read.overload4 more...]]``\r```\r[section:overload1 http::read (1 of 4 overloads)]\r
4149 Read a complete message from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\rread(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser);\r\r```\r\r[heading Description]\r
4150 This function is used to read a complete message from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The call will block until one of the following conditions is true:
4151
4152 * [link beast.ref.boost__beast__http__basic_parser.is_done `http::basic_parser::is_done`] returns `true`
4153
4154
4155 * An error occurs.
4156
4157 This operation is implemented in terms of one or more calls to the stream's `read_some` function. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
4158 If the end of file error is received while reading from the stream, then the error returned from this function will be:
4159
4160 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
4161
4162
4163 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
4164
4165
4166 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
4167
4168 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4169 The stream from which the data is to be read. The type must meet the ['SyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
4170 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements.\r  ]]\r  [[`parser`][\r    
4171 The parser to use.\r  ]]\r]\r
4172 [heading Return Value]
4173 The number of bytes transferred from the stream.
4174 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4175 Thrown on failure.\r  ]]\r]\r
4176 [heading Remarks]\r
4177 The function returns the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `true` on the parser passed in. 
4178 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::read (2 of 4 overloads)]\r
4179 Read a complete message from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\rread(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4180 This function is used to read a complete message from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The call will block until one of the following conditions is true:
4181
4182 * [link beast.ref.boost__beast__http__basic_parser.is_done `http::basic_parser::is_done`] returns `true`
4183
4184
4185 * An error occurs.
4186
4187 This operation is implemented in terms of one or more calls to the stream's `read_some` function. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
4188 If the end of file error is received while reading from the stream, then the error returned from this function will be:
4189
4190 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
4191
4192
4193 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
4194
4195
4196 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
4197
4198 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4199 The stream from which the data is to be read. The type must meet the ['SyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
4200 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements.\r  ]]\r  [[`parser`][\r    
4201 The parser to use.\r  ]]\r  [[`ec`][\r    
4202 Set to the error, if any occurred.\r  ]]\r]\r
4203 [heading Return Value]
4204 The number of bytes transferred from the stream.
4205 [heading Remarks]\r
4206 The function returns the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `true` on the parser passed in. 
4207 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload3 http::read (3 of 4 overloads)]\r
4208 Read a complete message from a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __Body__,\r    class __Allocator__>\rstd::size_t\rread(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    message< isRequest, Body, basic_fields< Allocator >>& msg);\r\r```\r\r[heading Description]\r
4209 This function is used to read a complete message from a stream into an instance of [link beast.ref.boost__beast__http__message `http::message`]. The call will block until one of the following conditions is true:
4210
4211 * The entire message is read in.
4212
4213
4214 * An error occurs.
4215
4216 This operation is implemented in terms of one or more calls to the stream's `read_some` function. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
4217 If the end of file error is received while reading from the stream, then the error returned from this function will be:
4218
4219 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
4220
4221
4222 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
4223
4224
4225 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
4226
4227 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4228 The stream from which the data is to be read. The type must meet the ['SyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
4229 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements.\r  ]]\r  [[`msg`][\r    
4230 The container in which to store the message contents. This message container should not have previous contents, otherwise the behavior is undefined. The type must be meet the ['MoveAssignable] and ['MoveConstructible] requirements.\r  ]]\r]\r
4231 [heading Return Value]
4232 The number of bytes transferred from the stream.
4233 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4234 Thrown on failure.\r  ]]\r]\r
4235 [heading Remarks]\r
4236 The function returns the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `true` on the parser passed in. 
4237 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload4 http::read (4 of 4 overloads)]\r
4238 Read a complete message from a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest,\r    class __Body__,\r    class __Allocator__>\rstd::size_t\rread(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    message< isRequest, Body, basic_fields< Allocator >>& msg,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4239 This function is used to read a complete message from a stream into an instance of [link beast.ref.boost__beast__http__message `http::message`]. The call will block until one of the following conditions is true:
4240
4241 * The entire message is read in.
4242
4243
4244 * An error occurs.
4245
4246 This operation is implemented in terms of one or more calls to the stream's `read_some` function. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
4247 If the end of file error is received while reading from the stream, then the error returned from this function will be:
4248
4249 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
4250
4251
4252 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
4253
4254
4255 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
4256
4257 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4258 The stream from which the data is to be read. The type must meet the ['SyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
4259 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements.\r  ]]\r  [[`msg`][\r    
4260 The container in which to store the message contents. This message container should not have previous contents, otherwise the behavior is undefined. The type must be meet the ['MoveAssignable] and ['MoveConstructible] requirements.\r  ]]\r  [[`ec`][\r    
4261 Set to the error, if any occurred.\r  ]]\r]\r
4262 [heading Return Value]
4263 The number of bytes transferred from the stream.
4264 [heading Remarks]\r
4265 The function returns the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `true` on the parser passed in. 
4266 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__read_header http::read_header]\r[indexterm1 http::read_header]\r
4267 Read a complete message header from a stream using a parser. ```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\r``[link beast.ref.boost__beast__http__read_header.overload1 read_header]``(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__read_header.overload1 more...]]``\r\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\r``[link beast.ref.boost__beast__http__read_header.overload2 read_header]``(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__read_header.overload2 more...]]``\r```\r[section:overload1 http::read_header (1 of 2 overloads)]\r
4268 Read a complete message header from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\rread_header(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser);\r\r```\r\r[heading Description]\r
4269 This function is used to read a complete message header from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The call will block until one of the following conditions is true:
4270
4271 * [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] returns `true`
4272
4273
4274 * An error occurs.
4275
4276 This operation is implemented in terms of one or more calls to the stream's `read_some` function. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
4277 If the end of file error is received while reading from the stream, then the error returned from this function will be:
4278
4279 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
4280
4281
4282 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
4283
4284
4285 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
4286
4287 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4288 The stream from which the data is to be read. The type must meet the ['SyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
4289 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements.\r  ]]\r  [[`parser`][\r    
4290 The parser to use.\r  ]]\r]\r
4291 [heading Return Value]
4292 The number of bytes transferred from the stream.
4293 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4294 Thrown on failure.\r  ]]\r]\r
4295 [heading Remarks]\r
4296 The function returns the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `false` on the parser passed in. 
4297 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::read_header (2 of 2 overloads)]\r
4298 Read a complete message header from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\rread_header(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4299 This function is used to read a complete message header from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The call will block until one of the following conditions is true:
4300
4301 * [link beast.ref.boost__beast__http__basic_parser.is_header_done `http::basic_parser::is_header_done`] returns `true`
4302
4303
4304 * An error occurs.
4305
4306 This operation is implemented in terms of one or more calls to the stream's `read_some` function. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
4307 If the end of file error is received while reading from the stream, then the error returned from this function will be:
4308
4309 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
4310
4311
4312 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
4313
4314
4315 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
4316
4317 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4318 The stream from which the data is to be read. The type must meet the ['SyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
4319 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements.\r  ]]\r  [[`parser`][\r    
4320 The parser to use.\r  ]]\r  [[`ec`][\r    
4321 Set to the error, if any occurred.\r  ]]\r]\r
4322 [heading Return Value]
4323 The number of bytes transferred from the stream.
4324 [heading Remarks]\r
4325 The function returns the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. The implementation will call [link beast.ref.boost__beast__http__basic_parser.eager `http::basic_parser::eager`] with the value `false` on the parser passed in. 
4326 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__read_some http::read_some]\r[indexterm1 http::read_some]\r
4327 Read part of a message from a stream using a parser. ```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\r``[link beast.ref.boost__beast__http__read_some.overload1 read_some]``(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__read_some.overload1 more...]]``\r\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\r``[link beast.ref.boost__beast__http__read_some.overload2 read_some]``(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__read_some.overload2 more...]]``\r```\r[section:overload1 http::read_some (1 of 2 overloads)]\r
4328 Read part of a message from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\rread_some(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser);\r\r```\r\r[heading Description]\r
4329 This function is used to read part of a message from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The call will block until one of the following conditions is true:
4330
4331 * A call to [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`] with a non-empty buffer sequence is successful.
4332
4333
4334 * An error occurs.
4335
4336 This operation is implemented in terms of one or more calls to the stream's `read_some` function. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
4337 If the end of file error is received while reading from the stream, then the error returned from this function will be:
4338
4339 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
4340
4341
4342 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
4343
4344
4345 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
4346
4347 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4348 The stream from which the data is to be read. The type must meet the ['SyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
4349 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements.\r  ]]\r  [[`parser`][\r    
4350 The parser to use.\r  ]]\r]\r
4351 [heading Return Value]
4352 The number of bytes transferred from the stream.
4353 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4354 Thrown on failure.\r  ]]\r]\r
4355 [heading Remarks]\r
4356 The function returns the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. 
4357 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::read_some (2 of 2 overloads)]\r
4358 Read part of a message from a stream using a parser. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/read.hpp]\r\r\r\r```\rtemplate<\r    class __SyncReadStream__,\r    class __DynamicBuffer__,\r    bool isRequest>\rstd::size_t\rread_some(\r    SyncReadStream& stream,\r    DynamicBuffer& buffer,\r    basic_parser< isRequest >& parser,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4359 This function is used to read part of a message from a stream into an instance of [link beast.ref.boost__beast__http__basic_parser `http::basic_parser`]. The call will block until one of the following conditions is true:
4360
4361 * A call to [link beast.ref.boost__beast__http__basic_parser.put `http::basic_parser::put`] with a non-empty buffer sequence is successful.
4362
4363
4364 * An error occurs.
4365
4366 This operation is implemented in terms of one or more calls to the stream's `read_some` function. The implementation may read additional bytes from the stream that lie past the end of the message being read. These additional bytes are stored in the dynamic buffer, which must be preserved for subsequent reads.
4367 If the end of file error is received while reading from the stream, then the error returned from this function will be:
4368
4369 * [link beast.ref.boost__beast__http__error `http::end_of_stream`] if no bytes were parsed, or
4370
4371
4372 * [link beast.ref.boost__beast__http__error `http::partial_message`] if any bytes were parsed but the message was incomplete, otherwise:
4373
4374
4375 * A successful result. The next attempt to read will return [link beast.ref.boost__beast__http__error `http::end_of_stream`]
4376
4377 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4378 The stream from which the data is to be read. The type must support the ['SyncReadStream] requirements.\r  ]]\r  [[`buffer`][\r    
4379 Storage for additional bytes read by the implementation from the stream. This is both an input and an output parameter; on entry, the parser will be presented with any remaining data in the dynamic buffer's readable bytes sequence first. The type must meet the ['DynamicBuffer] requirements.\r  ]]\r  [[`parser`][\r    
4380 The parser to use.\r  ]]\r  [[`ec`][\r    
4381 Set to the error, if any occurred.\r  ]]\r]\r
4382 [heading Return Value]
4383 The number of bytes transferred from the stream.
4384 [heading Remarks]\r
4385 The function returns the total number of bytes transferred from the stream. This may be zero for the case where there is sufficient pre-existing message data in the dynamic buffer. 
4386 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__request http::request]\r[indexterm1 http::request]\r
4387 A typical HTTP request. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/message.hpp]\r\r\r\r```\rtemplate<\r    class __Body__,\r    class __Fields__ = fields>\rusing request = message< true, Body, Fields >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__message.body_type [*body_type]]]\r    [\r      The type providing the body traits. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.fields_type [*fields_type]]]\r    [\r      The type representing the fields. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.header_type [*header_type]]]\r    [\r      The base class used to hold the header portion of the message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.is_request [*is_request]]]\r    [\r      Indicates if the header is a request or response. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__message.base [*base]]]\r    [\r      Returns the header portion of the message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.body [*body]]]\r    [\r      Returns the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.chunked [*chunked]]]\r    [\r      Returns true if the chunked Transfer-Encoding is specified. \r\r      Set or clear the chunked Transfer-Encoding. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.content_length [*content_length]]]\r    [\r      Set or clear the Content-Length field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.has_content_length [*has_content_length]]]\r    [\r      Returns true if the Content-Length field is present. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.keep_alive [*keep_alive]]]\r    [\r      Returns true if the message semantics indicate keep-alive. \r\r      Set the keep-alive message semantic option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.message [*message]]]\r    [\r      Constructor. \r\r      Construct a message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.method [*method]]]\r    [\r      Return the request-method verb. \r\r      Set the request-method. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.method_string [*method_string]]]\r    [\r      Return the request-method as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.need_eof [*need_eof]]]\r    [\r      Returns true if the message semantics require an end of file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.payload_size [*payload_size]]]\r    [\r      Returns the payload size of the body in octets if possible. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.prepare_payload [*prepare_payload]]]\r    [\r      Prepare the message payload fields for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.reason [*reason]]]\r    [\r      Return the response reason-phrase. \r\r      Set the response reason-phrase (deprecated) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.result [*result]]]\r    [\r      The response status-code result. \r\r      Set the response status-code. \r\r      Set the response status-code as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.result_int [*result_int]]]\r    [\r      The response status-code expressed as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.target [*target]]]\r    [\r      Returns the request-target string. \r\r      Set the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.version [*version]]]\r    [\r      Return the HTTP-version. \r\r      Set the HTTP-version. \r    ]\r  ]\r]\r
4388 This container is derived from the `Fields` template type. To understand all of the members of this class it is necessary to view the declaration for the `Fields` type. When using the default fields container, those declarations are in [link beast.ref.boost__beast__http__fields `http::fields`].
4389 A message can be a request or response, depending on the `isRequest` template argument value. Requests and responses have different types; functions may be overloaded based on the type if desired.
4390 The `Body` template argument type determines the model used to read or write the content body of the message.
4391 Newly constructed messages objects have version set to HTTP/1.1. Newly constructed response objects also have result code set to [link beast.ref.boost__beast__http__status `http::ok`].
4392 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
4393 `true` if this represents a request, or `false` if this represents a response. Some class data members are conditionally present depending on this value.\r  ]]\r  [[`Body`][\r    
4394 A type meeting the requirements of Body.\r  ]]\r  [[`Fields`][\r    
4395 The type of container used to hold the field value pairs. \r  ]]\r]\r
4396 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__request_header http::request_header]\r[indexterm1 http::request_header]\r
4397 A typical HTTP request header. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/message.hpp]\r\r\r\r```\rtemplate<\r    class __Fields__ = fields>\rusing request_header = header< true, Fields >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__header.fields_type [*fields_type]]]\r    [\r      The type representing the fields. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.is_request [*is_request]]]\r    [\r      Indicates if the header is a request or response. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__header.header [*header]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.method [*method]]]\r    [\r      Return the request-method verb. \r\r      Set the request-method. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.method_string [*method_string]]]\r    [\r      Return the request-method as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.reason [*reason]]]\r    [\r      Return the response reason-phrase. \r\r      Set the response reason-phrase (deprecated) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.result [*result]]]\r    [\r      The response status-code result. \r\r      Set the response status-code. \r\r      Set the response status-code as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.result_int [*result_int]]]\r    [\r      The response status-code expressed as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.target [*target]]]\r    [\r      Returns the request-target string. \r\r      Set the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.version [*version]]]\r    [\r      Return the HTTP-version. \r\r      Set the HTTP-version. \r    ]\r  ]\r]\r
4398 This container is derived from the `Fields` template type. To understand all of the members of this class it is necessary to view the declaration for the `Fields` type. When using the default fields container, those declarations are in [link beast.ref.boost__beast__http__fields `http::fields`].
4399 Newly constructed header objects have version set to HTTP/1.1. Newly constructed response objects also have result code set to [link beast.ref.boost__beast__http__status `http::ok`].
4400 A `header` includes the start-line and header-fields. \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__request_parser http::request_parser]\r[indexterm1 http::request_parser]\r
4401 An HTTP/1 parser for producing a request message. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/parser.hpp]\r\r\r\r```\rtemplate<\r    class __Body__,\r    class __Allocator__ = std::allocator<char>>\rusing request_parser = parser< true, Body, Allocator >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_request [*is_request]]]\r    [\r      true if this parser parses requests, false for responses. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.value_type [*value_type]]]\r    [\r      The type of message returned by the parser. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__parser.body_limit [*body_limit]]]\r    [\r      Set the limit on the payload body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.chunked [*chunked]]]\r    [\r      Returns true if the last value for Transfer-Encoding is "chunked". \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.content_length [*content_length]]]\r    [\r      Returns the optional value of Content-Length if known. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.content_length_remaining [*content_length_remaining]]]\r    [\r      Returns the remaining content length if known. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.eager [*eager]]]\r    [\r      Returns true if the eager parse option is set. \r\r      Set the eager parse option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.get [*get]]]\r    [\r      Returns the parsed message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.got_some [*got_some]]]\r    [\r      Returns true if the parser has received at least one byte of input. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.header_limit [*header_limit]]]\r    [\r      Set a limit on the total size of the header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_done [*is_done]]]\r    [\r      Returns true if the message is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_header_done [*is_header_done]]]\r    [\r      Returns true if a the parser has produced the full header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.keep_alive [*keep_alive]]]\r    [\r      Returns true if the message has keep-alive connection semantics. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.need_eof [*need_eof]]]\r    [\r      Returns true if the message semantics require an end of file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.on_chunk_body [*on_chunk_body]]]\r    [\r      Set a callback to be invoked on chunk body data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.on_chunk_header [*on_chunk_header]]]\r    [\r      Set a callback to be invoked on each chunk header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.operator_eq_ [*operator=]]]\r    [\r      Assignment (disallowed) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.parser [*parser]]]\r    [\r      Constructor (disallowed) \r\r      Constructor. \r\r      Construct a parser from another parser, changing the Body type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.put [*put]]]\r    [\r      Write a buffer sequence to the parser. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.put_eof [*put_eof]]]\r    [\r      Inform the parser that the end of stream was reached. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.release [*release]]]\r    [\r      Returns ownership of the parsed message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.skip [*skip]]]\r    [\r      Returns true if the skip parse option is set. \r\r      Set the skip parse option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.upgrade [*upgrade]]]\r    [\r      Returns true if the message is an upgrade message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.parser_dtor_ [*~parser]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r
4402 This class uses the basic HTTP/1 wire format parser to convert a series of octets into a [link beast.ref.boost__beast__http__message `http::message`] using the [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`] container to represent the fields.
4403 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
4404 Indicates whether a request or response will be parsed.\r  ]]\r  [[`Body`][\r    
4405 The type used to represent the body. This must meet the requirements of ['Body].\r  ]]\r  [[`Allocator`][\r    
4406 The type of allocator used with the [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`] container.\r  ]]\r]\r
4407 [heading Remarks]\r
4408 A new instance of the parser is required for each message. 
4409 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__request_serializer http::request_serializer]\r[indexterm1 http::request_serializer]\r
4410 A serializer for HTTP/1 requests. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/serializer.hpp]\r\r\r\r```\rtemplate<\r    class __Body__,\r    class __Fields__ = fields>\rusing request_serializer = serializer< true, Body, Fields >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__serializer.value_type [*value_type]]]\r    [\r      The type of message this serializer uses. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__serializer.consume [*consume]]]\r    [\r      Consume buffer octets in the serialization. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.get [*get]]]\r    [\r      Returns the message being serialized. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.is_done [*is_done]]]\r    [\r      Return true if serialization is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.is_header_done [*is_header_done]]]\r    [\r      Return true if serialization of the header is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.limit [*limit]]]\r    [\r      Returns the serialized buffer size limit. \r\r      Set the serialized buffer size limit. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.next [*next]]]\r    [\r      Returns the next set of buffers in the serialization. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.serializer [*serializer]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.split [*split]]]\r    [\r      Returns true if we will pause after writing the complete header. \r\r      Set whether the header and body are written separately. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.writer_impl [*writer_impl]]]\r    [\r      Provides low-level access to the associated BodyWriter \r    ]\r  ]\r]\r
4411 An object of this type is used to serialize a complete HTTP message into a sequence of octets. To use this class, construct an instance with the message to be serialized. The implementation will automatically perform chunk encoding if the contents of the message indicate that chunk encoding is required.
4412 Chunked output produced by the serializer never contains chunk extensions or trailers, and the location of chunk boundaries is not specified. If callers require chunk extensions, trailers, or control over the exact contents of each chunk they should use the serializer to write just the message header, and then assume control over serializing the chunked payload by using the chunk buffer sequence types [link beast.ref.boost__beast__http__chunk_body `http::chunk_body`], [link beast.ref.boost__beast__http__chunk_crlf `http::chunk_crlf`], [link beast.ref.boost__beast__http__chunk_header `http::chunk_header`], and [link beast.ref.boost__beast__http__chunk_last `http::chunk_last`].
4413 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
4414 `true` if the message is a request.\r  ]]\r  [[`Body`][\r    
4415 The body type of the message.\r  ]]\r  [[`Fields`][\r    
4416 The type of fields in the message. \r  ]]\r]\r
4417 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__response http::response]\r[indexterm1 http::response]\r
4418 A typical HTTP response. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/message.hpp]\r\r\r\r```\rtemplate<\r    class __Body__,\r    class __Fields__ = fields>\rusing response = message< false, Body, Fields >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__message.body_type [*body_type]]]\r    [\r      The type providing the body traits. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.fields_type [*fields_type]]]\r    [\r      The type representing the fields. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.header_type [*header_type]]]\r    [\r      The base class used to hold the header portion of the message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.is_request [*is_request]]]\r    [\r      Indicates if the header is a request or response. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__message.base [*base]]]\r    [\r      Returns the header portion of the message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.body [*body]]]\r    [\r      Returns the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.chunked [*chunked]]]\r    [\r      Returns true if the chunked Transfer-Encoding is specified. \r\r      Set or clear the chunked Transfer-Encoding. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.content_length [*content_length]]]\r    [\r      Set or clear the Content-Length field. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.has_content_length [*has_content_length]]]\r    [\r      Returns true if the Content-Length field is present. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.keep_alive [*keep_alive]]]\r    [\r      Returns true if the message semantics indicate keep-alive. \r\r      Set the keep-alive message semantic option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.message [*message]]]\r    [\r      Constructor. \r\r      Construct a message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.method [*method]]]\r    [\r      Return the request-method verb. \r\r      Set the request-method. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.method_string [*method_string]]]\r    [\r      Return the request-method as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.need_eof [*need_eof]]]\r    [\r      Returns true if the message semantics require an end of file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.payload_size [*payload_size]]]\r    [\r      Returns the payload size of the body in octets if possible. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.prepare_payload [*prepare_payload]]]\r    [\r      Prepare the message payload fields for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.reason [*reason]]]\r    [\r      Return the response reason-phrase. \r\r      Set the response reason-phrase (deprecated) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.result [*result]]]\r    [\r      The response status-code result. \r\r      Set the response status-code. \r\r      Set the response status-code as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.result_int [*result_int]]]\r    [\r      The response status-code expressed as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.target [*target]]]\r    [\r      Returns the request-target string. \r\r      Set the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__message.version [*version]]]\r    [\r      Return the HTTP-version. \r\r      Set the HTTP-version. \r    ]\r  ]\r]\r
4419 This container is derived from the `Fields` template type. To understand all of the members of this class it is necessary to view the declaration for the `Fields` type. When using the default fields container, those declarations are in [link beast.ref.boost__beast__http__fields `http::fields`].
4420 A message can be a request or response, depending on the `isRequest` template argument value. Requests and responses have different types; functions may be overloaded based on the type if desired.
4421 The `Body` template argument type determines the model used to read or write the content body of the message.
4422 Newly constructed messages objects have version set to HTTP/1.1. Newly constructed response objects also have result code set to [link beast.ref.boost__beast__http__status `http::ok`].
4423 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
4424 `true` if this represents a request, or `false` if this represents a response. Some class data members are conditionally present depending on this value.\r  ]]\r  [[`Body`][\r    
4425 A type meeting the requirements of Body.\r  ]]\r  [[`Fields`][\r    
4426 The type of container used to hold the field value pairs. \r  ]]\r]\r
4427 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__response_header http::response_header]\r[indexterm1 http::response_header]\r
4428 A typical HTTP response header. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/message.hpp]\r\r\r\r```\rtemplate<\r    class __Fields__ = fields>\rusing response_header = header< false, Fields >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__header.fields_type [*fields_type]]]\r    [\r      The type representing the fields. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.is_request [*is_request]]]\r    [\r      Indicates if the header is a request or response. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__header.header [*header]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.method [*method]]]\r    [\r      Return the request-method verb. \r\r      Set the request-method. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.method_string [*method_string]]]\r    [\r      Return the request-method as a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.reason [*reason]]]\r    [\r      Return the response reason-phrase. \r\r      Set the response reason-phrase (deprecated) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.result [*result]]]\r    [\r      The response status-code result. \r\r      Set the response status-code. \r\r      Set the response status-code as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.result_int [*result_int]]]\r    [\r      The response status-code expressed as an integer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.target [*target]]]\r    [\r      Returns the request-target string. \r\r      Set the request-target string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__header.version [*version]]]\r    [\r      Return the HTTP-version. \r\r      Set the HTTP-version. \r    ]\r  ]\r]\r
4429 This container is derived from the `Fields` template type. To understand all of the members of this class it is necessary to view the declaration for the `Fields` type. When using the default fields container, those declarations are in [link beast.ref.boost__beast__http__fields `http::fields`].
4430 Newly constructed header objects have version set to HTTP/1.1. Newly constructed response objects also have result code set to [link beast.ref.boost__beast__http__status `http::ok`].
4431 A `header` includes the start-line and header-fields. \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__response_parser http::response_parser]\r[indexterm1 http::response_parser]\r
4432 An HTTP/1 parser for producing a response message. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/parser.hpp]\r\r\r\r```\rtemplate<\r    class __Body__,\r    class __Allocator__ = std::allocator<char>>\rusing response_parser = parser< false, Body, Allocator >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_request [*is_request]]]\r    [\r      true if this parser parses requests, false for responses. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.value_type [*value_type]]]\r    [\r      The type of message returned by the parser. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__parser.body_limit [*body_limit]]]\r    [\r      Set the limit on the payload body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.chunked [*chunked]]]\r    [\r      Returns true if the last value for Transfer-Encoding is "chunked". \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.content_length [*content_length]]]\r    [\r      Returns the optional value of Content-Length if known. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.content_length_remaining [*content_length_remaining]]]\r    [\r      Returns the remaining content length if known. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.eager [*eager]]]\r    [\r      Returns true if the eager parse option is set. \r\r      Set the eager parse option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.get [*get]]]\r    [\r      Returns the parsed message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.got_some [*got_some]]]\r    [\r      Returns true if the parser has received at least one byte of input. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.header_limit [*header_limit]]]\r    [\r      Set a limit on the total size of the header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_done [*is_done]]]\r    [\r      Returns true if the message is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.is_header_done [*is_header_done]]]\r    [\r      Returns true if a the parser has produced the full header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.keep_alive [*keep_alive]]]\r    [\r      Returns true if the message has keep-alive connection semantics. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.need_eof [*need_eof]]]\r    [\r      Returns true if the message semantics require an end of file. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.on_chunk_body [*on_chunk_body]]]\r    [\r      Set a callback to be invoked on chunk body data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.on_chunk_header [*on_chunk_header]]]\r    [\r      Set a callback to be invoked on each chunk header. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.operator_eq_ [*operator=]]]\r    [\r      Assignment (disallowed) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.parser [*parser]]]\r    [\r      Constructor (disallowed) \r\r      Constructor. \r\r      Construct a parser from another parser, changing the Body type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.put [*put]]]\r    [\r      Write a buffer sequence to the parser. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.put_eof [*put_eof]]]\r    [\r      Inform the parser that the end of stream was reached. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.release [*release]]]\r    [\r      Returns ownership of the parsed message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.skip [*skip]]]\r    [\r      Returns true if the skip parse option is set. \r\r      Set the skip parse option. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.upgrade [*upgrade]]]\r    [\r      Returns true if the message is an upgrade message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__parser.parser_dtor_ [*~parser]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r
4433 This class uses the basic HTTP/1 wire format parser to convert a series of octets into a [link beast.ref.boost__beast__http__message `http::message`] using the [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`] container to represent the fields.
4434 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
4435 Indicates whether a request or response will be parsed.\r  ]]\r  [[`Body`][\r    
4436 The type used to represent the body. This must meet the requirements of ['Body].\r  ]]\r  [[`Allocator`][\r    
4437 The type of allocator used with the [link beast.ref.boost__beast__http__basic_fields `http::basic_fields`] container.\r  ]]\r]\r
4438 [heading Remarks]\r
4439 A new instance of the parser is required for each message. 
4440 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__response_serializer http::response_serializer]\r[indexterm1 http::response_serializer]\r
4441 A serializer for HTTP/1 responses. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/serializer.hpp]\r\r\r\r```\rtemplate<\r    class __Body__,\r    class __Fields__ = fields>\rusing response_serializer = serializer< false, Body, Fields >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__serializer.value_type [*value_type]]]\r    [\r      The type of message this serializer uses. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__serializer.consume [*consume]]]\r    [\r      Consume buffer octets in the serialization. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.get [*get]]]\r    [\r      Returns the message being serialized. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.is_done [*is_done]]]\r    [\r      Return true if serialization is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.is_header_done [*is_header_done]]]\r    [\r      Return true if serialization of the header is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.limit [*limit]]]\r    [\r      Returns the serialized buffer size limit. \r\r      Set the serialized buffer size limit. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.next [*next]]]\r    [\r      Returns the next set of buffers in the serialization. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.serializer [*serializer]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.split [*split]]]\r    [\r      Returns true if we will pause after writing the complete header. \r\r      Set whether the header and body are written separately. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.writer_impl [*writer_impl]]]\r    [\r      Provides low-level access to the associated BodyWriter \r    ]\r  ]\r]\r
4442 An object of this type is used to serialize a complete HTTP message into a sequence of octets. To use this class, construct an instance with the message to be serialized. The implementation will automatically perform chunk encoding if the contents of the message indicate that chunk encoding is required.
4443 Chunked output produced by the serializer never contains chunk extensions or trailers, and the location of chunk boundaries is not specified. If callers require chunk extensions, trailers, or control over the exact contents of each chunk they should use the serializer to write just the message header, and then assume control over serializing the chunked payload by using the chunk buffer sequence types [link beast.ref.boost__beast__http__chunk_body `http::chunk_body`], [link beast.ref.boost__beast__http__chunk_crlf `http::chunk_crlf`], [link beast.ref.boost__beast__http__chunk_header `http::chunk_header`], and [link beast.ref.boost__beast__http__chunk_last `http::chunk_last`].
4444 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
4445 `true` if the message is a request.\r  ]]\r  [[`Body`][\r    
4446 The body type of the message.\r  ]]\r  [[`Fields`][\r    
4447 The type of fields in the message. \r  ]]\r]\r
4448 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__serializer http::serializer]\r
4449 Provides buffer oriented HTTP message serialization functionality. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/serializer.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest,\r    class __Body__,\r    class __Fields__ = fields>\rclass serializer\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__serializer.value_type [*value_type]]]\r    [\r      The type of message this serializer uses. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__serializer.consume [*consume]]]\r    [\r      Consume buffer octets in the serialization. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.get [*get]]]\r    [\r      Returns the message being serialized. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.is_done [*is_done]]]\r    [\r      Return true if serialization is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.is_header_done [*is_header_done]]]\r    [\r      Return true if serialization of the header is complete. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.limit [*limit]]]\r    [\r      Returns the serialized buffer size limit. \r\r      Set the serialized buffer size limit. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.next [*next]]]\r    [\r      Returns the next set of buffers in the serialization. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.serializer [*serializer]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.split [*split]]]\r    [\r      Returns true if we will pause after writing the complete header. \r\r      Set whether the header and body are written separately. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__serializer.writer_impl [*writer_impl]]]\r    [\r      Provides low-level access to the associated BodyWriter \r    ]\r  ]\r]\r\r[heading Description]\r
4450 An object of this type is used to serialize a complete HTTP message into a sequence of octets. To use this class, construct an instance with the message to be serialized. The implementation will automatically perform chunk encoding if the contents of the message indicate that chunk encoding is required.
4451 Chunked output produced by the serializer never contains chunk extensions or trailers, and the location of chunk boundaries is not specified. If callers require chunk extensions, trailers, or control over the exact contents of each chunk they should use the serializer to write just the message header, and then assume control over serializing the chunked payload by using the chunk buffer sequence types [link beast.ref.boost__beast__http__chunk_body `http::chunk_body`], [link beast.ref.boost__beast__http__chunk_crlf `http::chunk_crlf`], [link beast.ref.boost__beast__http__chunk_header `http::chunk_header`], and [link beast.ref.boost__beast__http__chunk_last `http::chunk_last`].
4452 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`isRequest`][\r    
4453 `true` if the message is a request.\r  ]]\r  [[`Body`][\r    
4454 The body type of the message.\r  ]]\r  [[`Fields`][\r    
4455 The type of fields in the message. \r  ]]\r]\r
4456 [section:consume http::serializer::consume]\r[indexterm2 consume..http::serializer]\r
4457 Consume buffer octets in the serialization. \r[heading Synopsis]\r```\rvoid\rconsume(\r    std::size_t n);\r```\r\r[heading Description]\r
4458 This function should be called after one or more octets contained in the buffers provided in the prior call to [link beast.ref.boost__beast__http__serializer.next `http::serializer::next`] have been used.
4459 After a call to [link beast.ref.boost__beast__http__serializer.consume `http::serializer::consume`], callers should check the return value of [link beast.ref.boost__beast__http__serializer.is_done `http::serializer::is_done`] to determine if the entire message has been serialized.
4460 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
4461 The number of octets to consume. This number must be greater than zero and no greater than the number of octets in the buffers provided in the prior call to [link beast.ref.boost__beast__http__serializer.next `http::serializer::next`]. \r  ]]\r]\r
4462 [endsect]\r[section:get http::serializer::get]\r[indexterm2 get..http::serializer]\r
4463 Returns the message being serialized. \r[heading Synopsis]\r```\rvalue_type&\rget();\r```\r\r[heading Description]\r[endsect]\r[section:is_done http::serializer::is_done]\r[indexterm2 is_done..http::serializer]\r
4464 Return `true` if serialization is complete. \r[heading Synopsis]\r```\rbool\ris_done();\r```\r\r[heading Description]\r
4465 The operation is complete when all octets corresponding to the serialized representation of the message have been successfully retrieved. [endsect]\r[section:is_header_done http::serializer::is_header_done]\r[indexterm2 is_header_done..http::serializer]\r
4466 Return `true` if serialization of the header is complete. \r[heading Synopsis]\r```\rbool\ris_header_done();\r```\r\r[heading Description]\r
4467 This function indicates whether or not all buffers containing serialized header octets have been retrieved. [endsect]\r[section:limit http::serializer::limit]\r[indexterm2 limit..http::serializer]\r
4468 Returns the serialized buffer size limit. ```\rstd::size_t\r``[link beast.ref.boost__beast__http__serializer.limit.overload1 limit]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__serializer.limit.overload1 more...]]``\r\r```\r
4469 Set the serialized buffer size limit. ```\rvoid\r``[link beast.ref.boost__beast__http__serializer.limit.overload2 limit]``(\r    std::size_t limit);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__serializer.limit.overload2 more...]]``\r```\r[section:overload1 http::serializer::limit (1 of 2 overloads)]\r
4470 Returns the serialized buffer size limit. \r[heading Synopsis]\r```\rstd::size_t\rlimit();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::serializer::limit (2 of 2 overloads)]\r
4471 Set the serialized buffer size limit. \r[heading Synopsis]\r```\rvoid\rlimit(\r    std::size_t limit);\r```\r\r[heading Description]\r
4472 This function adjusts the limit on the maximum size of the buffers passed to the visitor. The new size limit takes effect in the following call to [link beast.ref.boost__beast__http__serializer.next `http::serializer::next`].
4473 The default is no buffer size limit.
4474 [heading Parameters]\r[table [[Name][Description]]\r  [[`limit`][\r    
4475 The new buffer size limit. If this number is zero, the size limit is removed. \r  ]]\r]\r
4476 [endsect]\r[endsect]\r\r[section:next http::serializer::next]\r[indexterm2 next..http::serializer]\r
4477 Returns the next set of buffers in the serialization. \r[heading Synopsis]\r```\rtemplate<\r    class Visit>\rvoid\rnext(\r    error_code& ec,\r    Visit&& visit);\r```\r\r[heading Description]\r
4478 This function will attempt to call the `visit` function object with a ['ConstBufferSequence] of unspecified type representing the next set of buffers in the serialization of the message represented by this object.
4479 If there are no more buffers in the serialization, the visit function will not be called. In this case, no error will be indicated, and the function [link beast.ref.boost__beast__http__serializer.is_done `http::serializer::is_done`] will return `true`.
4480 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
4481 Set to the error, if any occurred.\r  ]]\r  [[`visit`][\r    
4482 The function to call. The equivalent function signature of this object must be: \r```\r  template<class ConstBufferSequence>
4483   void visit(error_code&, ConstBufferSequence const&);
4484 ```\rThe function is not copied, if no error occurs it will be invoked before the call to [link beast.ref.boost__beast__http__serializer.next `http::serializer::next`] returns. \r  ]]\r]\r
4485 [endsect]\r[section:operator_eq_ http::serializer::operator=]\r[indexterm2 operator=..http::serializer]\r
4486 Assignment. \r[heading Synopsis]\r```\rserializer&\roperator=(\r    serializer const&);\r```\r\r[heading Description]\r[endsect]\r[section:serializer http::serializer::serializer]\r[indexterm2 serializer..http::serializer]\r
4487 Constructor. ```\r``[link beast.ref.boost__beast__http__serializer.serializer.overload1 serializer]``(\r    serializer&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__serializer.serializer.overload1 more...]]``\r\r``[link beast.ref.boost__beast__http__serializer.serializer.overload2 serializer]``(\r    serializer const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__serializer.serializer.overload2 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__http__serializer.serializer.overload3 serializer]``(\r    value_type& msg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__serializer.serializer.overload3 more...]]``\r```\r[section:overload1 http::serializer::serializer (1 of 3 overloads)]\r
4488 Constructor. \r[heading Synopsis]\r```\rserializer(\r    serializer&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::serializer::serializer (2 of 3 overloads)]\r
4489 Constructor. \r[heading Synopsis]\r```\rserializer(\r    serializer const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 http::serializer::serializer (3 of 3 overloads)]\r
4490 Constructor. \r[heading Synopsis]\r```\rserializer(\r    value_type& msg);\r```\r\r[heading Description]\r
4491 The implementation guarantees that the message passed on construction will not be accessed until the first call to [link beast.ref.boost__beast__http__serializer.next `http::serializer::next`]. This allows the message to be lazily created. For example, if the header is filled in before serialization.
4492 [heading Parameters]\r[table [[Name][Description]]\r  [[`msg`][\r    
4493 A reference to the message to serialize, which must remain valid for the lifetime of the serializer. Depending on the type of Body used, this may or may not be a `const` reference.\r  ]]\r]\r
4494 [heading Remarks]\r
4495 This function participates in overload resolution only if Body::writer is constructible from a `const` message reference. 
4496 [endsect]\r[endsect]\r\r[section:split http::serializer::split]\r[indexterm2 split..http::serializer]\r
4497 Returns `true` if we will pause after writing the complete header. ```\rbool\r``[link beast.ref.boost__beast__http__serializer.split.overload1 split]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__serializer.split.overload1 more...]]``\r\r```\r
4498 Set whether the header and body are written separately. ```\rvoid\r``[link beast.ref.boost__beast__http__serializer.split.overload2 split]``(\r    bool v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__serializer.split.overload2 more...]]``\r```\r[section:overload1 http::serializer::split (1 of 2 overloads)]\r
4499 Returns `true` if we will pause after writing the complete header. \r[heading Synopsis]\r```\rbool\rsplit();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 http::serializer::split (2 of 2 overloads)]\r
4500 Set whether the header and body are written separately. \r[heading Synopsis]\r```\rvoid\rsplit(\r    bool v);\r```\r\r[heading Description]\r
4501 When the split feature is enabled, the implementation will write only the octets corresponding to the serialized header first. If the header has already been written, this function will have no effect on output. [endsect]\r[endsect]\r\r[section:value_type http::serializer::value_type]\r[indexterm2 value_type..http::serializer]\r
4502 The type of message this serializer uses. \r[heading Synopsis]\r\r```\rusing value_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r
4503 This may be const or non-const depending on the implementation of the corresponding ['BodyWriter]. [endsect]\r[section:writer_impl http::serializer::writer_impl]\r[indexterm2 writer_impl..http::serializer]\r
4504 Provides low-level access to the associated ['BodyWriter] \r[heading Synopsis]\r```\rwriter&\rwriter_impl();\r```\r\r[heading Description]\r
4505 This function provides access to the instance of the writer associated with the body and created by the serializer upon construction. The behavior of accessing this object is defined by the specification of the particular writer and its associated body.
4506 [heading Return Value]
4507 A reference to the writer. 
4508 [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__span_body http::span_body]\r
4509 A ['Body] using [link beast.ref.boost__beast__span `span`]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/span_body.hpp]\r\r\r\r```\rtemplate<\r    class T>\rstruct span_body\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__span_body.reader [*reader]]]\r    [\r      The algorithm for parsing the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__span_body.value_type [*value_type]]]\r    [\r      The type of container used for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__span_body.writer [*writer]]]\r    [\r      The algorithm for serializing the body. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__span_body.size [*size]]]\r    [\r      Returns the payload size of the body. \r    ]\r  ]\r]\r\r[heading Description]\r
4510 This body uses [link beast.ref.boost__beast__span `span`] as a memory-based container for holding message payloads. The container represents a non-owning reference to a contiguous area of memory. Messages using this body type may be serialized and parsed.
4511 Unlike [link beast.ref.boost__beast__http__buffer_body `http::buffer_body`], only one buffer may be provided during a parse or serialize operation. [section:reader http::span_body::reader]\r[indexterm2 reader..http::span_body]\r
4512 The algorithm for parsing the body. \r[heading Synopsis]\r\r```\rusing reader = ``['implementation-defined]``;\r```\r\r[heading Description]\r
4513 Meets the requirements of ['BodyReader]. [endsect]\r[section:size http::span_body::size]\r[indexterm2 size..http::span_body]\r
4514 Returns the payload size of the body. \r[heading Synopsis]\r```\rstatic\rstd::uint64_t\rsize(\r    value_type const& body);\r```\r\r[heading Description]\r
4515 When this body is used with [link beast.ref.boost__beast__http__message.prepare_payload `http::message::prepare_payload`], the Content-Length will be set to the payload size, and any chunked Transfer-Encoding will be removed. [endsect]\r[section:value_type http::span_body::value_type]\r[indexterm2 value_type..http::span_body]\r
4516 The type of container used for the body. \r[heading Synopsis]\r\r```\rusing value_type = span< T >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__span.const_iterator [*const_iterator]]]\r    [\r      The const iterator used by the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.const_pointer [*const_pointer]]]\r    [\r      The const pointer used by the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.const_reference [*const_reference]]]\r    [\r      The const reference used by the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.element_type [*element_type]]]\r    [\r      The type of value, including cv qualifiers. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.index_type [*index_type]]]\r    [\r      The type of integer used to index the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.iterator [*iterator]]]\r    [\r      The iterator used by the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.pointer [*pointer]]]\r    [\r      A pointer to a span element. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.reference [*reference]]]\r    [\r      A reference to a span element. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.value_type [*value_type]]]\r    [\r      The type of value of each span element. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__span.begin [*begin]]]\r    [\r      Returns an iterator to the beginning of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.cbegin [*cbegin]]]\r    [\r      Returns an iterator to the beginning of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.cend [*cend]]]\r    [\r      Returns an iterator to one past the end of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.data [*data]]]\r    [\r      Returns a pointer to the beginning of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.empty [*empty]]]\r    [\r      Returns true if the span is empty. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.end [*end]]]\r    [\r      Returns an iterator to one past the end of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.size [*size]]]\r    [\r      Returns the number of elements in the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.span [*span]]]\r    [\r      Constructor. \r    ]\r  ]\r]\r
4517 This class implements a non-owning reference to a storage area of a certain size and having an underlying integral type with size of 1.
4518 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`T`][\r    
4519 The type pointed to by span iterators \r  ]]\r]\r
4520 \r[heading Description]\r
4521 This determines the type of [link beast.ref.boost__beast__http__message.body `http::message::body`] when this body type is used with a message container. [endsect]\r[section:writer http::span_body::writer]\r[indexterm2 writer..http::span_body]\r
4522 The algorithm for serializing the body. \r[heading Synopsis]\r\r```\rusing writer = ``['implementation-defined]``;\r```\r\r[heading Description]\r
4523 Meets the requirements of ['BodyWriter]. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__status http::status]\r[indexterm1 http::status]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/status.hpp]\r\r\r```\renum status\r```\r\r[indexterm2 unknown..http::status]\r[indexterm2 continue_..http::status]\r[indexterm2 switching_protocols..http::status]\r[indexterm2 processing..http::status]\r[indexterm2 ok..http::status]\r[indexterm2 created..http::status]\r[indexterm2 accepted..http::status]\r[indexterm2 non_authoritative_information..http::status]\r[indexterm2 no_content..http::status]\r[indexterm2 reset_content..http::status]\r[indexterm2 partial_content..http::status]\r[indexterm2 multi_status..http::status]\r[indexterm2 already_reported..http::status]\r[indexterm2 im_used..http::status]\r[indexterm2 multiple_choices..http::status]\r[indexterm2 moved_permanently..http::status]\r[indexterm2 found..http::status]\r[indexterm2 see_other..http::status]\r[indexterm2 not_modified..http::status]\r[indexterm2 use_proxy..http::status]\r[indexterm2 temporary_redirect..http::status]\r[indexterm2 permanent_redirect..http::status]\r[indexterm2 bad_request..http::status]\r[indexterm2 unauthorized..http::status]\r[indexterm2 payment_required..http::status]\r[indexterm2 forbidden..http::status]\r[indexterm2 not_found..http::status]\r[indexterm2 method_not_allowed..http::status]\r[indexterm2 not_acceptable..http::status]\r[indexterm2 proxy_authentication_required..http::status]\r[indexterm2 request_timeout..http::status]\r[indexterm2 conflict..http::status]\r[indexterm2 gone..http::status]\r[indexterm2 length_required..http::status]\r[indexterm2 precondition_failed..http::status]\r[indexterm2 payload_too_large..http::status]\r[indexterm2 uri_too_long..http::status]\r[indexterm2 unsupported_media_type..http::status]\r[indexterm2 range_not_satisfiable..http::status]\r[indexterm2 expectation_failed..http::status]\r[indexterm2 misdirected_request..http::status]\r[indexterm2 unprocessable_entity..http::status]\r[indexterm2 locked..http::status]\r[indexterm2 failed_dependency..http::status]\r[indexterm2 upgrade_required..http::status]\r[indexterm2 precondition_required..http::status]\r[indexterm2 too_many_requests..http::status]\r[indexterm2 request_header_fields_too_large..http::status]\r[indexterm2 connection_closed_without_response..http::status]\r[indexterm2 unavailable_for_legal_reasons..http::status]\r[indexterm2 client_closed_request..http::status]\r[indexterm2 internal_server_error..http::status]\r[indexterm2 not_implemented..http::status]\r[indexterm2 bad_gateway..http::status]\r[indexterm2 service_unavailable..http::status]\r[indexterm2 gateway_timeout..http::status]\r[indexterm2 http_version_not_supported..http::status]\r[indexterm2 variant_also_negotiates..http::status]\r[indexterm2 insufficient_storage..http::status]\r[indexterm2 loop_detected..http::status]\r[indexterm2 not_extended..http::status]\r[indexterm2 network_authentication_required..http::status]\r[indexterm2 network_connect_timeout_error..http::status]\r[heading Values]\r[table [[Name][Description]]\r  [[[^unknown]][An unknown status-code. \r\rThis value indicates that the value for the status code
4524 is not in the list of commonly recognized status codes.
4525 Callers interested in the exactly value should use the
4526 interface which provides the raw integer.
4527  ]]\r  [[[^continue_]][\r\r]]\r  [[[^switching_protocols]][Switching Protocols. \r\rThis status indicates that a request to switch to a new
4528 protocol was accepted and applied by the server. A successful
4529 response to a WebSocket Upgrade HTTP request will have this
4530 code.
4531  ]]\r  [[[^processing]][\r\r]]\r  [[[^ok]][\r\r]]\r  [[[^created]][\r\r]]\r  [[[^accepted]][\r\r]]\r  [[[^non_authoritative_information]][\r\r]]\r  [[[^no_content]][\r\r]]\r  [[[^reset_content]][\r\r]]\r  [[[^partial_content]][\r\r]]\r  [[[^multi_status]][\r\r]]\r  [[[^already_reported]][\r\r]]\r  [[[^im_used]][\r\r]]\r  [[[^multiple_choices]][\r\r]]\r  [[[^moved_permanently]][\r\r]]\r  [[[^found]][\r\r]]\r  [[[^see_other]][\r\r]]\r  [[[^not_modified]][\r\r]]\r  [[[^use_proxy]][\r\r]]\r  [[[^temporary_redirect]][\r\r]]\r  [[[^permanent_redirect]][\r\r]]\r  [[[^bad_request]][\r\r]]\r  [[[^unauthorized]][\r\r]]\r  [[[^payment_required]][\r\r]]\r  [[[^forbidden]][\r\r]]\r  [[[^not_found]][\r\r]]\r  [[[^method_not_allowed]][\r\r]]\r  [[[^not_acceptable]][\r\r]]\r  [[[^proxy_authentication_required]][\r\r]]\r  [[[^request_timeout]][\r\r]]\r  [[[^conflict]][\r\r]]\r  [[[^gone]][\r\r]]\r  [[[^length_required]][\r\r]]\r  [[[^precondition_failed]][\r\r]]\r  [[[^payload_too_large]][\r\r]]\r  [[[^uri_too_long]][\r\r]]\r  [[[^unsupported_media_type]][\r\r]]\r  [[[^range_not_satisfiable]][\r\r]]\r  [[[^expectation_failed]][\r\r]]\r  [[[^misdirected_request]][\r\r]]\r  [[[^unprocessable_entity]][\r\r]]\r  [[[^locked]][\r\r]]\r  [[[^failed_dependency]][\r\r]]\r  [[[^upgrade_required]][\r\r]]\r  [[[^precondition_required]][\r\r]]\r  [[[^too_many_requests]][\r\r]]\r  [[[^request_header_fields_too_large]][\r\r]]\r  [[[^connection_closed_without_response]][\r\r]]\r  [[[^unavailable_for_legal_reasons]][\r\r]]\r  [[[^client_closed_request]][\r\r]]\r  [[[^internal_server_error]][\r\r]]\r  [[[^not_implemented]][\r\r]]\r  [[[^bad_gateway]][\r\r]]\r  [[[^service_unavailable]][\r\r]]\r  [[[^gateway_timeout]][\r\r]]\r  [[[^http_version_not_supported]][\r\r]]\r  [[[^variant_also_negotiates]][\r\r]]\r  [[[^insufficient_storage]][\r\r]]\r  [[[^loop_detected]][\r\r]]\r  [[[^not_extended]][\r\r]]\r  [[[^network_authentication_required]][\r\r]]\r  [[[^network_connect_timeout_error]][\r\r]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__status_class http::status_class]\r[indexterm1 http::status_class]\r
4532 Represents the class of a status-code. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/status.hpp]\r\r\r```\renum status_class\r```\r\r[indexterm2 unknown..http::status_class]\r[indexterm2 informational..http::status_class]\r[indexterm2 successful..http::status_class]\r[indexterm2 redirection..http::status_class]\r[indexterm2 client_error..http::status_class]\r[indexterm2 server_error..http::status_class]\r[heading Values]\r[table [[Name][Description]]\r  [[[^unknown]][Unknown status-class. \r\r]]\r  [[[^informational]][The request was received, continuing processing. \r\r]]\r  [[[^successful]][The request was successfully received, understood, and accepted. \r\r]]\r  [[[^redirection]][Further action needs to be taken in order to complete the request. \r\r]]\r  [[[^client_error]][The request contains bad syntax or cannot be fulfilled. \r\r]]\r  [[[^server_error]][The server failed to fulfill an apparently valid request. \r\r]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__string_body http::string_body]\r[indexterm1 http::string_body]\r
4533 A ['Body] using `std::string` \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/string_body.hpp]\r\r\r\r```\rusing string_body = basic_string_body< char >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_string_body.reader [*reader]]]\r    [\r      The algorithm for parsing the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_string_body.value_type [*value_type]]]\r    [\r      The type of container used for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__basic_string_body.writer [*writer]]]\r    [\r      The algorithm for serializing the body. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__basic_string_body.size [*size]]]\r    [\r      Returns the payload size of the body. \r    ]\r  ]\r]\r
4534 This body uses `std::basic_string` as a memory-based container for holding message payloads. Messages using this body type may be serialized and parsed. \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__string_to_field http::string_to_field]\r[indexterm1 http::string_to_field]\r
4535 Attempt to convert a string to a field enum. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/field.hpp]\r\r\r\r```\rfield\rstring_to_field(\r    string_view s);\r\r```\r\r[heading Description]\r
4536 The string comparison is case-insensitive.
4537 [heading Return Value]
4538 The corresponding field, or [link beast.ref.boost__beast__http__field `http::unknown`] if no known field matches. 
4539 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__string_to_verb http::string_to_verb]\r[indexterm1 http::string_to_verb]\r
4540 Converts a string to the request method verb. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/verb.hpp]\r\r\r\r```\rverb\rstring_to_verb(\r    string_view s);\r\r```\r\r[heading Description]\r
4541 If the string does not match a known request method, [link beast.ref.boost__beast__http__field `http::unknown`] is returned. \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__swap http::swap]\r[indexterm1 http::swap]\r
4542 Swap two header objects. ```\rtemplate<\r    bool isRequest,\r    class __Fields__>\rvoid\r``[link beast.ref.boost__beast__http__swap.overload1 swap]``(\r    header< isRequest, Fields >& m1,\r    header< isRequest, Fields >& m2);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__swap.overload1 more...]]``\r\r```\r
4543 Swap two message objects. ```\rtemplate<\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rvoid\r``[link beast.ref.boost__beast__http__swap.overload2 swap]``(\r    message< isRequest, Body, Fields >& m1,\r    message< isRequest, Body, Fields >& m2);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__swap.overload2 more...]]``\r```\r[section:overload1 http::swap (1 of 2 overloads)]\r
4544 Swap two header objects. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/message.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest,\r    class __Fields__>\rvoid\rswap(\r    header< isRequest, Fields >& m1,\r    header< isRequest, Fields >& m2);\r\r```\r\r[heading Description]\r
4545 [heading Requirements]
4546 `Fields` is [*Swappable]. 
4547 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::swap (2 of 2 overloads)]\r
4548 Swap two message objects. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/message.hpp]\r\r\r\r```\rtemplate<\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rvoid\rswap(\r    message< isRequest, Body, Fields >& m1,\r    message< isRequest, Body, Fields >& m2);\r\r```\r\r[heading Description]\r
4549 [heading Requirements:]
4550 `Body::value_type` and `Fields` are [*Swappable]. 
4551 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__to_status_class http::to_status_class]\r[indexterm1 http::to_status_class]\r
4552 Convert an integer to a status\_class. ```\rstatus_class\r``[link beast.ref.boost__beast__http__to_status_class.overload1 to_status_class]``(\r    unsigned v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__to_status_class.overload1 more...]]``\r\r```\r
4553 Convert a status\_code to a status\_class. ```\rstatus_class\r``[link beast.ref.boost__beast__http__to_status_class.overload2 to_status_class]``(\r    status v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__to_status_class.overload2 more...]]``\r```\r[section:overload1 http::to_status_class (1 of 2 overloads)]\r
4554 Convert an integer to a status\_class. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/status.hpp]\r\r\r\r```\rstatus_class\rto_status_class(\r    unsigned v);\r\r```\r\r[heading Description]\r
4555 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
4556 The integer representing a status code.\r  ]]\r]\r
4557 [heading Return Value]
4558 The status class. If the integer does not match a known status class, [link beast.ref.boost__beast__http__field `http::unknown`] is returned. 
4559 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::to_status_class (2 of 2 overloads)]\r
4560 Convert a status\_code to a status\_class. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/status.hpp]\r\r\r\r```\rstatus_class\rto_status_class(\r    status v);\r\r```\r\r[heading Description]\r
4561 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
4562 The status code to convert.\r  ]]\r]\r
4563 [heading Return Value]
4564 The status class. 
4565 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__to_string http::to_string]\r[indexterm1 http::to_string]\r
4566 Convert a field enum to a string. ```\rstring_view\r``[link beast.ref.boost__beast__http__to_string.overload1 to_string]``(\r    field f);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__to_string.overload1 more...]]``\r\r```\r
4567 Returns the text representation of a request method verb. ```\rstring_view\r``[link beast.ref.boost__beast__http__to_string.overload2 to_string]``(\r    verb v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__to_string.overload2 more...]]``\r```\r[section:overload1 http::to_string (1 of 2 overloads)]\r
4568 Convert a field enum to a string. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/field.hpp]\r\r\r\r```\rstring_view\rto_string(\r    field f);\r\r```\r\r[heading Description]\r
4569 [heading Parameters]\r[table [[Name][Description]]\r  [[`f`][\r    
4570 The field to convert \r  ]]\r]\r
4571 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::to_string (2 of 2 overloads)]\r
4572 Returns the text representation of a request method verb. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/verb.hpp]\r\r\r\r```\rstring_view\rto_string(\r    verb v);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__token_list http::token_list]\r
4573 A list of tokens in a comma separated HTTP field value. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/rfc7230.hpp]\r\r\r\r```\rclass token_list\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__token_list.const_iterator [*const_iterator]]]\r    [\r      A constant iterator to the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__token_list.value_type [*value_type]]]\r    [\r      The type of each element in the token list. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__token_list.begin [*begin]]]\r    [\r      Return a const iterator to the beginning of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__token_list.cbegin [*cbegin]]]\r    [\r      Return a const iterator to the beginning of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__token_list.cend [*cend]]]\r    [\r      Return a const iterator to the end of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__token_list.end [*end]]]\r    [\r      Return a const iterator to the end of the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__token_list.exists [*exists]]]\r    [\r      Return true if a token is present in the list. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__token_list.token_list [*token_list]]]\r    [\r      Construct a list. \r    ]\r  ]\r]\r\r[heading Description]\r
4574 This container allows iteration of a list of items in a header field value. The input is a comma separated list of tokens.
4575 If a parsing error is encountered while iterating the string, the behavior of the container will be as if a string containing only characters up to but excluding the first invalid character was used to construct the list.
4576 [heading BNF]
4577 \r```\r  token-list  = *( "," OWS ) token *( OWS "," [ OWS token ] )
4578 ```\r
4579 To use this class, construct with the string to be parsed and then use [link beast.ref.boost__beast__http__token_list.begin `http::token_list::begin`] and [link beast.ref.boost__beast__http__token_list.end `http::token_list::end`], or range-for to iterate each item:
4580 [heading Example]
4581 \r```\r  for(auto const& token : token_list{"apple, pear, banana"})
4582       std::cout << token << "\n";
4583 ```\r
4584 [section:begin http::token_list::begin]\r[indexterm2 begin..http::token_list]\r
4585 Return a const iterator to the beginning of the list. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cbegin http::token_list::cbegin]\r[indexterm2 cbegin..http::token_list]\r
4586 Return a const iterator to the beginning of the list. \r[heading Synopsis]\r```\rconst_iterator\rcbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cend http::token_list::cend]\r[indexterm2 cend..http::token_list]\r
4587 Return a const iterator to the end of the list. \r[heading Synopsis]\r```\rconst_iterator\rcend() const;\r```\r\r[heading Description]\r[endsect]\r[section:const_iterator http::token_list::const_iterator]\r[indexterm2 const_iterator..http::token_list]\r
4588 A constant iterator to the list. \r[heading Synopsis]\r\r```\rusing const_iterator = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:end http::token_list::end]\r[indexterm2 end..http::token_list]\r
4589 Return a const iterator to the end of the list. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:exists http::token_list::exists]\r[indexterm2 exists..http::token_list]\r
4590 Return `true` if a token is present in the list. \r[heading Synopsis]\r```\rbool\rexists(\r    string_view const& s);\r```\r\r[heading Description]\r
4591 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
4592 The token to find. A case-insensitive comparison is used. \r  ]]\r]\r
4593 [endsect]\r[section:token_list http::token_list::token_list]\r[indexterm2 token_list..http::token_list]\r
4594 Construct a list. \r[heading Synopsis]\r```\rtoken_list(\r    string_view s);\r```\r\r[heading Description]\r
4595 [heading Parameters]\r[table [[Name][Description]]\r  [[`s`][\r    
4596 A string containing the list contents. The string must remain valid for the lifetime of the container. \r  ]]\r]\r
4597 [endsect]\r[section:value_type http::token_list::value_type]\r[indexterm2 value_type..http::token_list]\r
4598 The type of each element in the token list. \r[heading Synopsis]\r\r```\rusing value_type = string_view;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__validate_list http::validate_list]\r[indexterm1 http::validate_list]\r
4599 Returns `true` if a parsed list is parsed without errors. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/rfc7230.hpp]\r\r\r\r```\rtemplate<\r    class Policy>\rbool\rvalidate_list(\r    detail::basic_parsed_list< Policy > const& list);\r\r```\r\r[heading Description]\r
4600 This function iterates a single pass through a parsed list and returns `true` if there were no parsing errors, else returns `false`. \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__vector_body http::vector_body]\r
4601 A ['Body] using `std::vector` \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/vector_body.hpp]\r\r\r\r```\rtemplate<\r    class T,\r    class __Allocator__ = std::allocator<T>>\rstruct vector_body\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__vector_body.reader [*reader]]]\r    [\r      The algorithm for parsing the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__vector_body.value_type [*value_type]]]\r    [\r      The type of container used for the body. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__http__vector_body.writer [*writer]]]\r    [\r      The algorithm for serializing the body. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__http__vector_body.size [*size]]]\r    [\r      Returns the payload size of the body. \r    ]\r  ]\r]\r\r[heading Description]\r
4602 This body uses `std::vector` as a memory-based container for holding message payloads. Messages using this body type may be serialized and parsed. [section:reader http::vector_body::reader]\r[indexterm2 reader..http::vector_body]\r
4603 The algorithm for parsing the body. \r[heading Synopsis]\r\r```\rusing reader = ``['implementation-defined]``;\r```\r\r[heading Description]\r
4604 Meets the requirements of ['BodyReader]. [endsect]\r[section:size http::vector_body::size]\r[indexterm2 size..http::vector_body]\r
4605 Returns the payload size of the body. \r[heading Synopsis]\r```\rstatic\rstd::uint64_t\rsize(\r    value_type const& body);\r```\r\r[heading Description]\r
4606 When this body is used with [link beast.ref.boost__beast__http__message.prepare_payload `http::message::prepare_payload`], the Content-Length will be set to the payload size, and any chunked Transfer-Encoding will be removed. [endsect]\r[section:value_type http::vector_body::value_type]\r[indexterm2 value_type..http::vector_body]\r
4607 The type of container used for the body. \r[heading Synopsis]\r\r```\rusing value_type = std::vector< T, Allocator >;\r```\r\r[heading Description]\r
4608 This determines the type of [link beast.ref.boost__beast__http__message.body `http::message::body`] when this body type is used with a message container. [endsect]\r[section:writer http::vector_body::writer]\r[indexterm2 writer..http::vector_body]\r
4609 The algorithm for serializing the body. \r[heading Synopsis]\r\r```\rusing writer = ``['implementation-defined]``;\r```\r\r[heading Description]\r
4610 Meets the requirements of ['BodyWriter]. [endsect]\r\r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__http__verb http::verb]\r[indexterm1 http::verb]\r
4611 HTTP request method verbs. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/verb.hpp]\r\r\r```\renum verb\r```\r\r[indexterm2 unknown..http::verb]\r[indexterm2 delete_..http::verb]\r[indexterm2 get..http::verb]\r[indexterm2 head..http::verb]\r[indexterm2 post..http::verb]\r[indexterm2 put..http::verb]\r[indexterm2 connect..http::verb]\r[indexterm2 options..http::verb]\r[indexterm2 trace..http::verb]\r[indexterm2 copy..http::verb]\r[indexterm2 lock..http::verb]\r[indexterm2 mkcol..http::verb]\r[indexterm2 move..http::verb]\r[indexterm2 propfind..http::verb]\r[indexterm2 proppatch..http::verb]\r[indexterm2 search..http::verb]\r[indexterm2 unlock..http::verb]\r[indexterm2 bind..http::verb]\r[indexterm2 rebind..http::verb]\r[indexterm2 unbind..http::verb]\r[indexterm2 acl..http::verb]\r[indexterm2 report..http::verb]\r[indexterm2 mkactivity..http::verb]\r[indexterm2 checkout..http::verb]\r[indexterm2 merge..http::verb]\r[indexterm2 msearch..http::verb]\r[indexterm2 notify..http::verb]\r[indexterm2 subscribe..http::verb]\r[indexterm2 unsubscribe..http::verb]\r[indexterm2 patch..http::verb]\r[indexterm2 purge..http::verb]\r[indexterm2 mkcalendar..http::verb]\r[indexterm2 link..http::verb]\r[indexterm2 unlink..http::verb]\r[heading Values]\r[table [[Name][Description]]\r  [[[^unknown]][An unknown method. \r\rThis value indicates that the request method string is not
4612 one of the recognized verbs. Callers interested in the method
4613 should use an interface which returns the original string.
4614  ]]\r  [[[^delete_]][The DELETE method deletes the specified resource. \r\r]]\r  [[[^get]][The GET method requests a representation of the specified resource. \r\rRequests using GET should only retrieve data and should have no other effect.
4615  ]]\r  [[[^head]][The HEAD method asks for a response identical to that of a GET request, but without the response body. \r\rThis is useful for retrieving meta-information written in response
4616 headers, without having to transport the entire content.
4617  ]]\r  [[[^post]][The POST method requests that the server accept the entity enclosed in the request as a new subordinate of the web resource identified by the URI. \r\rThe data POSTed might be, for example, an annotation for existing
4618 resources; a message for a bulletin board, newsgroup, mailing list,
4619 or comment thread; a block of data that is the result of submitting
4620 a web form to a data-handling process; or an item to add to a database
4621  ]]\r  [[[^put]][The PUT method requests that the enclosed entity be stored under the supplied URI. \r\rIf the URI refers to an already existing resource, it is modified;
4622 if the URI does not point to an existing resource, then the server
4623 can create the resource with that URI.
4624  ]]\r  [[[^connect]][The CONNECT method converts the request connection to a transparent TCP/IP tunnel. \r\rThis is usually to facilitate SSL-encrypted communication (HTTPS)
4625 through an unencrypted HTTP proxy.
4626  ]]\r  [[[^options]][The OPTIONS method returns the HTTP methods that the server supports for the specified URL. \r\rThis can be used to check the functionality of a web server by requesting
4627 '*' instead of a specific resource.
4628  ]]\r  [[[^trace]][The TRACE method echoes the received request so that a client can see what (if any) changes or additions have been made by intermediate servers. \r\r]]\r  [[[^copy]][\r\r]]\r  [[[^lock]][\r\r]]\r  [[[^mkcol]][\r\r]]\r  [[[^move]][\r\r]]\r  [[[^propfind]][\r\r]]\r  [[[^proppatch]][\r\r]]\r  [[[^search]][\r\r]]\r  [[[^unlock]][\r\r]]\r  [[[^bind]][\r\r]]\r  [[[^rebind]][\r\r]]\r  [[[^unbind]][\r\r]]\r  [[[^acl]][\r\r]]\r  [[[^report]][\r\r]]\r  [[[^mkactivity]][\r\r]]\r  [[[^checkout]][\r\r]]\r  [[[^merge]][\r\r]]\r  [[[^msearch]][\r\r]]\r  [[[^notify]][\r\r]]\r  [[[^subscribe]][\r\r]]\r  [[[^unsubscribe]][\r\r]]\r  [[[^patch]][\r\r]]\r  [[[^purge]][\r\r]]\r  [[[^mkcalendar]][\r\r]]\r  [[[^link]][\r\r]]\r  [[[^unlink]][\r\r]]\r]\r\r[heading Description]\r
4629 Each verb corresponds to a particular method string used in HTTP request messages. \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:boost__beast__http__write http::write]\r[indexterm1 http::write]\r
4630 Write a complete message to a stream using a serializer. ```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write.overload1 write]``(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write.overload1 more...]]``\r\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write.overload2 write]``(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write.overload2 more...]]``\r\r```\r
4631 Write a complete message to a stream. ```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write.overload3 write]``(\r    SyncWriteStream& stream,\r    message< isRequest, Body, Fields >& msg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write.overload3 more...]]``\r\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write.overload4 write]``(\r    SyncWriteStream& stream,\r    message< isRequest, Body, Fields > const& msg);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write.overload4 more...]]``\r\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write.overload5 write]``(\r    SyncWriteStream& stream,\r    message< isRequest, Body, Fields >& msg,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write.overload5 more...]]``\r\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write.overload6 write]``(\r    SyncWriteStream& stream,\r    message< isRequest, Body, Fields > const& msg,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write.overload6 more...]]``\r```\r[section:overload1 http::write (1 of 6 overloads)]\r
4632 Write a complete message to a stream using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr);\r\r```\r\r[heading Description]\r
4633 This function is used to write a complete message to a stream using a caller-provided HTTP/1 serializer. The call will block until one of the following conditions is true:
4634
4635 * The function [link beast.ref.boost__beast__http__serializer.is_done `http::serializer::is_done`] returns `true`
4636
4637
4638 * An error occurs.
4639
4640 This operation is implemented in terms of one or more calls to the stream's `write_some` function.
4641 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4642 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
4643 The serializer to use.\r  ]]\r]\r
4644 [heading Return Value]
4645 The number of bytes written to the stream.
4646 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4647 Thrown on failure.\r  ]]\r]\r
4648 [heading See Also]\r
4649 [link beast.ref.boost__beast__http__serializer `http::serializer`] 
4650 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::write (2 of 6 overloads)]\r
4651 Write a complete message to a stream using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4652 This function is used to write a complete message to a stream using a caller-provided HTTP/1 serializer. The call will block until one of the following conditions is true:
4653
4654 * The function [link beast.ref.boost__beast__http__serializer.is_done `http::serializer::is_done`] returns `true`
4655
4656
4657 * An error occurs.
4658
4659 This operation is implemented in terms of one or more calls to the stream's `write_some` function.
4660 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4661 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
4662 The serializer to use.\r  ]]\r  [[`ec`][\r    
4663 Set to the error, if any occurred.\r  ]]\r]\r
4664 [heading Return Value]
4665 The number of bytes written to the stream.
4666 [heading See Also]\r
4667 [link beast.ref.boost__beast__http__serializer `http::serializer`] 
4668 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload3 http::write (3 of 6 overloads)]\r
4669 Write a complete message to a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite(\r    SyncWriteStream& stream,\r    message< isRequest, Body, Fields >& msg);\r\r```\r\r[heading Description]\r
4670 This function is used to write a complete message to a stream using HTTP/1. The call will block until one of the following conditions is true:
4671
4672 * The entire message is written.
4673
4674
4675 * An error occurs.
4676
4677 This operation is implemented in terms of one or more calls to the stream's `write_some` function. The algorithm will use a temporary [link beast.ref.boost__beast__http__serializer `http::serializer`] with an empty chunk decorator to produce buffers.
4678 [heading Remarks]\r
4679 This function only participates in overload resolution if [link beast.ref.boost__beast__http__is_mutable_body_writer `http::is_mutable_body_writer`] for ['Body] returns `true`.
4680 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4681 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`msg`][\r    
4682 The message to write.\r  ]]\r]\r
4683 [heading Return Value]
4684 The number of bytes written to the stream.
4685 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4686 Thrown on failure.\r  ]]\r]\r
4687 [heading See Also]\r
4688 [link beast.ref.boost__beast__http__message `http::message`] 
4689 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload4 http::write (4 of 6 overloads)]\r
4690 Write a complete message to a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite(\r    SyncWriteStream& stream,\r    message< isRequest, Body, Fields > const& msg);\r\r```\r\r[heading Description]\r
4691 This function is used to write a complete message to a stream using HTTP/1. The call will block until one of the following conditions is true:
4692
4693 * The entire message is written.
4694
4695
4696 * An error occurs.
4697
4698 This operation is implemented in terms of one or more calls to the stream's `write_some` function. The algorithm will use a temporary [link beast.ref.boost__beast__http__serializer `http::serializer`] with an empty chunk decorator to produce buffers.
4699 [heading Remarks]\r
4700 This function only participates in overload resolution if [link beast.ref.boost__beast__http__is_mutable_body_writer `http::is_mutable_body_writer`] for ['Body] returns `false`.
4701 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4702 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`msg`][\r    
4703 The message to write.\r  ]]\r]\r
4704 [heading Return Value]
4705 The number of bytes written to the stream.
4706 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4707 Thrown on failure.\r  ]]\r]\r
4708 [heading See Also]\r
4709 [link beast.ref.boost__beast__http__message `http::message`] 
4710 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload5 http::write (5 of 6 overloads)]\r
4711 Write a complete message to a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite(\r    SyncWriteStream& stream,\r    message< isRequest, Body, Fields >& msg,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4712 This function is used to write a complete message to a stream using HTTP/1. The call will block until one of the following conditions is true:
4713
4714 * The entire message is written.
4715
4716
4717 * An error occurs.
4718
4719 This operation is implemented in terms of one or more calls to the stream's `write_some` function. The algorithm will use a temporary [link beast.ref.boost__beast__http__serializer `http::serializer`] with an empty chunk decorator to produce buffers.
4720 [heading Remarks]\r
4721 This function only participates in overload resolution if [link beast.ref.boost__beast__http__is_mutable_body_writer `http::is_mutable_body_writer`] for ['Body] returns `true`.
4722 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4723 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`msg`][\r    
4724 The message to write.\r  ]]\r  [[`ec`][\r    
4725 Set to the error, if any occurred.\r  ]]\r]\r
4726 [heading Return Value]
4727 The number of bytes written to the stream.
4728 [heading See Also]\r
4729 [link beast.ref.boost__beast__http__message `http::message`] 
4730 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload6 http::write (6 of 6 overloads)]\r
4731 Write a complete message to a stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite(\r    SyncWriteStream& stream,\r    message< isRequest, Body, Fields > const& msg,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4732 This function is used to write a complete message to a stream using HTTP/1. The call will block until one of the following conditions is true:
4733
4734 * The entire message is written.
4735
4736
4737 * An error occurs.
4738
4739 This operation is implemented in terms of one or more calls to the stream's `write_some` function. The algorithm will use a temporary [link beast.ref.boost__beast__http__serializer `http::serializer`] with an empty chunk decorator to produce buffers.
4740 [heading Remarks]\r
4741 This function only participates in overload resolution if [link beast.ref.boost__beast__http__is_mutable_body_writer `http::is_mutable_body_writer`] for ['Body] returns `false`.
4742 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4743 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`msg`][\r    
4744 The message to write.\r  ]]\r  [[`ec`][\r    
4745 Set to the error, if any occurred.\r  ]]\r]\r
4746 [heading Return Value]
4747 The number of bytes written to the stream.
4748 [heading See Also]\r
4749 [link beast.ref.boost__beast__http__message `http::message`] 
4750 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__write_header http::write_header]\r[indexterm1 http::write_header]\r
4751 Write a header to a stream using a serializer. ```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write_header.overload1 write_header]``(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write_header.overload1 more...]]``\r\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write_header.overload2 write_header]``(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write_header.overload2 more...]]``\r```\r[section:overload1 http::write_header (1 of 2 overloads)]\r
4752 Write a header to a stream using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite_header(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr);\r\r```\r\r[heading Description]\r
4753 This function is used to write a header to a stream using a caller-provided HTTP/1 serializer. The call will block until one of the following conditions is true:
4754
4755 * The function [link beast.ref.boost__beast__http__serializer.is_header_done `http::serializer::is_header_done`] returns `true`
4756
4757
4758 * An error occurs.
4759
4760 This operation is implemented in terms of one or more calls to the stream's `write_some` function.
4761 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4762 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
4763 The serializer to use.\r  ]]\r]\r
4764 [heading Return Value]
4765 The number of bytes written to the stream.
4766 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4767 Thrown on failure.\r  ]]\r]\r
4768 [heading Remarks]\r
4769 The implementation will call [link beast.ref.boost__beast__http__serializer.split `http::serializer::split`] with the value `true` on the serializer passed in.
4770 [heading See Also]\r
4771 [link beast.ref.boost__beast__http__serializer `http::serializer`] 
4772 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::write_header (2 of 2 overloads)]\r
4773 Write a header to a stream using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite_header(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4774 This function is used to write a header to a stream using a caller-provided HTTP/1 serializer. The call will block until one of the following conditions is true:
4775
4776 * The function [link beast.ref.boost__beast__http__serializer.is_header_done `http::serializer::is_header_done`] returns `true`
4777
4778
4779 * An error occurs.
4780
4781 This operation is implemented in terms of one or more calls to the stream's `write_some` function.
4782 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4783 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
4784 The serializer to use.\r  ]]\r  [[`ec`][\r    
4785 Set to indicate what error occurred, if any.\r  ]]\r]\r
4786 [heading Return Value]
4787 The number of bytes written to the stream.
4788 [heading Remarks]\r
4789 The implementation will call [link beast.ref.boost__beast__http__serializer.split `http::serializer::split`] with the value `true` on the serializer passed in.
4790 [heading See Also]\r
4791 [link beast.ref.boost__beast__http__serializer `http::serializer`] 
4792 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__http__write_some http::write_some]\r[indexterm1 http::write_some]\r
4793 Write part of a message to a stream using a serializer. ```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write_some.overload1 write_some]``(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write_some.overload1 more...]]``\r\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\r``[link beast.ref.boost__beast__http__write_some.overload2 write_some]``(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__http__write_some.overload2 more...]]``\r```\r[section:overload1 http::write_some (1 of 2 overloads)]\r
4794 Write part of a message to a stream using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite_some(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr);\r\r```\r\r[heading Description]\r
4795 This function is used to write part of a message to a stream using a caller-provided HTTP/1 serializer. The call will block until one of the following conditions is true:
4796
4797 * One or more bytes have been transferred.
4798
4799
4800 * The function [link beast.ref.boost__beast__http__serializer.is_done `http::serializer::is_done`] returns `true`
4801
4802
4803 * An error occurs on the stream.
4804
4805 This operation is implemented in terms of one or more calls to the stream's `write_some` function.
4806 The amount of data actually transferred is controlled by the behavior of the underlying stream, subject to the buffer size limit of the serializer obtained or set through a call to [link beast.ref.boost__beast__http__serializer.limit `http::serializer::limit`]. Setting a limit and performing bounded work helps applications set reasonable timeouts. It also allows application-level flow control to function correctly. For example when using a TCP/IP based stream.
4807 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4808 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
4809 The serializer to use.\r  ]]\r]\r
4810 [heading Return Value]
4811 The number of bytes written to the stream.
4812 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
4813 Thrown on failure.\r  ]]\r]\r
4814 [heading See Also]\r
4815 [link beast.ref.boost__beast__http__serializer `http::serializer`] 
4816 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[section:overload2 http::write_some (2 of 2 overloads)]\r
4817 Write part of a message to a stream using a serializer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/http/write.hpp]\r\r\r\r```\rtemplate<\r    class __SyncWriteStream__,\r    bool isRequest,\r    class __Body__,\r    class __Fields__>\rstd::size_t\rwrite_some(\r    SyncWriteStream& stream,\r    serializer< isRequest, Body, Fields >& sr,\r    error_code& ec);\r\r```\r\r[heading Description]\r
4818 This function is used to write part of a message to a stream using a caller-provided HTTP/1 serializer. The call will block until one of the following conditions is true:
4819
4820 * One or more bytes have been transferred.
4821
4822
4823 * The function [link beast.ref.boost__beast__http__serializer.is_done `http::serializer::is_done`] returns `true`
4824
4825
4826 * An error occurs on the stream.
4827
4828 This operation is implemented in terms of one or more calls to the stream's `write_some` function.
4829 The amount of data actually transferred is controlled by the behavior of the underlying stream, subject to the buffer size limit of the serializer obtained or set through a call to [link beast.ref.boost__beast__http__serializer.limit `http::serializer::limit`]. Setting a limit and performing bounded work helps applications set reasonable timeouts. It also allows application-level flow control to function correctly. For example when using a TCP/IP based stream.
4830 [heading Parameters]\r[table [[Name][Description]]\r  [[`stream`][\r    
4831 The stream to which the data is to be written. The type must support the ['SyncWriteStream] concept.\r  ]]\r  [[`sr`][\r    
4832 The serializer to use.\r  ]]\r  [[`ec`][\r    
4833 Set to indicate what error occurred, if any.\r  ]]\r]\r
4834 [heading Return Value]
4835 The number of bytes written to the stream.
4836 [heading See Also]\r
4837 [link beast.ref.boost__beast__http__async_write_some `http::async_write_some`], [link beast.ref.boost__beast__http__serializer `http::serializer`] 
4838 \r\r\rConvenience header [include_file boost/beast/http.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__iequal iequal]\r
4839 A case-insensitive equality predicate for strings. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/string.hpp]\r\r\r\r```\rstruct iequal\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__iequal.operator_lp__rp_ [*operator()]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r
4840 The case-comparison operation is defined only for low-ASCII characters. [section:operator_lp__rp_ iequal::operator()]\r[indexterm2 operator()..iequal]\r\r[heading Synopsis]\r```\rbool\roperator()(\r    string_view lhs,\r    string_view rhs) const;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__iequals iequals]\r[indexterm1 iequals]\r
4841 Returns `true` if two strings are equal, using a case-insensitive comparison. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/string.hpp]\r\r\r\r```\rbool\riequals(\r    beast::string_view lhs,\r    beast::string_view rhs);\r\r```\r\r[heading Description]\r
4842 The case-comparison operation is defined only for low-ASCII characters.
4843 [heading Parameters]\r[table [[Name][Description]]\r  [[`lhs`][\r    
4844 The string on the left side of the equality\r  ]]\r  [[`rhs`][\r    
4845 The string on the right side of the equality \r  ]]\r]\r
4846 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__iless iless]\r
4847 A case-insensitive less predicate for strings. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/string.hpp]\r\r\r\r```\rstruct iless\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__iless.operator_lp__rp_ [*operator()]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r
4848 The case-comparison operation is defined only for low-ASCII characters. [section:operator_lp__rp_ iless::operator()]\r[indexterm2 operator()..iless]\r\r[heading Synopsis]\r```\rbool\roperator()(\r    string_view lhs,\r    string_view rhs) const;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__is_async_read_stream is_async_read_stream]\r[indexterm1 is_async_read_stream]\r
4849 Determine if `T` meets the requirements of ['AsyncReadStream]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_async_read_stream = ``['see-below]``;\r```\r\r[heading Description]\r
4850 Metafunctions are used to perform compile time checking of template types. This type will be `std::true_type` if `T` meets the requirements, else the type will be `std::false_type`.
4851 [heading Example]
4852
4853 Use with `static_assert`:
4854 \r```\r  template<class AsyncReadStream>
4855   void f(AsyncReadStream& stream)
4856   {
4857       static_assert(is_async_read_stream<AsyncReadStream>::value,
4858           "AsyncReadStream type requirements not met");
4859   ...
4860 ```\r
4861 Use with `std::enable_if` (SFINAE):
4862 \r```\r  template<class AsyncReadStream>
4863   typename std::enable_if<is_async_read_stream<AsyncReadStream>::value>::type
4864   f(AsyncReadStream& stream);
4865 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__is_async_stream is_async_stream]\r[indexterm1 is_async_stream]\r
4866 Determine if `T` meets the requirements of [*AsyncStream]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_async_stream = ``['see-below]``;\r```\r\r[heading Description]\r
4867 Metafunctions are used to perform compile time checking of template types. This type will be `std::true_type` if `T` meets the requirements, else the type will be `std::false_type`.
4868 [heading Example]
4869
4870 Use with `static_assert`:
4871 \r```\r  template<class AsyncStream>
4872   void f(AsyncStream& stream)
4873   {
4874       static_assert(is_async_stream<AsyncStream>::value,
4875           "AsyncStream type requirements not met");
4876   ...
4877 ```\r
4878 Use with `std::enable_if` (SFINAE):
4879 \r```\r  template<class AsyncStream>
4880   typename std::enable_if<is_async_stream<AsyncStream>::value>::type
4881   f(AsyncStream& stream);
4882 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__is_async_write_stream is_async_write_stream]\r[indexterm1 is_async_write_stream]\r
4883 Determine if `T` meets the requirements of ['AsyncWriteStream]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_async_write_stream = ``['see-below]``;\r```\r\r[heading Description]\r
4884 Metafunctions are used to perform compile time checking of template types. This type will be `std::true_type` if `T` meets the requirements, else the type will be `std::false_type`.
4885 [heading Example]
4886
4887 Use with `static_assert`:
4888 \r```\r  template<class AsyncWriteStream>
4889   void f(AsyncWriteStream& stream)
4890   {
4891       static_assert(is_async_write_stream<AsyncWriteStream>::value,
4892           "AsyncWriteStream type requirements not met");
4893   ...
4894 ```\r
4895 Use with `std::enable_if` (SFINAE):
4896 \r```\r  template<class AsyncWriteStream>
4897   typename std::enable_if<is_async_write_stream<AsyncWriteStream>::value>::type
4898   f(AsyncWriteStream& stream);
4899 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__is_const_buffer_sequence is_const_buffer_sequence]\r[indexterm1 is_const_buffer_sequence]\r
4900 Determine if a list of types satisfy the ['ConstBufferSequence] requirements. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffer_traits.hpp]\r\r\r\r```\rtemplate<\r    class... __BufferSequence__>\rusing is_const_buffer_sequence = ``['see-below]``;\r```\r\r[heading Description]\r
4901 This metafunction is used to determine if all of the specified types meet the requirements for constant buffer sequences. This type alias will be `std::true_type` if each specified type meets the requirements, otherwise, this type alias will be `std::false_type`.
4902 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`BufferSequence`][\r    
4903 A list of zero or more types to check. If this list is empty, the resulting type alias will be `std::true_type`. \r  ]]\r]\r
4904 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__is_file is_file]\r
4905 Determine if `T` meets the requirements of ['File]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/file_base.hpp]\r\r\r\r```\rtemplate<\r    class T>\rstruct is_file :\r    public std::integral_constant< bool,... >\r```\r\r[heading Description]\r
4906 Metafunctions are used to perform compile time checking of template types. This type will be `std::true_type` if `T` meets the requirements, else the type will be `std::false_type`.
4907 [heading Example]
4908
4909 Use with `static_assert`:
4910 \r```\r  template<class File>
4911   void f(File& file)
4912   {
4913       static_assert(is_file<File>::value,
4914           "File type requirements not met");
4915   ...
4916 ```\r
4917 Use with `std::enable_if` (SFINAE):
4918 \r```\r  template<class File>
4919   typename std::enable_if<is_file<File>::value>::type
4920   f(File& file);
4921 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__is_mutable_buffer_sequence is_mutable_buffer_sequence]\r[indexterm1 is_mutable_buffer_sequence]\r
4922 Determine if a list of types satisfy the ['MutableBufferSequence] requirements. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/buffer_traits.hpp]\r\r\r\r```\rtemplate<\r    class... __BufferSequence__>\rusing is_mutable_buffer_sequence = ``['see-below]``;\r```\r\r[heading Description]\r
4923 This metafunction is used to determine if all of the specified types meet the requirements for mutable buffer sequences. This type alias will be `std::true_type` if each specified type meets the requirements, otherwise, this type alias will be `std::false_type`.
4924 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`BufferSequence`][\r    
4925 A list of zero or more types to check. If this list is empty, the resulting type alias will be `std::true_type`. \r  ]]\r]\r
4926 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__is_sync_read_stream is_sync_read_stream]\r[indexterm1 is_sync_read_stream]\r
4927 Determine if at type meets the requirements of ['SyncReadStream]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_sync_read_stream = ``['see-below]``;\r```\r\r[heading Description]\r
4928 Metafunctions are used to perform compile time checking of template types. This type will be `std::true_type` if `T` meets the requirements, else the type will be `std::false_type`.
4929 [heading Example]
4930 Use with `static_assert`: \r```\r  template<class SyncReadStream>
4931   void f(SyncReadStream& stream)
4932   {
4933       static_assert(is_sync_read_stream<SyncReadStream>::value,
4934           "SyncReadStream type requirements not met");
4935   ...
4936 ```\r
4937 Use with `std::enable_if` (SFINAE): \r```\r  template<class SyncReadStream>
4938   typename std::enable_if<is_sync_read_stream<SyncReadStream>::value>::type
4939   f(SyncReadStream& stream);
4940 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__is_sync_stream is_sync_stream]\r[indexterm1 is_sync_stream]\r
4941 Determine if `T` meets the requirements of [*SyncStream]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_sync_stream = ``['see-below]``;\r```\r\r[heading Description]\r
4942 Metafunctions are used to perform compile time checking of template types. This type will be `std::true_type` if `T` meets the requirements, else the type will be `std::false_type`.
4943 [heading Example]
4944
4945 Use with `static_assert`:
4946 \r```\r  template<class SyncStream>
4947   void f(SyncStream& stream)
4948   {
4949       static_assert(is_sync_stream<SyncStream>::value,
4950           "SyncStream type requirements not met");
4951   ...
4952 ```\r
4953 Use with `std::enable_if` (SFINAE):
4954 \r```\r  template<class SyncStream>
4955   typename std::enable_if<is_sync_stream<SyncStream>::value>::type
4956   f(SyncStream& stream);
4957 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__is_sync_write_stream is_sync_write_stream]\r[indexterm1 is_sync_write_stream]\r
4958 Determine if `T` meets the requirements of ['SyncWriteStream]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing is_sync_write_stream = ``['see-below]``;\r```\r\r[heading Description]\r
4959 Metafunctions are used to perform compile time checking of template types. This type will be `std::true_type` if `T` meets the requirements, else the type will be `std::false_type`.
4960 [heading Example]
4961
4962 Use with `static_assert`:
4963 \r```\r  template<class SyncReadStream>
4964   void f(SyncReadStream& stream)
4965   {
4966       static_assert(is_sync_read_stream<SyncReadStream>::value,
4967           "SyncReadStream type requirements not met");
4968   ...
4969 ```\r
4970 Use with `std::enable_if` (SFINAE):
4971 \r```\r  template<class SyncReadStream>
4972   typename std::enable_if<is_sync_read_stream<SyncReadStream>::value>::type
4973   f(SyncReadStream& stream);
4974 ```\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__lowest_layer_type lowest_layer_type]\r[indexterm1 lowest_layer_type]\r
4975 A trait to determine the lowest layer type of a stack of stream layers. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/stream_traits.hpp]\r\r\r\r```\rtemplate<\r    class T>\rusing lowest_layer_type = ``['see-below]``;\r```\r\r[heading Description]\r
4976 If `t.next_layer()` is well-defined for an object `t` of type `T`, then `lowest_layer_type<T>` will be an alias for `lowest_layer_type<decltype(t.next_layer())>`, otherwise it will be the type `std::remove_reference<T>`.
4977 [heading Parameters]\r[table [[Name][Description]]\r  [[`T`][\r    
4978 The type to determine the lowest layer type of.\r  ]]\r]\r
4979 [heading Return Value]
4980 The type of the lowest layer. 
4981 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__make_printable make_printable]\r[indexterm1 make_printable]\r
4982 Helper to permit a buffer sequence to be printed to a std::ostream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/make_printable.hpp]\r\r\r\r```\rtemplate<\r    class __ConstBufferSequence__>\r``['implementation-defined]``\rmake_printable(\r    ConstBufferSequence const& buffers);\r\r```\r\r[heading Description]\r
4983 This function is used to wrap a buffer sequence to allow it to be interpreted as characters and written to a `std::ostream` such as `std::cout`. No character translation is performed; unprintable and null characters will be transferred as-is to the output stream.
4984 [heading Example]
4985 This function prints the size and contents of a buffer sequence to standard output: \r```\r  template <class ConstBufferSequence>
4986   void
4987   print (ConstBufferSequence const& buffers)
4988   {
4989       std::cout <<
4990           "Buffer size: " << buffer_bytes(buffers) << " bytes\n"
4991           "Buffer data: '" << make_printable(buffers) << "'\n";
4992   }
4993 ```\r
4994 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
4995 An object meeting the requirements of ['ConstBufferSequence] to be streamed. The implementation will make a copy of this object. Ownership of the underlying memory is not transferred, the application is still responsible for managing its lifetime. \r  ]]\r]\r
4996 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__multi_buffer multi_buffer]\r[indexterm1 multi_buffer]\r
4997 A typical multi buffer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/multi_buffer.hpp]\r\r\r\r```\rusing multi_buffer = basic_multi_buffer< std::allocator< char > >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.allocator_type [*allocator_type]]]\r    [\r      The type of allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer [*basic_multi_buffer]]]\r    [\r      Constructor. \r\r      Move Constructor. \r\r      Copy Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.capacity [*capacity]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.clear [*clear]]]\r    [\r      Set the size of the readable and writable bytes to zero. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.get_allocator [*get_allocator]]]\r    [\r      Returns a copy of the allocator used. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.max_size [*max_size]]]\r    [\r      Set the maximum allowed capacity. \r\r      Return the maximum number of bytes, both readable and writable, that can ever be held. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.operator_eq_ [*operator=]]]\r    [\r      Move Assignment. \r\r      Copy Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.reserve [*reserve]]]\r    [\r      Guarantee a minimum capacity. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.shrink_to_fit [*shrink_to_fit]]]\r    [\r      Reallocate the buffer to fit the readable bytes exactly. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.basic_multi_buffer_dtor_ [*~basic_multi_buffer]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Friends]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_multi_buffer.swap [*swap]]]\r    [\r      Exchange two dynamic buffers. \r    ]\r  ]\r]\r
4998 A dynamic buffer encapsulates memory storage that may be automatically resized as required, where the memory is divided into two regions: readable bytes followed by writable bytes. These memory regions are internal to the dynamic buffer, but direct access to the elements is provided to permit them to be efficiently used with I/O operations.
4999 The implementation uses a sequence of one or more byte arrays of varying sizes to represent the readable and writable bytes. Additional byte array objects are appended to the sequence to accommodate changes in the desired size. The behavior and implementation of this container is most similar to `std::deque`.
5000 Objects of this type meet the requirements of ['DynamicBuffer] and have the following additional properties:
5001
5002 * A mutable buffer sequence representing the readable bytes is returned by [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] when `this` is non-const.
5003
5004
5005 * Buffer sequences representing the readable and writable bytes, returned by [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] and [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`], may have length greater than one.
5006
5007
5008 * A configurable maximum size may be set upon construction and adjusted afterwards. Calls to [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] that would exceed this size will throw `std::length_error`.
5009
5010
5011 * Sequences previously obtained using [link beast.ref.boost__beast__basic_multi_buffer.data `basic_multi_buffer::data`] remain valid after calls to [link beast.ref.boost__beast__basic_multi_buffer.prepare `basic_multi_buffer::prepare`] or [link beast.ref.boost__beast__basic_multi_buffer.commit `basic_multi_buffer::commit`].
5012
5013 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Allocator`][\r    
5014 The allocator to use for managing memory. \r  ]]\r]\r
5015 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__operator_not__eq_ operator!=]\r[indexterm1 operator!=]\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_not__eq_.overload1 operator!=]``(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_not__eq_.overload1 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_not__eq_.overload2 operator!=]``(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_not__eq_.overload2 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_not__eq_.overload3 operator!=]``(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_not__eq_.overload3 more...]]``\r```\r[section:overload1 operator!= (1 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\roperator!=(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload2 operator!= (2 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator!=(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload3 operator!= (3 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator!=(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__operator_plus_ operator+]\r[indexterm1 operator+]\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rvoid\r``[link beast.ref.boost__beast__operator_plus_.overload1 operator+]``(\r    static_string< N, CharT, Traits >const&,\r    static_string< M, CharT, Traits >const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_plus_.overload1 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\r``[link beast.ref.boost__beast__operator_plus_.overload2 operator+]``(\r    CharT const*,\r    static_string< N, CharT, Traits >const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_plus_.overload2 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\r``[link beast.ref.boost__beast__operator_plus_.overload3 operator+]``(\r    CharT,\r    static_string< N, CharT, Traits > const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_plus_.overload3 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\r``[link beast.ref.boost__beast__operator_plus_.overload4 operator+]``(\r    static_string< N, CharT, Traits > const&,\r    CharT const*);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_plus_.overload4 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\r``[link beast.ref.boost__beast__operator_plus_.overload5 operator+]``(\r    static_string< N, CharT, Traits > const&,\r    CharT);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_plus_.overload5 more...]]``\r```\r[section:overload1 operator+ (1 of 5 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rvoid\roperator+(\r    static_string< N, CharT, Traits >const&,\r    static_string< M, CharT, Traits >const&);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload2 operator+ (2 of 5 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\roperator+(\r    CharT const*,\r    static_string< N, CharT, Traits >const&);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload3 operator+ (3 of 5 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\roperator+(\r    CharT,\r    static_string< N, CharT, Traits > const&);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload4 operator+ (4 of 5 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\roperator+(\r    static_string< N, CharT, Traits > const&,\r    CharT const*);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload5 operator+ (5 of 5 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\roperator+(\r    static_string< N, CharT, Traits > const&,\r    CharT);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__operator_lt_ operator<]\r[indexterm1 operator<]\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_lt_.overload1 operator<]``(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_lt_.overload1 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_lt_.overload2 operator<]``(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_lt_.overload2 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_lt_.overload3 operator<]``(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_lt_.overload3 more...]]``\r```\r[section:overload1 operator< (1 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\roperator<(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload2 operator< (2 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator<(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload3 operator< (3 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator<(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__operator_lt__lt_ operator<<]\r[indexterm1 operator<<]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rstd::basic_ostream< CharT, Traits >&\roperator<<(\r    std::basic_ostream< CharT, Traits >& os,\r    static_string< N, CharT, Traits > const& str);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__operator_lt__eq_ operator<=]\r[indexterm1 operator<=]\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_lt__eq_.overload1 operator<=]``(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_lt__eq_.overload1 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_lt__eq_.overload2 operator<=]``(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_lt__eq_.overload2 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_lt__eq_.overload3 operator<=]``(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_lt__eq_.overload3 more...]]``\r```\r[section:overload1 operator<= (1 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\roperator<=(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload2 operator<= (2 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator<=(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload3 operator<= (3 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator<=(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__operator_eq__eq_ operator==]\r[indexterm1 operator==]\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_eq__eq_.overload1 operator==]``(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_eq__eq_.overload1 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_eq__eq_.overload2 operator==]``(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_eq__eq_.overload2 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_eq__eq_.overload3 operator==]``(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_eq__eq_.overload3 more...]]``\r```\r[section:overload1 operator== (1 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\roperator==(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload2 operator== (2 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator==(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload3 operator== (3 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator==(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__operator_gt_ operator>]\r[indexterm1 operator>]\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_gt_.overload1 operator>]``(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_gt_.overload1 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_gt_.overload2 operator>]``(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_gt_.overload2 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_gt_.overload3 operator>]``(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_gt_.overload3 more...]]``\r```\r[section:overload1 operator> (1 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\roperator>(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload2 operator> (2 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator>(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload3 operator> (3 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator>(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__operator_gt__eq_ operator>=]\r[indexterm1 operator>=]\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_gt__eq_.overload1 operator>=]``(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_gt__eq_.overload1 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_gt__eq_.overload2 operator>=]``(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_gt__eq_.overload2 more...]]``\r\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\r``[link beast.ref.boost__beast__operator_gt__eq_.overload3 operator>=]``(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__operator_gt__eq_.overload3 more...]]``\r```\r[section:overload1 operator>= (1 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rbool\roperator>=(\r    static_string< N, CharT, Traits > const& lhs,\r    static_string< M, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload2 operator>= (2 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator>=(\r    CharT const* lhs,\r    static_string< N, CharT, Traits > const& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload3 operator>= (3 of 3 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rbool\roperator>=(\r    static_string< N, CharT, Traits > const& lhs,\r    CharT const* rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__ostream ostream]\r[indexterm1 ostream]\r
5016 Return an output stream that formats values into a ['DynamicBuffer]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/ostream.hpp]\r\r\r\r```\rtemplate<\r    class __DynamicBuffer__>\r``['implementation-defined]``\rostream(\r    DynamicBuffer& buffer);\r\r```\r\r[heading Description]\r
5017 This function wraps the caller provided ['DynamicBuffer] into a `std::ostream` derived class, to allow `operator<<` stream style formatting operations.
5018 [heading Example]
5019 \r```\r  ostream(buffer) << "Hello, world!" << std::endl;
5020 ```\r
5021 [heading Remarks]\r
5022 Calling members of the underlying buffer before the output stream is destroyed results in undefined behavior.
5023 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
5024 An object meeting the requirements of ['DynamicBuffer] into which the formatted output will be placed.\r  ]]\r]\r
5025 [heading Return Value]
5026 An object derived from `std::ostream` which redirects output The wrapped dynamic buffer is not modified, a copy is made instead. Ownership of the underlying memory is not transferred, the application is still responsible for managing its lifetime. The caller is responsible for ensuring the dynamic buffer is not destroyed for the lifetime of the output stream. 
5027 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__rate_policy_access rate_policy_access]\r
5028 Helper class to assist implementing a ['RatePolicy]. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/rate_policy.hpp]\r\r\r\r```\rclass rate_policy_access\r```\r\r[heading Description]\r
5029 This class is used by the implementation to gain access to the private members of a user-defined object meeting the requirements of ['RatePolicy]. To use it, simply declare it as a friend in your class:
5030 [heading Example]
5031 \r```\r  class custom_rate_policy
5032   {
5033       friend class beast::rate_policy_access;
5034       ...
5035 ```\r
5036 [heading Concepts]
5037
5038
5039 * ['RatePolicy]
5040
5041 [heading See Also]\r
5042 [link beast.ref.boost__beast__basic_stream `basic_stream`] 
5043 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__read_size read_size]\r[indexterm1 read_size]\r
5044 Returns a natural read size. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/read_size.hpp]\r\r\r\r```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\rread_size(\r    DynamicBuffer& buffer,\r    std::size_t max_size);\r\r```\r\r[heading Description]\r
5045 This function inspects the capacity, size, and maximum size of the dynamic buffer. Then it computes a natural read size given the passed-in upper limit. It favors a read size that does not require a reallocation, subject to a reasonable minimum to avoid tiny reads.
5046 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
5047 The dynamic buffer to inspect.\r  ]]\r  [[`max_size`][\r    
5048 An upper limit on the returned value.\r  ]]\r]\r
5049 [heading Remarks]\r
5050 If the buffer is already at its maximum size, zero is returned. 
5051 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__read_size_or_throw read_size_or_throw]\r[indexterm1 read_size_or_throw]\r
5052 Returns a natural read size or throw if the buffer is full. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/read_size.hpp]\r\r\r\r```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\rread_size_or_throw(\r    DynamicBuffer& buffer,\r    std::size_t max_size);\r\r```\r\r[heading Description]\r
5053 This function inspects the capacity, size, and maximum size of the dynamic buffer. Then it computes a natural read size given the passed-in upper limit. It favors a read size that does not require a reallocation, subject to a reasonable minimum to avoid tiny reads.
5054 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
5055 The dynamic buffer to inspect.\r  ]]\r  [[`max_size`][\r    
5056 An upper limit on the returned value.\r  ]]\r]\r
5057 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
5058 if `max_size > 0` and the buffer is full. \r  ]]\r]\r
5059 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__role_type role_type]\r[indexterm1 role_type]\r
5060 The role of local or remote peer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/role.hpp]\r\r\r```\renum role_type\r```\r\r[indexterm2 client..role_type]\r[indexterm2 server..role_type]\r[heading Values]\r[table [[Name][Description]]\r  [[[^client]][The stream is operating as a client. \r\r]]\r  [[[^server]][The stream is operating as a server. \r\r]]\r]\r\r[heading Description]\r
5061 Whether the endpoint is a client or server affects the behavior of teardown. The teardown behavior also depends on the type of the stream being torn down.
5062 The default implementation of teardown for regular TCP/IP sockets is as follows:
5063
5064 * In the client role, a TCP/IP shutdown is sent after reading all remaining data on the connection.
5065
5066
5067 * In the server role, a TCP/IP shutdown is sent before reading all remaining data on the connection.
5068
5069 When the next layer type is a `net::ssl::stream`, the connection is closed by performing the SSL closing handshake corresponding to the role type, client or server. \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__saved_handler saved_handler]\r
5070 An invocable, nullary function object which holds a completion handler. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/saved_handler.hpp]\r\r\r\r```\rclass saved_handler\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__saved_handler.emplace [*emplace]]]\r    [\r      Store a completion handler in the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__saved_handler.has_value [*has_value]]]\r    [\r      Returns true if *this contains a completion handler. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__saved_handler.invoke [*invoke]]]\r    [\r      Unconditionally invoke the stored completion handler. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__saved_handler.maybe_invoke [*maybe_invoke]]]\r    [\r      Conditionally invoke the stored completion handler. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__saved_handler.operator_eq_ [*operator=]]]\r    [\r      Copy Assignment (deleted) \r\r      Move Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__saved_handler.reset [*reset]]]\r    [\r      Discard the saved handler, if one exists. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__saved_handler.saved_handler [*saved_handler]]]\r    [\r      Default Constructor. \r\r      Copy Constructor (deleted) \r\r      Move Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__saved_handler.saved_handler_dtor_ [*~saved_handler]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
5071 This container can hold a type-erased instance of any completion handler, or it can be empty. When the container holds a value, the implementation maintains an instance of `net::executor_work_guard` for the handler's associated executor. Memory is dynamically allocated to store the completion handler, and the allocator may optionally be specified. Otherwise, the implementation uses the handler's associated allocator. [section:emplace saved_handler::emplace]\r[indexterm2 emplace..saved_handler]\r
5072 Store a completion handler in the container. ```\rtemplate<\r    class __Handler__,\r    class __Allocator__>\rvoid\r``[link beast.ref.boost__beast__saved_handler.emplace.overload1 emplace]``(\r    Handler&& handler,\r    Allocator const& alloc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__saved_handler.emplace.overload1 more...]]``\r\rtemplate<\r    class __Handler__>\rvoid\r``[link beast.ref.boost__beast__saved_handler.emplace.overload2 emplace]``(\r    Handler&& handler);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__saved_handler.emplace.overload2 more...]]``\r```\r[section:overload1 saved_handler::emplace (1 of 2 overloads)]\r
5073 Store a completion handler in the container. \r[heading Synopsis]\r```\rtemplate<\r    class __Handler__,\r    class __Allocator__>\rvoid\remplace(\r    Handler&& handler,\r    Allocator const& alloc);\r```\r\r[heading Description]\r
5074 Requires `this->has_value() == false`.
5075 [heading Parameters]\r[table [[Name][Description]]\r  [[`handler`][\r    
5076 The completion handler to store. The implementation takes ownership of the handler by performing a decay-copy.\r  ]]\r  [[`alloc`][\r    
5077 The allocator to use. \r  ]]\r]\r
5078 [endsect]\r[section:overload2 saved_handler::emplace (2 of 2 overloads)]\r
5079 Store a completion handler in the container. \r[heading Synopsis]\r```\rtemplate<\r    class __Handler__>\rvoid\remplace(\r    Handler&& handler);\r```\r\r[heading Description]\r
5080 Requires `this->has_value() == false`. The implementation will use the handler's associated allocator to obtian storage.
5081 [heading Parameters]\r[table [[Name][Description]]\r  [[`handler`][\r    
5082 The completion handler to store. The implementation takes ownership of the handler by performing a decay-copy. \r  ]]\r]\r
5083 [endsect]\r[endsect]\r\r[section:has_value saved_handler::has_value]\r[indexterm2 has_value..saved_handler]\r
5084 Returns `true` if `*this` contains a completion handler. \r[heading Synopsis]\r```\rbool\rhas_value() const;\r```\r\r[heading Description]\r[endsect]\r[section:invoke saved_handler::invoke]\r[indexterm2 invoke..saved_handler]\r
5085 Unconditionally invoke the stored completion handler. \r[heading Synopsis]\r```\rvoid\rinvoke();\r```\r\r[heading Description]\r
5086 Requires `this->has_value() == true`. Any dynamic memory used is deallocated before the stored completion handler is invoked. The executor work guard is also reset before the invocation. [endsect]\r[section:maybe_invoke saved_handler::maybe_invoke]\r[indexterm2 maybe_invoke..saved_handler]\r
5087 Conditionally invoke the stored completion handler. \r[heading Synopsis]\r```\rbool\rmaybe_invoke();\r```\r\r[heading Description]\r
5088 Invokes the stored completion handler if `this->has_value() == true`, otherwise does nothing. Any dynamic memory used is deallocated before the stored completion handler is invoked. The executor work guard is also reset before the invocation.
5089 [heading Return Value]
5090 `true` if the invocation took place. 
5091 [endsect]\r[section:operator_eq_ saved_handler::operator=]\r[indexterm2 operator=..saved_handler]\r
5092 Copy Assignment (deleted) ```\rsaved_handler&\r``[link beast.ref.boost__beast__saved_handler.operator_eq_.overload1 operator=]``(\r    saved_handler const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__saved_handler.operator_eq_.overload1 more...]]``\r\r```\r
5093 Move Assignment. ```\rsaved_handler&\r``[link beast.ref.boost__beast__saved_handler.operator_eq_.overload2 operator=]``(\r    saved_handler&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__saved_handler.operator_eq_.overload2 more...]]``\r```\r[section:overload1 saved_handler::operator= (1 of 2 overloads)]\r
5094 Copy Assignment (deleted) \r[heading Synopsis]\r```\rsaved_handler&\roperator=(\r    saved_handler const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 saved_handler::operator= (2 of 2 overloads)]\r
5095 Move Assignment. \r[heading Synopsis]\r```\rsaved_handler&\roperator=(\r    saved_handler&& other);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:reset saved_handler::reset]\r[indexterm2 reset..saved_handler]\r
5096 Discard the saved handler, if one exists. \r[heading Synopsis]\r```\rbool\rreset();\r```\r\r[heading Description]\r
5097 If `*this` contains an object, it is destroyed.
5098 [heading Return Value]
5099 `true` if an object was destroyed. 
5100 [endsect]\r[section:saved_handler saved_handler::saved_handler]\r[indexterm2 saved_handler..saved_handler]\r
5101 Default Constructor. ```\r``[link beast.ref.boost__beast__saved_handler.saved_handler.overload1 saved_handler]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__saved_handler.saved_handler.overload1 more...]]``\r\r```\r
5102 Copy Constructor (deleted) ```\r``[link beast.ref.boost__beast__saved_handler.saved_handler.overload2 saved_handler]``(\r    saved_handler const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__saved_handler.saved_handler.overload2 more...]]``\r\r```\r
5103 Move Constructor. ```\r``[link beast.ref.boost__beast__saved_handler.saved_handler.overload3 saved_handler]``(\r    saved_handler&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__saved_handler.saved_handler.overload3 more...]]``\r```\r[section:overload1 saved_handler::saved_handler (1 of 3 overloads)]\r
5104 Default Constructor. \r[heading Synopsis]\r```\rsaved_handler();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 saved_handler::saved_handler (2 of 3 overloads)]\r
5105 Copy Constructor (deleted) \r[heading Synopsis]\r```\rsaved_handler(\r    saved_handler const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 saved_handler::saved_handler (3 of 3 overloads)]\r
5106 Move Constructor. \r[heading Synopsis]\r```\rsaved_handler(\r    saved_handler&& other);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:saved_handler_dtor_ saved_handler::~saved_handler]\r[indexterm2 ~saved_handler..saved_handler]\r
5107 Destructor. \r[heading Synopsis]\r```\r~saved_handler();\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__saved_handler__impl saved_handler::impl]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/saved_handler.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2],\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass impl\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__simple_rate_policy simple_rate_policy]\r
5108 A rate policy with simple, configurable limits on reads and writes. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/rate_policy.hpp]\r\r\r\r```\rclass simple_rate_policy\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__simple_rate_policy.read_limit [*read_limit]]]\r    [\r      Set the limit of bytes per second to read. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__simple_rate_policy.write_limit [*write_limit]]]\r    [\r      Set the limit of bytes per second to write. \r    ]\r  ]\r]\r\r[heading Description]\r
5109 This rate policy allows for simple individual limits on the amount of bytes per second allowed for reads and writes.
5110 [heading Concepts]
5111
5112
5113 * ['RatePolicy]
5114
5115 [heading See Also]\r
5116 [link beast.ref.boost__beast__basic_stream `basic_stream`] 
5117 [section:read_limit simple_rate_policy::read_limit]\r[indexterm2 read_limit..simple_rate_policy]\r
5118 Set the limit of bytes per second to read. \r[heading Synopsis]\r```\rvoid\rread_limit(\r    std::size_t bytes_per_second);\r```\r\r[heading Description]\r[endsect]\r[section:write_limit simple_rate_policy::write_limit]\r[indexterm2 write_limit..simple_rate_policy]\r
5119 Set the limit of bytes per second to write. \r[heading Synopsis]\r```\rvoid\rwrite_limit(\r    std::size_t bytes_per_second);\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__span span]\r
5120 A range of bytes expressed as a ContiguousContainer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/span.hpp]\r\r\r\r```\rtemplate<\r    class T>\rclass span\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__span.const_iterator [*const_iterator]]]\r    [\r      The const iterator used by the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.const_pointer [*const_pointer]]]\r    [\r      The const pointer used by the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.const_reference [*const_reference]]]\r    [\r      The const reference used by the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.element_type [*element_type]]]\r    [\r      The type of value, including cv qualifiers. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.index_type [*index_type]]]\r    [\r      The type of integer used to index the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.iterator [*iterator]]]\r    [\r      The iterator used by the container. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.pointer [*pointer]]]\r    [\r      A pointer to a span element. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.reference [*reference]]]\r    [\r      A reference to a span element. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.value_type [*value_type]]]\r    [\r      The type of value of each span element. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__span.begin [*begin]]]\r    [\r      Returns an iterator to the beginning of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.cbegin [*cbegin]]]\r    [\r      Returns an iterator to the beginning of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.cend [*cend]]]\r    [\r      Returns an iterator to one past the end of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.data [*data]]]\r    [\r      Returns a pointer to the beginning of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.empty [*empty]]]\r    [\r      Returns true if the span is empty. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.end [*end]]]\r    [\r      Returns an iterator to one past the end of the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.size [*size]]]\r    [\r      Returns the number of elements in the span. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__span.span [*span]]]\r    [\r      Constructor. \r    ]\r  ]\r]\r\r[heading Description]\r
5121 This class implements a non-owning reference to a storage area of a certain size and having an underlying integral type with size of 1.
5122 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`T`][\r    
5123 The type pointed to by span iterators \r  ]]\r]\r
5124 [section:begin span::begin]\r[indexterm2 begin..span]\r
5125 Returns an iterator to the beginning of the span. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cbegin span::cbegin]\r[indexterm2 cbegin..span]\r
5126 Returns an iterator to the beginning of the span. \r[heading Synopsis]\r```\rconst_iterator\rcbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cend span::cend]\r[indexterm2 cend..span]\r
5127 Returns an iterator to one past the end of the span. \r[heading Synopsis]\r```\rconst_iterator\rcend() const;\r```\r\r[heading Description]\r[endsect]\r[section:const_iterator span::const_iterator]\r[indexterm2 const_iterator..span]\r
5128 The const iterator used by the container. \r[heading Synopsis]\r\r```\rusing const_iterator = const_pointer;\r```\r\r[heading Description]\r[endsect]\r[section:const_pointer span::const_pointer]\r[indexterm2 const_pointer..span]\r
5129 The const pointer used by the container. \r[heading Synopsis]\r\r```\rusing const_pointer = T const *;\r```\r\r[heading Description]\r[endsect]\r[section:const_reference span::const_reference]\r[indexterm2 const_reference..span]\r
5130 The const reference used by the container. \r[heading Synopsis]\r\r```\rusing const_reference = T const &;\r```\r\r[heading Description]\r[endsect]\r[section:data span::data]\r[indexterm2 data..span]\r
5131 Returns a pointer to the beginning of the span. \r[heading Synopsis]\r```\rT*\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:element_type span::element_type]\r[indexterm2 element_type..span]\r
5132 The type of value, including cv qualifiers. \r[heading Synopsis]\r\r```\rusing element_type = T;\r```\r\r[heading Description]\r[endsect]\r[section:empty span::empty]\r[indexterm2 empty..span]\r
5133 Returns `true` if the span is empty. \r[heading Synopsis]\r```\rbool\rempty() const;\r```\r\r[heading Description]\r[endsect]\r[section:end span::end]\r[indexterm2 end..span]\r
5134 Returns an iterator to one past the end of the span. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[section:index_type span::index_type]\r[indexterm2 index_type..span]\r
5135 The type of integer used to index the span. \r[heading Synopsis]\r\r```\rusing index_type = std::ptrdiff_t;\r```\r\r[heading Description]\r[endsect]\r[section:iterator span::iterator]\r[indexterm2 iterator..span]\r
5136 The iterator used by the container. \r[heading Synopsis]\r\r```\rusing iterator = pointer;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ span::operator=]\r[indexterm2 operator=..span]\r
5137 Assignment. ```\rspan&\r``[link beast.ref.boost__beast__span.operator_eq_.overload1 operator=]``(\r    span const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__span.operator_eq_.overload1 more...]]``\r\rtemplate<\r    class ContiguousContainer>\rspan&\r``[link beast.ref.boost__beast__span.operator_eq_.overload2 operator=]``(\r    ContiguousContainer&& container);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__span.operator_eq_.overload2 more...]]``\r```\r[section:overload1 span::operator= (1 of 2 overloads)]\r
5138 Assignment. \r[heading Synopsis]\r```\rspan&\roperator=(\r    span const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 span::operator= (2 of 2 overloads)]\r
5139 Assignment. \r[heading Synopsis]\r```\rtemplate<\r    class ContiguousContainer>\rspan&\roperator=(\r    ContiguousContainer&& container);\r```\r\r[heading Description]\r
5140 [heading Parameters]\r[table [[Name][Description]]\r  [[`container`][\r    
5141 The container to assign from \r  ]]\r]\r
5142 [endsect]\r[endsect]\r\r[section:pointer span::pointer]\r[indexterm2 pointer..span]\r
5143 A pointer to a span element. \r[heading Synopsis]\r\r```\rusing pointer = T*;\r```\r\r[heading Description]\r[endsect]\r[section:reference span::reference]\r[indexterm2 reference..span]\r
5144 A reference to a span element. \r[heading Synopsis]\r\r```\rusing reference = T&;\r```\r\r[heading Description]\r[endsect]\r[section:size span::size]\r[indexterm2 size..span]\r
5145 Returns the number of elements in the span. \r[heading Synopsis]\r```\rstd::size_t\rsize() const;\r```\r\r[heading Description]\r[endsect]\r[section:span span::span]\r[indexterm2 span..span]\r
5146 Constructor. ```\r``[link beast.ref.boost__beast__span.span.overload1 span]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__span.span.overload1 more...]]``\r\r``[link beast.ref.boost__beast__span.span.overload2 span]``(\r    span const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__span.span.overload2 more...]]``\r\r``[link beast.ref.boost__beast__span.span.overload3 span]``(\r    T* data,\r    std::size_t size);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__span.span.overload3 more...]]``\r\rtemplate<\r    class ContiguousContainer>\rexplicit\r``[link beast.ref.boost__beast__span.span.overload4 span]``(\r    ContiguousContainer&& container);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__span.span.overload4 more...]]``\r```\r[section:overload1 span::span (1 of 4 overloads)]\r
5147 Constructor. \r[heading Synopsis]\r```\rspan();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 span::span (2 of 4 overloads)]\r
5148 Constructor. \r[heading Synopsis]\r```\rspan(\r    span const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 span::span (3 of 4 overloads)]\r
5149 Constructor. \r[heading Synopsis]\r```\rspan(\r    T* data,\r    std::size_t size);\r```\r\r[heading Description]\r
5150 [heading Parameters]\r[table [[Name][Description]]\r  [[`data`][\r    
5151 A pointer to the beginning of the range of elements\r  ]]\r  [[`size`][\r    
5152 The number of elements pointed to by `data` \r  ]]\r]\r
5153 [endsect]\r[section:overload4 span::span (4 of 4 overloads)]\r
5154 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class ContiguousContainer>\rspan(\r    ContiguousContainer&& container);\r```\r\r[heading Description]\r
5155 [heading Parameters]\r[table [[Name][Description]]\r  [[`container`][\r    
5156 The container to construct from \r  ]]\r]\r
5157 [endsect]\r[endsect]\r\r[section:value_type span::value_type]\r[indexterm2 value_type..span]\r
5158 The type of value of each span element. \r[heading Synopsis]\r\r```\rusing value_type = typename std::remove_const< T >::type;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__ssl_stream ssl_stream]\r
5159 Provides stream-oriented functionality using OpenSSL. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/ssl/ssl_stream.hpp]\r\r\r\r```\rtemplate<\r    class NextLayer>\rclass ssl_stream :\r    public stream_base\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.executor_type [*executor_type]]]\r    [\r      The type of the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.impl_struct [*impl_struct]]]\r    [\r      Structure for use with deprecated impl_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.native_handle_type [*native_handle_type]]]\r    [\r      The native handle type of the SSL stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.next_layer_type [*next_layer_type]]]\r    [\r      The type of the next layer. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.async_handshake [*async_handshake]]]\r    [\r      Start an asynchronous SSL handshake. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.async_read_some [*async_read_some]]]\r    [\r      Start an asynchronous read. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.async_shutdown [*async_shutdown]]]\r    [\r      Asynchronously shut down SSL on the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.async_write_some [*async_write_some]]]\r    [\r      Start an asynchronous write. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.get_executor [*get_executor]]]\r    [\r      Get the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.handshake [*handshake]]]\r    [\r      Perform SSL handshaking. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.native_handle [*native_handle]]]\r    [\r      Get the underlying implementation in the native type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.next_layer [*next_layer]]]\r    [\r      Get a reference to the next layer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.read_some [*read_some]]]\r    [\r      Read some data from the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.set_verify_callback [*set_verify_callback]]]\r    [\r      Set the callback used to verify peer certificates. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.set_verify_depth [*set_verify_depth]]]\r    [\r      Set the peer verification depth. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.set_verify_mode [*set_verify_mode]]]\r    [\r      Set the peer verification mode. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.shutdown [*shutdown]]]\r    [\r      Shut down SSL on the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.ssl_stream [*ssl_stream]]]\r    [\r      Construct a stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__ssl_stream.write_some [*write_some]]]\r    [\r      Write some data to the stream. \r    ]\r  ]\r]\r\r[heading Description]\r
5160 The stream class template provides asynchronous and blocking stream-oriented functionality using SSL.
5161 [heading Thread Safety]
5162 ['Distinct] ['objects:] Safe.\r\r['Shared] ['objects:] Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
5163 [heading Example]
5164 To use this template with a [link beast.ref.boost__beast__tcp_stream `tcp_stream`], you would write: \r```\r  net::io_context ioc;
5165   net::ssl::context ctx{net::ssl::context::tlsv12};
5166   beast::ssl_stream<beast::tcp_stream> sock{ioc, ctx};
5167 ```\r
5168 In addition to providing an interface identical to `net::ssl::stream`, the wrapper has the following additional properties:
5169
5170 * Satisfies [*MoveConstructible] 
5171
5172
5173 * Satisfies [*MoveAssignable] 
5174
5175
5176 * Constructible from a moved socket.
5177
5178
5179 * Uses [link beast.ref.boost__beast__flat_stream `flat_stream`] internally, as a performance work-around for a limitation of `net::ssl::stream` when writing buffer sequences having length greater than one.
5180
5181
5182 [section:async_handshake ssl_stream::async_handshake]\r[indexterm2 async_handshake..ssl_stream]\r
5183 Start an asynchronous SSL handshake. ```\rtemplate<\r    class HandshakeHandler>\r``__deduced__``\r``[link beast.ref.boost__beast__ssl_stream.async_handshake.overload1 async_handshake]``(\r    handshake_type type,\r    BOOST_ASIO_MOVE_ARG(HandshakeHandler) handler);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.async_handshake.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__,\r    class BufferedHandshakeHandler>\r``__deduced__``\r``[link beast.ref.boost__beast__ssl_stream.async_handshake.overload2 async_handshake]``(\r    handshake_type type,\r    ConstBufferSequence const& buffers,\r    BOOST_ASIO_MOVE_ARG(BufferedHandshakeHandler) handler);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.async_handshake.overload2 more...]]``\r```\r[section:overload1 ssl_stream::async_handshake (1 of 2 overloads)]\r
5184 Start an asynchronous SSL handshake. \r[heading Synopsis]\r```\rtemplate<\r    class HandshakeHandler>\r``__deduced__``\rasync_handshake(\r    handshake_type type,\r    BOOST_ASIO_MOVE_ARG(HandshakeHandler) handler);\r```\r\r[heading Description]\r
5185 This function is used to asynchronously perform an SSL handshake on the stream. This function call always returns immediately.
5186 [heading Parameters]\r[table [[Name][Description]]\r  [[`type`][\r    
5187 The type of handshaking to be performed, i.e. as a client or as a server.\r  ]]\r  [[`handler`][\r    
5188 The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be: \r```\r   void handler(
5189     const boost::system::error_code& error // Result of operation.
5190   ); 
5191 ```\r\r  ]]\r]\r
5192 [endsect]\r[section:overload2 ssl_stream::async_handshake (2 of 2 overloads)]\r
5193 Start an asynchronous SSL handshake. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class BufferedHandshakeHandler>\r``__deduced__``\rasync_handshake(\r    handshake_type type,\r    ConstBufferSequence const& buffers,\r    BOOST_ASIO_MOVE_ARG(BufferedHandshakeHandler) handler);\r```\r\r[heading Description]\r
5194 This function is used to asynchronously perform an SSL handshake on the stream. This function call always returns immediately.
5195 [heading Parameters]\r[table [[Name][Description]]\r  [[`type`][\r    
5196 The type of handshaking to be performed, i.e. as a client or as a server.\r  ]]\r  [[`buffers`][\r    
5197 The buffered data to be reused for the handshake. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
5198 The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be: \r```\r   void handler(
5199     const boost::system::error_code& error, // Result of operation.
5200     std::size_t bytes_transferred // Amount of buffers used in handshake.
5201   ); 
5202 ```\r\r  ]]\r]\r
5203 [endsect]\r[endsect]\r\r[section:async_read_some ssl_stream::async_read_some]\r[indexterm2 async_read_some..ssl_stream]\r
5204 Start an asynchronous read. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__,\r    class __ReadHandler__>\r``__deduced__``\rasync_read_some(\r    MutableBufferSequence const& buffers,\r    BOOST_ASIO_MOVE_ARG(ReadHandler) handler);\r```\r\r[heading Description]\r
5205 This function is used to asynchronously read one or more bytes of data from the stream. The function call always returns immediately.
5206 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
5207 The buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
5208 The handler to be called when the read operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be: \r```\r   void handler(
5209     const boost::system::error_code& error, // Result of operation.
5210     std::size_t bytes_transferred           // Number of bytes read.
5211   ); 
5212 ```\r\r  ]]\r]\r
5213 [heading Remarks]\r
5214 The `async_read_some` operation may not read all of the requested number of bytes. Consider using the `net::async_read` function if you need to ensure that the requested amount of data is read before the asynchronous operation completes. 
5215 [endsect]\r[section:async_shutdown ssl_stream::async_shutdown]\r[indexterm2 async_shutdown..ssl_stream]\r
5216 Asynchronously shut down SSL on the stream. \r[heading Synopsis]\r```\rtemplate<\r    class ShutdownHandler>\r``__deduced__``\rasync_shutdown(\r    BOOST_ASIO_MOVE_ARG(ShutdownHandler) handler);\r```\r\r[heading Description]\r
5217 This function is used to asynchronously shut down SSL on the stream. This function call always returns immediately.
5218 [heading Parameters]\r[table [[Name][Description]]\r  [[`handler`][\r    
5219 The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be: \r```\r   void handler(
5220     const boost::system::error_code& error // Result of operation.
5221   ); 
5222 ```\r\r  ]]\r]\r
5223 [endsect]\r[section:async_write_some ssl_stream::async_write_some]\r[indexterm2 async_write_some..ssl_stream]\r
5224 Start an asynchronous write. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class __WriteHandler__>\r``__deduced__``\rasync_write_some(\r    ConstBufferSequence const& buffers,\r    BOOST_ASIO_MOVE_ARG(WriteHandler) handler);\r```\r\r[heading Description]\r
5225 This function is used to asynchronously write one or more bytes of data to the stream. The function call always returns immediately.
5226 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
5227 The data to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
5228 The handler to be called when the write operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be: \r```\r   void handler(
5229     const boost::system::error_code& error, // Result of operation.
5230     std::size_t bytes_transferred           // Number of bytes written.
5231   ); 
5232 ```\r\r  ]]\r]\r
5233 [heading Remarks]\r
5234 The `async_write_some` operation may not transmit all of the data to the peer. Consider using the `net::async_write` function if you need to ensure that all data is written before the asynchronous operation completes. 
5235 [endsect]\r[section:executor_type ssl_stream::executor_type]\r[indexterm2 executor_type..ssl_stream]\r
5236 The type of the executor associated with the object. \r[heading Synopsis]\r\r```\rusing executor_type = typename stream_type::executor_type;\r```\r\r[heading Description]\r[endsect]\r[section:get_executor ssl_stream::get_executor]\r[indexterm2 get_executor..ssl_stream]\r
5237 Get the executor associated with the object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor();\r```\r\r[heading Description]\r
5238 This function may be used to obtain the executor object that the stream uses to dispatch handlers for asynchronous operations.
5239 [heading Return Value]
5240 A copy of the executor that stream will use to dispatch handlers. 
5241 [endsect]\r[section:handshake ssl_stream::handshake]\r[indexterm2 handshake..ssl_stream]\r
5242 Perform SSL handshaking. ```\rvoid\r``[link beast.ref.boost__beast__ssl_stream.handshake.overload1 handshake]``(\r    handshake_type type);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.handshake.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__ssl_stream.handshake.overload2 handshake]``(\r    handshake_type type,\r    boost::system::error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.handshake.overload2 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rvoid\r``[link beast.ref.boost__beast__ssl_stream.handshake.overload3 handshake]``(\r    handshake_type type,\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.handshake.overload3 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rvoid\r``[link beast.ref.boost__beast__ssl_stream.handshake.overload4 handshake]``(\r    handshake_type type,\r    ConstBufferSequence const& buffers,\r    boost::system::error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.handshake.overload4 more...]]``\r```\r[section:overload1 ssl_stream::handshake (1 of 4 overloads)]\r
5243 Perform SSL handshaking. \r[heading Synopsis]\r```\rvoid\rhandshake(\r    handshake_type type);\r```\r\r[heading Description]\r
5244 This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
5245 [heading Parameters]\r[table [[Name][Description]]\r  [[`type`][\r    
5246 The type of handshaking to be performed, i.e. as a client or as a server.\r  ]]\r]\r
5247 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
5248 Thrown on failure. \r  ]]\r]\r
5249 [endsect]\r[section:overload2 ssl_stream::handshake (2 of 4 overloads)]\r
5250 Perform SSL handshaking. \r[heading Synopsis]\r```\rvoid\rhandshake(\r    handshake_type type,\r    boost::system::error_code& ec);\r```\r\r[heading Description]\r
5251 This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
5252 [heading Parameters]\r[table [[Name][Description]]\r  [[`type`][\r    
5253 The type of handshaking to be performed, i.e. as a client or as a server.\r  ]]\r  [[`ec`][\r    
5254 Set to indicate what error occurred, if any. \r  ]]\r]\r
5255 [endsect]\r[section:overload3 ssl_stream::handshake (3 of 4 overloads)]\r
5256 Perform SSL handshaking. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rvoid\rhandshake(\r    handshake_type type,\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
5257 This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
5258 [heading Parameters]\r[table [[Name][Description]]\r  [[`type`][\r    
5259 The type of handshaking to be performed, i.e. as a client or as a server.\r  ]]\r  [[`buffers`][\r    
5260 The buffered data to be reused for the handshake.\r  ]]\r]\r
5261 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
5262 Thrown on failure. \r  ]]\r]\r
5263 [endsect]\r[section:overload4 ssl_stream::handshake (4 of 4 overloads)]\r
5264 Perform SSL handshaking. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rvoid\rhandshake(\r    handshake_type type,\r    ConstBufferSequence const& buffers,\r    boost::system::error_code& ec);\r```\r\r[heading Description]\r
5265 This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
5266 [heading Parameters]\r[table [[Name][Description]]\r  [[`type`][\r    
5267 The type of handshaking to be performed, i.e. as a client or as a server.\r  ]]\r  [[`buffers`][\r    
5268 The buffered data to be reused for the handshake.\r  ]]\r  [[`ec`][\r    
5269 Set to indicate what error occurred, if any. \r  ]]\r]\r
5270 [endsect]\r[endsect]\r\r[section:impl_struct ssl_stream::impl_struct]\r[indexterm2 impl_struct..ssl_stream]\r
5271 Structure for use with deprecated impl\_type. \r[heading Synopsis]\r\r```\rusing impl_struct = typename ssl_stream_type::impl_struct;\r```\r\r[heading Description]\r[endsect]\r[section:native_handle ssl_stream::native_handle]\r[indexterm2 native_handle..ssl_stream]\r
5272 Get the underlying implementation in the native type. \r[heading Synopsis]\r```\rnative_handle_type\rnative_handle();\r```\r\r[heading Description]\r
5273 This function may be used to obtain the underlying implementation of the context. This is intended to allow access to context functionality that is not otherwise provided.
5274 [heading Example]
5275 The [link beast.ref.boost__beast__ssl_stream.native_handle `ssl_stream::native_handle()`] function returns a pointer of type `SSL*` that is suitable for passing to functions such as `SSL_get_verify_result` and `SSL_get_peer_certificate:` \r```\r  boost::beast::ssl_stream<net::ip::tcp::socket> ss{ioc, ctx};
5276
5277   // ... establish connection and perform handshake ...
5278
5279   if (X509* cert = SSL_get_peer_certificate(ss.native_handle()))
5280   {
5281     if (SSL_get_verify_result(ss.native_handle()) == X509_V_OK)
5282     {
5283       // ...
5284     }
5285   }
5286 ```\r
5287 [endsect]\r[section:native_handle_type ssl_stream::native_handle_type]\r[indexterm2 native_handle_type..ssl_stream]\r
5288 The native handle type of the SSL stream. \r[heading Synopsis]\r\r```\rusing native_handle_type = typename ssl_stream_type::native_handle_type;\r```\r\r[heading Description]\r[endsect]\r[section:next_layer ssl_stream::next_layer]\r[indexterm2 next_layer..ssl_stream]\r
5289 Get a reference to the next layer. ```\rnext_layer_type const &\r``[link beast.ref.boost__beast__ssl_stream.next_layer.overload1 next_layer]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.next_layer.overload1 more...]]``\r\rnext_layer_type&\r``[link beast.ref.boost__beast__ssl_stream.next_layer.overload2 next_layer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.next_layer.overload2 more...]]``\r```\r[section:overload1 ssl_stream::next_layer (1 of 2 overloads)]\r
5290 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type const &\rnext_layer() const;\r```\r\r[heading Description]\r
5291 This function returns a reference to the next layer in a stack of stream layers.
5292 [heading Remarks]\r
5293 The next layer is the wrapped stream and not the [link beast.ref.boost__beast__flat_stream `flat_stream`] used in the implementation.
5294 [heading Return Value]
5295 A reference to the next layer in the stack of stream layers. Ownership is not transferred to the caller. 
5296 [endsect]\r[section:overload2 ssl_stream::next_layer (2 of 2 overloads)]\r
5297 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type&\rnext_layer();\r```\r\r[heading Description]\r
5298 This function returns a reference to the next layer in a stack of stream layers.
5299 [heading Remarks]\r
5300 The next layer is the wrapped stream and not the [link beast.ref.boost__beast__flat_stream `flat_stream`] used in the implementation.
5301 [heading Return Value]
5302 A reference to the next layer in the stack of stream layers. Ownership is not transferred to the caller. 
5303 [endsect]\r[endsect]\r\r[section:next_layer_type ssl_stream::next_layer_type]\r[indexterm2 next_layer_type..ssl_stream]\r
5304 The type of the next layer. \r[heading Synopsis]\r\r```\rusing next_layer_type = typename ssl_stream_type::next_layer_type;\r```\r\r[heading Description]\r[endsect]\r[section:read_some ssl_stream::read_some]\r[indexterm2 read_some..ssl_stream]\r
5305 Read some data from the stream. ```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__ssl_stream.read_some.overload1 read_some]``(\r    MutableBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.read_some.overload1 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__ssl_stream.read_some.overload2 read_some]``(\r    MutableBufferSequence const& buffers,\r    boost::system::error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.read_some.overload2 more...]]``\r```\r[section:overload1 ssl_stream::read_some (1 of 2 overloads)]\r
5306 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers);\r```\r\r[heading Description]\r
5307 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
5308 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
5309 The buffers into which the data will be read.\r  ]]\r]\r
5310 [heading Return Value]
5311 The number of bytes read.
5312 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
5313 Thrown on failure.\r  ]]\r]\r
5314 [heading Remarks]\r
5315 The `read_some` operation may not read all of the requested number of bytes. Consider using the `net::read` function if you need to ensure that the requested amount of data is read before the blocking operation completes. 
5316 [endsect]\r[section:overload2 ssl_stream::read_some (2 of 2 overloads)]\r
5317 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers,\r    boost::system::error_code& ec);\r```\r\r[heading Description]\r
5318 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
5319 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
5320 The buffers into which the data will be read.\r  ]]\r  [[`ec`][\r    
5321 Set to indicate what error occurred, if any.\r  ]]\r]\r
5322 [heading Return Value]
5323 The number of bytes read. Returns 0 if an error occurred.
5324 [heading Remarks]\r
5325 The `read_some` operation may not read all of the requested number of bytes. Consider using the `net::read` function if you need to ensure that the requested amount of data is read before the blocking operation completes. 
5326 [endsect]\r[endsect]\r\r[section:set_verify_callback ssl_stream::set_verify_callback]\r[indexterm2 set_verify_callback..ssl_stream]\r
5327 Set the callback used to verify peer certificates. ```\rtemplate<\r    class VerifyCallback>\rvoid\r``[link beast.ref.boost__beast__ssl_stream.set_verify_callback.overload1 set_verify_callback]``(\r    VerifyCallback callback);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.set_verify_callback.overload1 more...]]``\r\rtemplate<\r    class VerifyCallback>\rvoid\r``[link beast.ref.boost__beast__ssl_stream.set_verify_callback.overload2 set_verify_callback]``(\r    VerifyCallback callback,\r    boost::system::error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.set_verify_callback.overload2 more...]]``\r```\r[section:overload1 ssl_stream::set_verify_callback (1 of 2 overloads)]\r
5328 Set the callback used to verify peer certificates. \r[heading Synopsis]\r```\rtemplate<\r    class VerifyCallback>\rvoid\rset_verify_callback(\r    VerifyCallback callback);\r```\r\r[heading Description]\r
5329 This function is used to specify a callback function that will be called by the implementation when it needs to verify a peer certificate.
5330 [heading Parameters]\r[table [[Name][Description]]\r  [[`callback`][\r    
5331 The function object to be used for verifying a certificate. The function signature of the handler must be: \r```\r   bool verify_callback(
5332     bool preverified, // True if the certificate passed pre-verification.
5333     verify_context& ctx // The peer certificate and other context.
5334   ); 
5335 ```\rThe return value of the callback is true if the certificate has passed verification, false otherwise.\r  ]]\r]\r
5336 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
5337 Thrown on failure.\r  ]]\r]\r
5338 [heading Remarks]\r
5339 Calls `SSL_set_verify`. 
5340 [endsect]\r[section:overload2 ssl_stream::set_verify_callback (2 of 2 overloads)]\r
5341 Set the callback used to verify peer certificates. \r[heading Synopsis]\r```\rtemplate<\r    class VerifyCallback>\rvoid\rset_verify_callback(\r    VerifyCallback callback,\r    boost::system::error_code& ec);\r```\r\r[heading Description]\r
5342 This function is used to specify a callback function that will be called by the implementation when it needs to verify a peer certificate.
5343 [heading Parameters]\r[table [[Name][Description]]\r  [[`callback`][\r    
5344 The function object to be used for verifying a certificate. The function signature of the handler must be: \r```\r   bool verify_callback(
5345     bool preverified, // True if the certificate passed pre-verification.
5346     net::verify_context& ctx // The peer certificate and other context.
5347   ); 
5348 ```\rThe return value of the callback is true if the certificate has passed verification, false otherwise.\r  ]]\r  [[`ec`][\r    
5349 Set to indicate what error occurred, if any.\r  ]]\r]\r
5350 [heading Remarks]\r
5351 Calls `SSL_set_verify`. 
5352 [endsect]\r[endsect]\r\r[section:set_verify_depth ssl_stream::set_verify_depth]\r[indexterm2 set_verify_depth..ssl_stream]\r
5353 Set the peer verification depth. ```\rvoid\r``[link beast.ref.boost__beast__ssl_stream.set_verify_depth.overload1 set_verify_depth]``(\r    int depth);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.set_verify_depth.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__ssl_stream.set_verify_depth.overload2 set_verify_depth]``(\r    int depth,\r    boost::system::error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.set_verify_depth.overload2 more...]]``\r```\r[section:overload1 ssl_stream::set_verify_depth (1 of 2 overloads)]\r
5354 Set the peer verification depth. \r[heading Synopsis]\r```\rvoid\rset_verify_depth(\r    int depth);\r```\r\r[heading Description]\r
5355 This function may be used to configure the maximum verification depth allowed by the stream.
5356 [heading Parameters]\r[table [[Name][Description]]\r  [[`depth`][\r    
5357 Maximum depth for the certificate chain verification that shall be allowed.\r  ]]\r]\r
5358 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
5359 Thrown on failure.\r  ]]\r]\r
5360 [heading Remarks]\r
5361 Calls `SSL_set_verify_depth`. 
5362 [endsect]\r[section:overload2 ssl_stream::set_verify_depth (2 of 2 overloads)]\r
5363 Set the peer verification depth. \r[heading Synopsis]\r```\rvoid\rset_verify_depth(\r    int depth,\r    boost::system::error_code& ec);\r```\r\r[heading Description]\r
5364 This function may be used to configure the maximum verification depth allowed by the stream.
5365 [heading Parameters]\r[table [[Name][Description]]\r  [[`depth`][\r    
5366 Maximum depth for the certificate chain verification that shall be allowed.\r  ]]\r  [[`ec`][\r    
5367 Set to indicate what error occurred, if any.\r  ]]\r]\r
5368 [heading Remarks]\r
5369 Calls `SSL_set_verify_depth`. 
5370 [endsect]\r[endsect]\r\r[section:set_verify_mode ssl_stream::set_verify_mode]\r[indexterm2 set_verify_mode..ssl_stream]\r
5371 Set the peer verification mode. ```\rvoid\r``[link beast.ref.boost__beast__ssl_stream.set_verify_mode.overload1 set_verify_mode]``(\r    net::ssl::verify_mode v);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.set_verify_mode.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__ssl_stream.set_verify_mode.overload2 set_verify_mode]``(\r    net::ssl::verify_mode v,\r    boost::system::error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.set_verify_mode.overload2 more...]]``\r```\r[section:overload1 ssl_stream::set_verify_mode (1 of 2 overloads)]\r
5372 Set the peer verification mode. \r[heading Synopsis]\r```\rvoid\rset_verify_mode(\r    net::ssl::verify_mode v);\r```\r\r[heading Description]\r
5373 This function may be used to configure the peer verification mode used by the stream. The new mode will override the mode inherited from the context.
5374 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
5375 A bitmask of peer verification modes.\r  ]]\r]\r
5376 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
5377 Thrown on failure.\r  ]]\r]\r
5378 [heading Remarks]\r
5379 Calls `SSL_set_verify`. 
5380 [endsect]\r[section:overload2 ssl_stream::set_verify_mode (2 of 2 overloads)]\r
5381 Set the peer verification mode. \r[heading Synopsis]\r```\rvoid\rset_verify_mode(\r    net::ssl::verify_mode v,\r    boost::system::error_code& ec);\r```\r\r[heading Description]\r
5382 This function may be used to configure the peer verification mode used by the stream. The new mode will override the mode inherited from the context.
5383 [heading Parameters]\r[table [[Name][Description]]\r  [[`v`][\r    
5384 A bitmask of peer verification modes. See `verify_mode` for available values.\r  ]]\r  [[`ec`][\r    
5385 Set to indicate what error occurred, if any.\r  ]]\r]\r
5386 [heading Remarks]\r
5387 Calls `SSL_set_verify`. 
5388 [endsect]\r[endsect]\r\r[section:shutdown ssl_stream::shutdown]\r[indexterm2 shutdown..ssl_stream]\r
5389 Shut down SSL on the stream. ```\rvoid\r``[link beast.ref.boost__beast__ssl_stream.shutdown.overload1 shutdown]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.shutdown.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__ssl_stream.shutdown.overload2 shutdown]``(\r    boost::system::error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.shutdown.overload2 more...]]``\r```\r[section:overload1 ssl_stream::shutdown (1 of 2 overloads)]\r
5390 Shut down SSL on the stream. \r[heading Synopsis]\r```\rvoid\rshutdown();\r```\r\r[heading Description]\r
5391 This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
5392 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
5393 Thrown on failure. \r  ]]\r]\r
5394 [endsect]\r[section:overload2 ssl_stream::shutdown (2 of 2 overloads)]\r
5395 Shut down SSL on the stream. \r[heading Synopsis]\r```\rvoid\rshutdown(\r    boost::system::error_code& ec);\r```\r\r[heading Description]\r
5396 This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
5397 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
5398 Set to indicate what error occurred, if any. \r  ]]\r]\r
5399 [endsect]\r[endsect]\r\r[section:ssl_stream ssl_stream::ssl_stream]\r[indexterm2 ssl_stream..ssl_stream]\r
5400 Construct a stream. \r[heading Synopsis]\r```\rtemplate<\r    class Arg>\rssl_stream(\r    Arg&& arg,\r    net::ssl::context& ctx);\r```\r\r[heading Description]\r
5401 This constructor creates a stream and initialises the underlying stream object.
5402 [heading Parameters]\r[table [[Name][Description]]\r  [[`arg`][\r    
5403 The argument to be passed to initialise the underlying stream.\r  ]]\r  [[`ctx`][\r    
5404 The SSL context to be used for the stream. \r  ]]\r]\r
5405 [endsect]\r[section:write_some ssl_stream::write_some]\r[indexterm2 write_some..ssl_stream]\r
5406 Write some data to the stream. ```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__ssl_stream.write_some.overload1 write_some]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.write_some.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__ssl_stream.write_some.overload2 write_some]``(\r    ConstBufferSequence const& buffers,\r    boost::system::error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__ssl_stream.write_some.overload2 more...]]``\r```\r[section:overload1 ssl_stream::write_some (1 of 2 overloads)]\r
5407 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
5408 This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
5409 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
5410 The data to be written.\r  ]]\r]\r
5411 [heading Return Value]
5412 The number of bytes written.
5413 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
5414 Thrown on failure.\r  ]]\r]\r
5415 [heading Remarks]\r
5416 The `write_some` operation may not transmit all of the data to the peer. Consider using the `net::write` function if you need to ensure that all data is written before the blocking operation completes. 
5417 [endsect]\r[section:overload2 ssl_stream::write_some (2 of 2 overloads)]\r
5418 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers,\r    boost::system::error_code& ec);\r```\r\r[heading Description]\r
5419 This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
5420 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
5421 The data to be written to the stream.\r  ]]\r  [[`ec`][\r    
5422 Set to indicate what error occurred, if any.\r  ]]\r]\r
5423 [heading Return Value]
5424 The number of bytes written. Returns 0 if an error occurred.
5425 [heading Remarks]\r
5426 The `write_some` operation may not transmit all of the data to the peer. Consider using the `net::write` function if you need to ensure that all data is written before the blocking operation completes. 
5427 [endsect]\r[endsect]\r\r\r\r\rConvenience header [include_file boost/beast/ssl.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__stable_async_base stable_async_base]\r
5428 Base class to provide completion handler boilerplate for composed operations. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/async_base.hpp]\r\r\r\r```\rtemplate<\r    class __Handler__,\r    class __Executor1__,\r    class __Allocator__ = std::allocator<void>>\rclass stable_async_base :\r    public async_base< Handler, Executor1, Allocator >\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.allocator_type [*allocator_type]]]\r    [\r      The type of allocator associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.executor_type [*executor_type]]]\r    [\r      The type of executor associated with this object. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.complete [*complete]]]\r    [\r      Invoke the final completion handler, maybe using post. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.complete_now [*complete_now]]]\r    [\r      Invoke the final completion handler. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.get_allocator [*get_allocator]]]\r    [\r      Returns the allocator associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.get_executor [*get_executor]]]\r    [\r      Returns the executor associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.handler [*handler]]]\r    [\r      Returns the handler associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.release_handler [*release_handler]]]\r    [\r      Returns ownership of the handler associated with this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.stable_async_base [*stable_async_base]]]\r    [\r      Constructor. \r\r      Move Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.stable_async_base_dtor_ [*~stable_async_base]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r[heading Friends]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__stable_async_base.allocate_stable [*allocate_stable]]]\r    [\r      Allocate a temporary object to hold operation state. \r    ]\r  ]\r]\r\r[heading Description]\r
5429 A function object submitted to intermediate initiating functions during a composed operation may derive from this type to inherit all of the boilerplate to forward the executor, allocator, and legacy customization points associated with the completion handler invoked at the end of the composed operation.
5430 The composed operation must be typical; that is, associated with one executor of an I/O object, and invoking a caller-provided completion handler when the operation is finished. Classes derived from [link beast.ref.boost__beast__async_base `async_base`] will acquire these properties:
5431
5432 * Ownership of the final completion handler provided upon construction.
5433
5434
5435 * If the final handler has an associated allocator, this allocator will be propagated to the composed operation subclass. Otherwise, the associated allocator will be the type specified in the allocator template parameter, or the default of `std::allocator<void>` if the parameter is omitted.
5436
5437
5438 * If the final handler has an associated executor, then it will be used as the executor associated with the composed operation. Otherwise, the specified `Executor1` will be the type of executor associated with the composed operation.
5439
5440
5441 * An instance of `net::executor_work_guard` for the instance of `Executor1` shall be maintained until either the final handler is invoked, or the operation base is destroyed, whichever comes first.
5442
5443
5444 * Calls to the legacy customization points `asio_handler_invoke`, `asio_handler_allocate`, `asio_handler_deallocate`, and `asio_handler_is_continuation`, which use argument-dependent lookup, will be forwarded to the legacy customization points associated with the handler.
5445
5446 Data members of composed operations implemented as completion handlers do not have stable addresses, as the composed operation object is move constructed upon each call to an initiating function. For most operations this is not a problem. For complex operations requiring stable temporary storage, the class [link beast.ref.boost__beast__stable_async_base `stable_async_base`] is provided which offers additional functionality:
5447
5448 * The free function [link beast.ref.boost__beast__allocate_stable `allocate_stable`] may be used to allocate one or more temporary objects associated with the composed operation.
5449
5450
5451 * Memory for stable temporary objects is allocated using the allocator associated with the composed operation.
5452
5453
5454 * Stable temporary objects are automatically destroyed, and the memory freed using the associated allocator, either before the final completion handler is invoked (a Networking requirement) or when the composed operation is destroyed, whichever occurs first.
5455
5456 [heading Example]
5457
5458 The following code demonstrates how [link beast.ref.boost__beast__stable_async_base `stable_async_base`] may be be used to assist authoring an asynchronous initiating function, by providing all of the boilerplate to manage the final completion handler in a way that maintains the allocator and executor associations. Furthermore, the operation shown allocates temporary memory using [link beast.ref.boost__beast__allocate_stable `allocate_stable`] for the timer and message, whose addresses must not change between intermediate operations:
5459 \r```\r  // Asynchronously send a message multiple times, once per second
5460   template <class AsyncWriteStream, class T, class WriteHandler>
5461   auto async_write_messages(
5462       AsyncWriteStream& stream,
5463       T const& message,
5464       std::size_t repeat_count,
5465       WriteHandler&& handler) ->
5466           typename net::async_result<
5467               typename std::decay<WriteHandler>::type,
5468               void(error_code)>::return_type
5469   {
5470       using handler_type = typename net::async_completion<WriteHandler, void(error_code)>::completion_handler_type;
5471       using base_type = stable_async_base<handler_type, typename AsyncWriteStream::executor_type>;
5472
5473       struct op : base_type, boost::asio::coroutine
5474       {
5475           // This object must have a stable address
5476           struct temporary_data
5477           {
5478               // Although std::string is in theory movable, most implementations
5479               // use a "small buffer optimization" which means that we might
5480               // be submitting a buffer to the write operation and then
5481               // moving the string, invalidating the buffer. To prevent
5482               // undefined behavior we store the string object itself at
5483               // a stable location.
5484               std::string const message;
5485
5486               net::steady_timer timer;
5487
5488               temporary_data(std::string message_, net::io_context& ctx)
5489                   : message(std::move(message_))
5490                   , timer(ctx)
5491               {
5492               }
5493           };
5494
5495           AsyncWriteStream& stream_;
5496           std::size_t repeats_;
5497           temporary_data& data_;
5498
5499           op(AsyncWriteStream& stream, std::size_t repeats, std::string message, handler_type& handler)
5500               : base_type(std::move(handler), stream.get_executor())
5501               , stream_(stream)
5502               , repeats_(repeats)
5503               , data_(allocate_stable<temporary_data>(*this, std::move(message), stream.get_executor().context()))
5504           {
5505               (*this)(); // start the operation
5506           }
5507
5508           // Including this file provides the keywords for macro-based coroutines
5509           #include <boost/asio/yield.hpp>
5510
5511           void operator()(error_code ec = {}, std::size_t = 0)
5512           {
5513               reenter(*this)
5514               {
5515                   // If repeats starts at 0 then we must complete immediately. But
5516                   // we can't call the final handler from inside the initiating
5517                   // function, so we post our intermediate handler first. We use
5518                   // net::async_write with an empty buffer instead of calling
5519                   // net::post to avoid an extra function template instantiation, to
5520                   // keep compile times lower and make the resulting executable smaller.
5521                   yield net::async_write(stream_, net::const_buffer{}, std::move(*this));
5522                   while(! ec && repeats_-- > 0)
5523                   {
5524                       // Send the string. We construct a `const_buffer` here to guarantee
5525                       // that we do not create an additional function template instantation
5526                       // of net::async_write, since we already instantiated it above for
5527                       // net::const_buffer.
5528
5529                       yield net::async_write(stream_,
5530                           net::const_buffer(net::buffer(data_.message)), std::move(*this));
5531                       if(ec)
5532                           break;
5533
5534                       // Set the timer and wait
5535                       data_.timer.expires_after(std::chrono::seconds(1));
5536                       yield data_.timer.async_wait(std::move(*this));
5537                   }
5538               }
5539
5540               // The base class destroys the temporary data automatically,
5541               // before invoking the final completion handler
5542               this->complete_now(ec);
5543           }
5544
5545           // Including this file undefines the macros for the coroutines
5546           #include <boost/asio/unyield.hpp>
5547       };
5548
5549       net::async_completion<WriteHandler, void(error_code)> completion(handler);
5550       std::ostringstream os;
5551       os << message;
5552       op(stream, repeat_count, os.str(), completion.completion_handler);
5553       return completion.result.get();
5554   }
5555 ```\r
5556 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Handler`][\r    
5557 The type of the completion handler to store. This type must meet the requirements of ['CompletionHandler].\r  ]]\r  [[`Executor1`][\r    
5558 The type of the executor used when the handler has no associated executor. An instance of this type must be provided upon construction. The implementation will maintain an executor work guard and a copy of this instance.\r  ]]\r  [[`Allocator`][\r    
5559 The allocator type to use if the handler does not have an associated allocator. If this parameter is omitted, then `std::allocator<void>` will be used. If the specified allocator is not default constructible, an instance of the type must be provided upon construction.\r  ]]\r]\r
5560 [heading See Also]\r
5561 [link beast.ref.boost__beast__stable_async_base.allocate_stable `stable_async_base::allocate_stable`], [link beast.ref.boost__beast__async_base `async_base`] 
5562 [section:allocate_stable stable_async_base::allocate_stable]\r[indexterm2 allocate_stable..stable_async_base]\r
5563 Allocate a temporary object to hold operation state. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/async_base.hpp]\r\r\r```\rtemplate<\r    class State,\r    class __Handler__,\r    class Executor1_,\r    class Allocator_,\r    class... Args>\rfriend State&\rallocate_stable(\r    stable_async_base< Handler_, Executor1_, Allocator_ >& base,\r    Args&&... args);\r```\r\r[heading Description]\r
5564 The object will be destroyed just before the completion handler is invoked, or when the operation base is destroyed. \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:allocator_type stable_async_base::allocator_type]\r(Inherited from `async_base`)\r\r[indexterm2 allocator_type..stable_async_base]\r
5565 The type of allocator associated with this object. \r[heading Synopsis]\r\r```\rusing allocator_type = net::associated_allocator_t< Handler, Allocator >;\r```\r\r[heading Description]\r
5566 If a class derived from [link beast.ref.boost__beast__async_base `async_base`] is a completion handler, then the associated allocator of the derived class will be this type. [endsect]\r[section:complete stable_async_base::complete]\r(Inherited from `async_base`)\r\r[indexterm2 complete..stable_async_base]\r
5567 Invoke the final completion handler, maybe using post. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rvoid\rcomplete(\r    bool is_continuation,\r    Args&&... args);\r```\r\r[heading Description]\r
5568 This invokes the final completion handler with the specified arguments forwarded. It is undefined to call either of [link beast.ref.boost__beast__async_base.complete `async_base::complete`] or [link beast.ref.boost__beast__async_base.complete_now `async_base::complete_now`] more than once.
5569 Any temporary objects allocated with [link beast.ref.boost__beast__allocate_stable `allocate_stable`] will be automatically destroyed before the final completion handler is invoked.
5570 [heading Parameters]\r[table [[Name][Description]]\r  [[`is_continuation`][\r    
5571 If this value is `false`, then the handler will be submitted to the executor using `net::post`. Otherwise the handler will be invoked as if by calling [link beast.ref.boost__beast__async_base.complete_now `async_base::complete_now`].\r  ]]\r  [[`args`][\r    
5572 A list of optional parameters to invoke the handler with. The completion handler must be invocable with the parameter list, or else a compilation error will result. \r  ]]\r]\r
5573 [endsect]\r[section:complete_now stable_async_base::complete_now]\r(Inherited from `async_base`)\r\r[indexterm2 complete_now..stable_async_base]\r
5574 Invoke the final completion handler. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rvoid\rcomplete_now(\r    Args&&... args);\r```\r\r[heading Description]\r
5575 This invokes the final completion handler with the specified arguments forwarded. It is undefined to call either of [link beast.ref.boost__beast__async_base.complete `async_base::complete`] or [link beast.ref.boost__beast__async_base.complete_now `async_base::complete_now`] more than once.
5576 Any temporary objects allocated with [link beast.ref.boost__beast__allocate_stable `allocate_stable`] will be automatically destroyed before the final completion handler is invoked.
5577 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
5578 A list of optional parameters to invoke the handler with. The completion handler must be invocable with the parameter list, or else a compilation error will result. \r  ]]\r]\r
5579 [endsect]\r[section:executor_type stable_async_base::executor_type]\r(Inherited from `async_base`)\r\r[indexterm2 executor_type..stable_async_base]\r
5580 The type of executor associated with this object. \r[heading Synopsis]\r\r```\rusing executor_type = net::associated_executor_t< Handler, Executor1 >;\r```\r\r[heading Description]\r
5581 If a class derived from [link beast.ref.boost__beast__async_base `async_base`] is a completion handler, then the associated executor of the derived class will be this type. [endsect]\r[section:get_allocator stable_async_base::get_allocator]\r(Inherited from `async_base`)\r\r[indexterm2 get_allocator..stable_async_base]\r
5582 Returns the allocator associated with this object. \r[heading Synopsis]\r```\rallocator_type\rget_allocator() const;\r```\r\r[heading Description]\r
5583 If a class derived from [link beast.ref.boost__beast__async_base `async_base`] is a completion handler, then the object returned from this function will be used as the associated allocator of the derived class. [endsect]\r[section:get_executor stable_async_base::get_executor]\r(Inherited from `async_base`)\r\r[indexterm2 get_executor..stable_async_base]\r
5584 Returns the executor associated with this object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor() const;\r```\r\r[heading Description]\r
5585 If a class derived from [link beast.ref.boost__beast__async_base `async_base`] is a completion handler, then the object returned from this function will be used as the associated executor of the derived class. [endsect]\r[section:handler stable_async_base::handler]\r(Inherited from `async_base`)\r\r[indexterm2 handler..stable_async_base]\r
5586 Returns the handler associated with this object. \r[heading Synopsis]\r```\rHandler const &\rhandler() const;\r```\r\r[heading Description]\r[endsect]\r[section:release_handler stable_async_base::release_handler]\r(Inherited from `async_base`)\r\r[indexterm2 release_handler..stable_async_base]\r
5587 Returns ownership of the handler associated with this object. \r[heading Synopsis]\r```\rHandler\rrelease_handler();\r```\r\r[heading Description]\r
5588 This function is used to transfer ownership of the handler to the caller, by move-construction. After the move, the only valid operations on the base object are move construction and destruction. [endsect]\r[section:stable_async_base stable_async_base::stable_async_base]\r[indexterm2 stable_async_base..stable_async_base]\r
5589 Constructor. ```\rtemplate<\r    class __Handler__>\r``[link beast.ref.boost__beast__stable_async_base.stable_async_base.overload1 stable_async_base]``(\r    Handler&& handler,\r    Executor1 const& ex1,\r    Allocator const& alloc = Allocator());\r  ``[''''&raquo;''' [link beast.ref.boost__beast__stable_async_base.stable_async_base.overload1 more...]]``\r\r```\r
5590 Move Constructor. ```\r``[link beast.ref.boost__beast__stable_async_base.stable_async_base.overload2 stable_async_base]``(\r    stable_async_base&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__stable_async_base.stable_async_base.overload2 more...]]``\r```\r[section:overload1 stable_async_base::stable_async_base (1 of 2 overloads)]\r
5591 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class __Handler__>\rstable_async_base(\r    Handler&& handler,\r    Executor1 const& ex1,\r    Allocator const& alloc = Allocator());\r```\r\r[heading Description]\r
5592 [heading Parameters]\r[table [[Name][Description]]\r  [[`handler`][\r    
5593 The final completion handler. The type of this object must meet the requirements of ['CompletionHandler]. The implementation takes ownership of the handler by performing a decay-copy.\r  ]]\r  [[`ex1`][\r    
5594 The executor associated with the implied I/O object target of the operation. The implementation shall maintain an executor work guard for the lifetime of the operation, or until the final completion handler is invoked, whichever is shorter.\r  ]]\r  [[`alloc`][\r    
5595 The allocator to be associated with objects derived from this class. If `Allocator` is default-constructible, this parameter is optional and may be omitted. \r  ]]\r]\r
5596 [endsect]\r[section:overload2 stable_async_base::stable_async_base (2 of 2 overloads)]\r
5597 Move Constructor. \r[heading Synopsis]\r```\rstable_async_base(\r    stable_async_base&& other);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:stable_async_base_dtor_ stable_async_base::~stable_async_base]\r[indexterm2 ~stable_async_base..stable_async_base]\r
5598 Destructor. \r[heading Synopsis]\r```\r~stable_async_base();\r```\r\r[heading Description]\r
5599 If the completion handler was not invoked, then any state objects allocated with [link beast.ref.boost__beast__stable_async_base.allocate_stable `stable_async_base::allocate_stable`] will be destroyed here. [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__static_buffer static_buffer]\r
5600 A dynamic buffer providing a fixed size, circular buffer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_buffer.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N>\rclass static_buffer :\r    public static_buffer_base\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_buffer.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_buffer.base [*base]]]\r    [\r      Returns the static_buffer_base portion of this object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.capacity [*capacity]]]\r    [\r      Return the maximum sum of input and output sizes that can be held without an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.clear [*clear]]]\r    [\r      Clear the readable and writable bytes to zero. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.max_size [*max_size]]]\r    [\r      Return the maximum sum of the input and output sequence sizes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.operator_eq_ [*operator=]]]\r    [\r      Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer.static_buffer [*static_buffer]]]\r    [\r      Constructor. \r    ]\r  ]\r]\r\r[heading Description]\r
5601 A dynamic buffer encapsulates memory storage that may be automatically resized as required, where the memory is divided into two regions: readable bytes followed by writable bytes. These memory regions are internal to the dynamic buffer, but direct access to the elements is provided to permit them to be efficiently used with I/O operations.
5602 Objects of this type meet the requirements of ['DynamicBuffer] and have the following additional properties:
5603
5604 * A mutable buffer sequence representing the readable bytes is returned by [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] when `this` is non-const.
5605
5606
5607 * Buffer sequences representing the readable and writable bytes, returned by [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] and [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`], may have length up to two.
5608
5609
5610 * All operations execute in constant time.
5611
5612 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`N`][\r    
5613 The number of bytes in the internal buffer.\r  ]]\r]\r
5614 [heading Remarks]\r
5615 To reduce the number of template instantiations when passing objects of this type in a deduced context, the signature of the receiving function should use [link beast.ref.boost__beast__static_buffer_base `static_buffer_base`] instead.
5616 [heading See Also]\r
5617 [link beast.ref.boost__beast__static_buffer_base `static_buffer_base`] 
5618 [section:base static_buffer::base]\r[indexterm2 base..static_buffer]\r
5619 Returns the [link beast.ref.boost__beast__static_buffer_base `static_buffer_base`] portion of this object. ```\rstatic_buffer_base&\r``[link beast.ref.boost__beast__static_buffer.base.overload1 base]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_buffer.base.overload1 more...]]``\r\rstatic_buffer_base const &\r``[link beast.ref.boost__beast__static_buffer.base.overload2 base]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_buffer.base.overload2 more...]]``\r```\r[section:overload1 static_buffer::base (1 of 2 overloads)]\r
5620 Returns the [link beast.ref.boost__beast__static_buffer_base `static_buffer_base`] portion of this object. \r[heading Synopsis]\r```\rstatic_buffer_base&\rbase();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_buffer::base (2 of 2 overloads)]\r
5621 Returns the [link beast.ref.boost__beast__static_buffer_base `static_buffer_base`] portion of this object. \r[heading Synopsis]\r```\rstatic_buffer_base const &\rbase() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:capacity static_buffer::capacity]\r[indexterm2 capacity..static_buffer]\r
5622 Return the maximum sum of input and output sizes that can be held without an allocation. \r[heading Synopsis]\r```\rstd::size_t constexpr\rcapacity() const;\r```\r\r[heading Description]\r[endsect]\r[section:cdata static_buffer::cdata]\r[indexterm2 cdata..static_buffer]\r
5623 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rcdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:clear static_buffer::clear]\r[indexterm2 clear..static_buffer]\r
5624 Clear the readable and writable bytes to zero. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
5625 This function causes the readable and writable bytes to become empty. The capacity is not changed.
5626 Buffer sequences previously obtained using [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] or [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`] become invalid.
5627 [heading Exception Safety]
5628
5629 No-throw guarantee. [endsect]\r[section:commit static_buffer::commit]\r[indexterm2 commit..static_buffer]\r
5630 Append writable bytes to the readable bytes. \r[heading Synopsis]\r```\rvoid\rcommit(\r    std::size_t n);\r```\r\r[heading Description]\r
5631 Appends n bytes from the start of the writable bytes to the end of the readable bytes. The remainder of the writable bytes are discarded. If n is greater than the number of writable bytes, all writable bytes are appended to the readable bytes.
5632 All buffers sequences previously obtained using [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] or [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`] are invalidated.
5633 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
5634 The number of bytes to append. If this number is greater than the number of writable bytes, all writable bytes are appended.\r  ]]\r]\r
5635 [heading Exception Safety]
5636
5637 No-throw guarantee. [endsect]\r[section:const_buffers_type static_buffer::const_buffers_type]\r[indexterm2 const_buffers_type..static_buffer]\r
5638 The ConstBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing const_buffers_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:consume static_buffer::consume]\r[indexterm2 consume..static_buffer]\r
5639 Remove bytes from beginning of the readable bytes. \r[heading Synopsis]\r```\rvoid\rconsume(\r    std::size_t n);\r```\r\r[heading Description]\r
5640 Removes n bytes from the beginning of the readable bytes.
5641 All buffers sequences previously obtained using [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] or [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`] are invalidated.
5642 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
5643 The number of bytes to remove. If this number is greater than the number of readable bytes, all readable bytes are removed.\r  ]]\r]\r
5644 [heading Exception Safety]
5645
5646 No-throw guarantee. [endsect]\r[section:data static_buffer::data]\r[indexterm2 data..static_buffer]\r
5647 Returns a constant buffer sequence representing the readable bytes. ```\rconst_buffers_type\r``[link beast.ref.boost__beast__static_buffer.data.overload1 data]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_buffer.data.overload1 more...]]``\r\r```\r
5648 Returns a mutable buffer sequence representing the readable bytes. ```\rmutable_data_type\r``[link beast.ref.boost__beast__static_buffer.data.overload2 data]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_buffer.data.overload2 more...]]``\r```\r[section:overload1 static_buffer::data (1 of 2 overloads)]\r
5649 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_buffer::data (2 of 2 overloads)]\r
5650 Returns a mutable buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rmutable_data_type\rdata();\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:max_size static_buffer::max_size]\r[indexterm2 max_size..static_buffer]\r
5651 Return the maximum sum of the input and output sequence sizes. \r[heading Synopsis]\r```\rstd::size_t constexpr\rmax_size() const;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_buffers_type static_buffer::mutable_buffers_type]\r[indexterm2 mutable_buffers_type..static_buffer]\r
5652 The MutableBufferSequence used to represent the writable bytes. \r[heading Synopsis]\r\r```\rusing mutable_buffers_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_data_type static_buffer::mutable_data_type]\r[indexterm2 mutable_data_type..static_buffer]\r
5653 The MutableBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing mutable_data_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ static_buffer::operator=]\r[indexterm2 operator=..static_buffer]\r
5654 Assignment. \r[heading Synopsis]\r```\rstatic_buffer&\roperator=(\r    static_buffer const&);\r```\r\r[heading Description]\r[endsect]\r[section:prepare static_buffer::prepare]\r[indexterm2 prepare..static_buffer]\r
5655 Returns a mutable buffer sequence representing writable bytes. \r[heading Synopsis]\r```\rmutable_buffers_type\rprepare(\r    std::size_t n);\r```\r\r[heading Description]\r
5656 Returns a mutable buffer sequence representing the writable bytes containing exactly `n` bytes of storage. Memory may be reallocated as needed.
5657 All buffers sequences previously obtained using [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] or [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`] are invalidated.
5658 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
5659 The desired number of bytes in the returned buffer sequence.\r  ]]\r]\r
5660 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
5661 if `size() + n` exceeds `max_size()`.\r  ]]\r]\r
5662 [heading Exception Safety]
5663
5664 Strong guarantee. [endsect]\r[section:size static_buffer::size]\r[indexterm2 size..static_buffer]\r
5665 Returns the number of readable bytes. \r[heading Synopsis]\r```\rstd::size_t\rsize() const;\r```\r\r[heading Description]\r[endsect]\r[section:static_buffer static_buffer::static_buffer]\r[indexterm2 static_buffer..static_buffer]\r
5666 Constructor. ```\r``[link beast.ref.boost__beast__static_buffer.static_buffer.overload1 static_buffer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_buffer.static_buffer.overload1 more...]]``\r\r``[link beast.ref.boost__beast__static_buffer.static_buffer.overload2 static_buffer]``(\r    static_buffer const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_buffer.static_buffer.overload2 more...]]``\r```\r[section:overload1 static_buffer::static_buffer (1 of 2 overloads)]\r
5667 Constructor. \r[heading Synopsis]\r```\rstatic_buffer();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_buffer::static_buffer (2 of 2 overloads)]\r
5668 Constructor. \r[heading Synopsis]\r```\rstatic_buffer(\r    static_buffer const&);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__static_buffer_base static_buffer_base]\r
5669 A dynamic buffer providing a fixed size, circular buffer. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_buffer.hpp]\r\r\r\r```\rclass static_buffer_base\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.const_buffers_type [*const_buffers_type]]]\r    [\r      The ConstBufferSequence used to represent the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.mutable_buffers_type [*mutable_buffers_type]]]\r    [\r      The MutableBufferSequence used to represent the writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.mutable_data_type [*mutable_data_type]]]\r    [\r      The MutableBufferSequence used to represent the readable bytes. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.capacity [*capacity]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.cdata [*cdata]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.clear [*clear]]]\r    [\r      Clear the readable and writable bytes to zero. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.commit [*commit]]]\r    [\r      Append writable bytes to the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.consume [*consume]]]\r    [\r      Remove bytes from beginning of the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.data [*data]]]\r    [\r      Returns a constant buffer sequence representing the readable bytes. \r\r      Returns a mutable buffer sequence representing the readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.max_size [*max_size]]]\r    [\r      Return the maximum number of bytes, both readable and writable, that can ever be held. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.prepare [*prepare]]]\r    [\r      Returns a mutable buffer sequence representing writable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.size [*size]]]\r    [\r      Returns the number of readable bytes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_buffer_base.static_buffer_base [*static_buffer_base]]]\r    [\r      Constructor. \r    ]\r  ]\r]\r\r[heading Description]\r
5670 A dynamic buffer encapsulates memory storage that may be automatically resized as required, where the memory is divided into two regions: readable bytes followed by writable bytes. These memory regions are internal to the dynamic buffer, but direct access to the elements is provided to permit them to be efficiently used with I/O operations.
5671 Objects of this type meet the requirements of ['DynamicBuffer] and have the following additional properties:
5672
5673 * A mutable buffer sequence representing the readable bytes is returned by [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] when `this` is non-const.
5674
5675
5676 * Buffer sequences representing the readable and writable bytes, returned by [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] and [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`], may have length up to two.
5677
5678
5679 * All operations execute in constant time.
5680
5681
5682 * Ownership of the underlying storage belongs to the derived class.
5683
5684 [heading Remarks]\r
5685 Variables are usually declared using the template class [link beast.ref.boost__beast__static_buffer `static_buffer`]; however, to reduce the number of template instantiations, objects should be passed `static_buffer_base&`.
5686 [heading See Also]\r
5687 [link beast.ref.boost__beast__static_buffer `static_buffer`] 
5688 [section:capacity static_buffer_base::capacity]\r[indexterm2 capacity..static_buffer_base]\r
5689 Return the maximum number of bytes, both readable and writable, that can be held without requiring an allocation. \r[heading Synopsis]\r```\rstd::size_t\rcapacity() const;\r```\r\r[heading Description]\r[endsect]\r[section:cdata static_buffer_base::cdata]\r[indexterm2 cdata..static_buffer_base]\r
5690 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rcdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:clear static_buffer_base::clear]\r[indexterm2 clear..static_buffer_base]\r
5691 Clear the readable and writable bytes to zero. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
5692 This function causes the readable and writable bytes to become empty. The capacity is not changed.
5693 Buffer sequences previously obtained using [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] or [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`] become invalid.
5694 [heading Exception Safety]
5695
5696 No-throw guarantee. [endsect]\r[section:commit static_buffer_base::commit]\r[indexterm2 commit..static_buffer_base]\r
5697 Append writable bytes to the readable bytes. \r[heading Synopsis]\r```\rvoid\rcommit(\r    std::size_t n);\r```\r\r[heading Description]\r
5698 Appends n bytes from the start of the writable bytes to the end of the readable bytes. The remainder of the writable bytes are discarded. If n is greater than the number of writable bytes, all writable bytes are appended to the readable bytes.
5699 All buffers sequences previously obtained using [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] or [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`] are invalidated.
5700 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
5701 The number of bytes to append. If this number is greater than the number of writable bytes, all writable bytes are appended.\r  ]]\r]\r
5702 [heading Exception Safety]
5703
5704 No-throw guarantee. [endsect]\r[section:const_buffers_type static_buffer_base::const_buffers_type]\r[indexterm2 const_buffers_type..static_buffer_base]\r
5705 The ConstBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing const_buffers_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:consume static_buffer_base::consume]\r[indexterm2 consume..static_buffer_base]\r
5706 Remove bytes from beginning of the readable bytes. \r[heading Synopsis]\r```\rvoid\rconsume(\r    std::size_t n);\r```\r\r[heading Description]\r
5707 Removes n bytes from the beginning of the readable bytes.
5708 All buffers sequences previously obtained using [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] or [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`] are invalidated.
5709 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
5710 The number of bytes to remove. If this number is greater than the number of readable bytes, all readable bytes are removed.\r  ]]\r]\r
5711 [heading Exception Safety]
5712
5713 No-throw guarantee. [endsect]\r[section:data static_buffer_base::data]\r[indexterm2 data..static_buffer_base]\r
5714 Returns a constant buffer sequence representing the readable bytes. ```\rconst_buffers_type\r``[link beast.ref.boost__beast__static_buffer_base.data.overload1 data]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_buffer_base.data.overload1 more...]]``\r\r```\r
5715 Returns a mutable buffer sequence representing the readable bytes. ```\rmutable_data_type\r``[link beast.ref.boost__beast__static_buffer_base.data.overload2 data]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_buffer_base.data.overload2 more...]]``\r```\r[section:overload1 static_buffer_base::data (1 of 2 overloads)]\r
5716 Returns a constant buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rconst_buffers_type\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_buffer_base::data (2 of 2 overloads)]\r
5717 Returns a mutable buffer sequence representing the readable bytes. \r[heading Synopsis]\r```\rmutable_data_type\rdata();\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:max_size static_buffer_base::max_size]\r[indexterm2 max_size..static_buffer_base]\r
5718 Return the maximum number of bytes, both readable and writable, that can ever be held. \r[heading Synopsis]\r```\rstd::size_t\rmax_size() const;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_buffers_type static_buffer_base::mutable_buffers_type]\r[indexterm2 mutable_buffers_type..static_buffer_base]\r
5719 The MutableBufferSequence used to represent the writable bytes. \r[heading Synopsis]\r\r```\rusing mutable_buffers_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:mutable_data_type static_buffer_base::mutable_data_type]\r[indexterm2 mutable_data_type..static_buffer_base]\r
5720 The MutableBufferSequence used to represent the readable bytes. \r[heading Synopsis]\r\r```\rusing mutable_data_type = ``['implementation-defined]``;\r```\r\r[heading Description]\r[endsect]\r[section:prepare static_buffer_base::prepare]\r[indexterm2 prepare..static_buffer_base]\r
5721 Returns a mutable buffer sequence representing writable bytes. \r[heading Synopsis]\r```\rmutable_buffers_type\rprepare(\r    std::size_t n);\r```\r\r[heading Description]\r
5722 Returns a mutable buffer sequence representing the writable bytes containing exactly `n` bytes of storage. Memory may be reallocated as needed.
5723 All buffers sequences previously obtained using [link beast.ref.boost__beast__static_buffer.data `static_buffer::data`] or [link beast.ref.boost__beast__static_buffer.prepare `static_buffer::prepare`] are invalidated.
5724 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
5725 The desired number of bytes in the returned buffer sequence.\r  ]]\r]\r
5726 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`std::length_error`][\r    
5727 if `size() + n` exceeds `max_size()`.\r  ]]\r]\r
5728 [heading Exception Safety]
5729
5730 Strong guarantee. [endsect]\r[section:size static_buffer_base::size]\r[indexterm2 size..static_buffer_base]\r
5731 Returns the number of readable bytes. \r[heading Synopsis]\r```\rstd::size_t\rsize() const;\r```\r\r[heading Description]\r[endsect]\r[section:static_buffer_base static_buffer_base::static_buffer_base]\r[indexterm2 static_buffer_base..static_buffer_base]\r
5732 Constructor. \r[heading Synopsis]\r```\rstatic_buffer_base(\r    void* p,\r    std::size_t size);\r```\r\r[heading Description]\r
5733 This creates a dynamic buffer using the provided storage area.
5734 [heading Parameters]\r[table [[Name][Description]]\r  [[`p`][\r    
5735 A pointer to valid storage of at least `n` bytes.\r  ]]\r  [[`size`][\r    
5736 The number of valid bytes pointed to by `p`. \r  ]]\r]\r
5737 [endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__static_string static_string]\r
5738 A modifiable string with a fixed-size storage area. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT = char,\r    class Traits = std::char_traits<CharT>>\rclass static_string\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.const_iterator [*const_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_pointer [*const_pointer]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_reference [*const_reference]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_reverse_iterator [*const_reverse_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.difference_type [*difference_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.iterator [*iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.pointer [*pointer]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reference [*reference]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reverse_iterator [*reverse_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.size_type [*size_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.string_view_type [*string_view_type]]]\r    [\r      The type of string_view returned by the interface. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.traits_type [*traits_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.value_type [*value_type]]]\r    [\r      \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.append [*append]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.assign [*assign]]]\r    [\r      Assign count copies of ch. \r\r      Assign from another static_string \r\r      Assign count characterss starting at npos from other. \r\r      Assign the first count characters of s, including nulls. \r\r      Assign a null terminated string. \r\r      Assign from an iterator range of characters. \r\r      Assign from any object convertible to string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.at [*at]]]\r    [\r      Access specified character with bounds checking. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.back [*back]]]\r    [\r      Accesses the last character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.begin [*begin]]]\r    [\r      Returns an iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.c_str [*c_str]]]\r    [\r      Returns a non-modifiable standard C character array version of the string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.capacity [*capacity]]]\r    [\r      Returns the number of characters that can be held in currently allocated storage. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.cbegin [*cbegin]]]\r    [\r      Returns an iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.cend [*cend]]]\r    [\r      Returns an iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.clear [*clear]]]\r    [\r      Clears the contents. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.compare [*compare]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.copy [*copy]]]\r    [\r      Copy a substring (pos, pos+count) to character string pointed to by dest. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.crbegin [*crbegin]]]\r    [\r      Returns a reverse iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.crend [*crend]]]\r    [\r      Returns a reverse iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.data [*data]]]\r    [\r      Returns a pointer to the first character of a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.empty [*empty]]]\r    [\r      Returns true if the string is empty. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.end [*end]]]\r    [\r      Returns an iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.erase [*erase]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.front [*front]]]\r    [\r      Accesses the first character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.insert [*insert]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.length [*length]]]\r    [\r      Returns the number of characters, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.max_size [*max_size]]]\r    [\r      Returns the maximum number of characters that can be stored, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_string_view_type [*operator string_view_type]]]\r    [\r      Convert a static string to a string_view_type \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_plus__eq_ [*operator+=]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_eq_ [*operator=]]]\r    [\r      Copy assignment. \r\r      Assign from null-terminated string. \r\r      Assign from single character. \r\r      Assign from initializer list. \r\r      Assign from string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_lb__rb_ [*operator\[\]]]]\r    [\r      Access specified character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.pop_back [*pop_back]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.push_back [*push_back]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.rbegin [*rbegin]]]\r    [\r      Returns a reverse iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.rend [*rend]]]\r    [\r      Returns a reverse iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reserve [*reserve]]]\r    [\r      Reserves storage. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.resize [*resize]]]\r    [\r      Changes the number of characters stored. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.shrink_to_fit [*shrink_to_fit]]]\r    [\r      Reduces memory usage by freeing unused memory. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.size [*size]]]\r    [\r      Returns the number of characters, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.static_string [*static_string]]]\r    [\r      Default constructor (empty string). \r\r      Construct with count copies of character ch. \r\r      Construct with a substring (pos, other.size()) of other. \r\r      Construct with a substring (pos, count) of other. \r\r      Construct with the first count characters of s, including nulls. \r\r      Construct from a null terminated string. \r\r      Construct from a range of characters. \r\r      Copy constructor. \r\r      Construct from an initializer list. \r\r      Construct from a string_view \r\r      Construct from any object convertible to string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.substr [*substr]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.swap [*swap]]]\r    [\r      Exchange the contents of this string with another. \r    ]\r  ]\r]\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.max_size_n [*max_size_n]]]\r    [\r      Maximum size of the string excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.npos [*npos]]]\r    [\r      A special index. \r    ]\r  ]\r]\r\r[heading Description]\r
5739 These objects behave like `std::string` except that the storage is not dynamically allocated but rather fixed in size.
5740 These strings offer performance advantages when a protocol imposes a natural small upper limit on the size of a value.
5741 [heading Remarks]\r
5742 The stored string is always null-terminated.
5743 [heading See Also]\r
5744 [link beast.ref.boost__beast__to_static_string `to_static_string`] 
5745 [section:append static_string::append]\r[indexterm2 append..static_string]\r```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.append.overload1 append]``(\r    size_type count,\r    CharT ch);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload1 more...]]``\r\rtemplate<\r    std::size_t M>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.append.overload2 append]``(\r    static_string< M, CharT, Traits > const& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload2 more...]]``\r\rtemplate<\r    std::size_t M>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.append.overload3 append]``(\r    static_string< M, CharT, Traits > const& str,\r    size_type pos,\r    size_type count = npos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload3 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.append.overload4 append]``(\r    CharT const* s,\r    size_type count);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload4 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.append.overload5 append]``(\r    CharT const* s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload5 more...]]``\r\rtemplate<\r    class InputIt>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.append.overload6 append]``(\r    InputIt first,\r    InputIt last);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload6 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.append.overload7 append]``(\r    std::initializer_list< CharT > init);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload7 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.append.overload8 append]``(\r    string_view_type sv);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload8 more...]]``\r\rtemplate<\r    class T>\rstd::enable_if< std::is_convertible< T const  &, string_view_type >::value &&! std::is_convertible< T const  &, CharT const  * >::value, static_string & >::type\r``[link beast.ref.boost__beast__static_string.append.overload9 append]``(\r    T const& t,\r    size_type pos,\r    size_type count = npos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.append.overload9 more...]]``\r```\r[section:overload1 static_string::append (1 of 9 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rappend(\r    size_type count,\r    CharT ch);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::append (2 of 9 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\rappend(\r    static_string< M, CharT, Traits > const& str);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 static_string::append (3 of 9 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\rappend(\r    static_string< M, CharT, Traits > const& str,\r    size_type pos,\r    size_type count = npos);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 static_string::append (4 of 9 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rappend(\r    CharT const* s,\r    size_type count);\r```\r\r[heading Description]\r[endsect]\r[section:overload5 static_string::append (5 of 9 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rappend(\r    CharT const* s);\r```\r\r[heading Description]\r[endsect]\r[section:overload6 static_string::append (6 of 9 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class InputIt>\rstatic_string&\rappend(\r    InputIt first,\r    InputIt last);\r```\r\r[heading Description]\r[endsect]\r[section:overload7 static_string::append (7 of 9 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rappend(\r    std::initializer_list< CharT > init);\r```\r\r[heading Description]\r[endsect]\r[section:overload8 static_string::append (8 of 9 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rappend(\r    string_view_type sv);\r```\r\r[heading Description]\r[endsect]\r[section:overload9 static_string::append (9 of 9 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class T>\rstd::enable_if< std::is_convertible< T const  &, string_view_type >::value &&! std::is_convertible< T const  &, CharT const  * >::value, static_string & >::type\rappend(\r    T const& t,\r    size_type pos,\r    size_type count = npos);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:assign static_string::assign]\r[indexterm2 assign..static_string]\r
5746 Assign `count` copies of `ch`. ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload1 assign]``(\r    size_type count,\r    CharT ch);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload1 more...]]``\r\r```\r
5747 Assign from another `static_string` ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload2 assign]``(\r    static_string const& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload2 more...]]``\r\rtemplate<\r    std::size_t M>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload3 assign]``(\r    static_string< M, CharT, Traits > const& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload3 more...]]``\r\r```\r
5748 Assign `count` characterss starting at `npos` from `other`. ```\rtemplate<\r    std::size_t M>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload4 assign]``(\r    static_string< M, CharT, Traits > const& str,\r    size_type pos,\r    size_type count = npos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload4 more...]]``\r\r```\r
5749 Assign the first `count` characters of `s`, including nulls. ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload5 assign]``(\r    CharT const* s,\r    size_type count);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload5 more...]]``\r\r```\r
5750 Assign a null terminated string. ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload6 assign]``(\r    CharT const* s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload6 more...]]``\r\r```\r
5751 Assign from an iterator range of characters. ```\rtemplate<\r    class InputIt>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload7 assign]``(\r    InputIt first,\r    InputIt last);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload7 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload8 assign]``(\r    std::initializer_list< CharT > init);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload8 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload9 assign]``(\r    string_view_type str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload9 more...]]``\r\r```\r
5752 Assign from any object convertible to `string_view_type`. ```\rtemplate<\r    class T>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.assign.overload10 assign]``(\r    T const& t,\r    size_type pos,\r    size_type count = npos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.assign.overload10 more...]]``\r```\r[section:overload1 static_string::assign (1 of 10 overloads)]\r
5753 Assign `count` copies of `ch`. \r[heading Synopsis]\r```\rstatic_string&\rassign(\r    size_type count,\r    CharT ch);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::assign (2 of 10 overloads)]\r
5754 Assign from another `static_string` \r[heading Synopsis]\r```\rstatic_string&\rassign(\r    static_string const& str);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 static_string::assign (3 of 10 overloads)]\r
5755 Assign from another `static_string` \r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\rassign(\r    static_string< M, CharT, Traits > const& str);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 static_string::assign (4 of 10 overloads)]\r
5756 Assign `count` characterss starting at `npos` from `other`. \r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\rassign(\r    static_string< M, CharT, Traits > const& str,\r    size_type pos,\r    size_type count = npos);\r```\r\r[heading Description]\r[endsect]\r[section:overload5 static_string::assign (5 of 10 overloads)]\r
5757 Assign the first `count` characters of `s`, including nulls. \r[heading Synopsis]\r```\rstatic_string&\rassign(\r    CharT const* s,\r    size_type count);\r```\r\r[heading Description]\r[endsect]\r[section:overload6 static_string::assign (6 of 10 overloads)]\r
5758 Assign a null terminated string. \r[heading Synopsis]\r```\rstatic_string&\rassign(\r    CharT const* s);\r```\r\r[heading Description]\r[endsect]\r[section:overload7 static_string::assign (7 of 10 overloads)]\r
5759 Assign from an iterator range of characters. \r[heading Synopsis]\r```\rtemplate<\r    class InputIt>\rstatic_string&\rassign(\r    InputIt first,\r    InputIt last);\r```\r\r[heading Description]\r[endsect]\r[section:overload8 static_string::assign (8 of 10 overloads)]\r
5760 Assign from initializer list. \r[heading Synopsis]\r```\rstatic_string&\rassign(\r    std::initializer_list< CharT > init);\r```\r\r[heading Description]\r[endsect]\r[section:overload9 static_string::assign (9 of 10 overloads)]\r
5761 Assign from `string_view_type`. \r[heading Synopsis]\r```\rstatic_string&\rassign(\r    string_view_type str);\r```\r\r[heading Description]\r[endsect]\r[section:overload10 static_string::assign (10 of 10 overloads)]\r
5762 Assign from any object convertible to `string_view_type`. \r[heading Synopsis]\r```\rtemplate<\r    class T>\rstatic_string&\rassign(\r    T const& t,\r    size_type pos,\r    size_type count = npos);\r```\r\r[heading Description]\r
5763 The range (pos, n) is extracted from the value obtained by converting `t` to `string_view_type`, and used to assign the string. [endsect]\r[endsect]\r\r[section:at static_string::at]\r[indexterm2 at..static_string]\r
5764 Access specified character with bounds checking. ```\rreference\r``[link beast.ref.boost__beast__static_string.at.overload1 at]``(\r    size_type pos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.at.overload1 more...]]``\r\rconst_reference\r``[link beast.ref.boost__beast__static_string.at.overload2 at]``(\r    size_type pos) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.at.overload2 more...]]``\r```\r[section:overload1 static_string::at (1 of 2 overloads)]\r
5765 Access specified character with bounds checking. \r[heading Synopsis]\r```\rreference\rat(\r    size_type pos);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::at (2 of 2 overloads)]\r
5766 Access specified character with bounds checking. \r[heading Synopsis]\r```\rconst_reference\rat(\r    size_type pos) const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:back static_string::back]\r[indexterm2 back..static_string]\r
5767 Accesses the last character. ```\rCharT&\r``[link beast.ref.boost__beast__static_string.back.overload1 back]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.back.overload1 more...]]``\r\rCharT const &\r``[link beast.ref.boost__beast__static_string.back.overload2 back]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.back.overload2 more...]]``\r```\r[section:overload1 static_string::back (1 of 2 overloads)]\r
5768 Accesses the last character. \r[heading Synopsis]\r```\rCharT&\rback();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::back (2 of 2 overloads)]\r
5769 Accesses the last character. \r[heading Synopsis]\r```\rCharT const &\rback() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:begin static_string::begin]\r[indexterm2 begin..static_string]\r
5770 Returns an iterator to the beginning. ```\riterator\r``[link beast.ref.boost__beast__static_string.begin.overload1 begin]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.begin.overload1 more...]]``\r\rconst_iterator\r``[link beast.ref.boost__beast__static_string.begin.overload2 begin]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.begin.overload2 more...]]``\r```\r[section:overload1 static_string::begin (1 of 2 overloads)]\r
5771 Returns an iterator to the beginning. \r[heading Synopsis]\r```\riterator\rbegin();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::begin (2 of 2 overloads)]\r
5772 Returns an iterator to the beginning. \r[heading Synopsis]\r```\rconst_iterator\rbegin() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:c_str static_string::c_str]\r[indexterm2 c_str..static_string]\r
5773 Returns a non-modifiable standard C character array version of the string. \r[heading Synopsis]\r```\rCharT const *\rc_str() const;\r```\r\r[heading Description]\r[endsect]\r[section:capacity static_string::capacity]\r[indexterm2 capacity..static_string]\r
5774 Returns the number of characters that can be held in currently allocated storage. \r[heading Synopsis]\r```\rsize_type constexpr\rcapacity() const;\r```\r\r[heading Description]\r[endsect]\r[section:cbegin static_string::cbegin]\r[indexterm2 cbegin..static_string]\r
5775 Returns an iterator to the beginning. \r[heading Synopsis]\r```\rconst_iterator\rcbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:cend static_string::cend]\r[indexterm2 cend..static_string]\r
5776 Returns an iterator to the end. \r[heading Synopsis]\r```\rconst_iterator\rcend() const;\r```\r\r[heading Description]\r[endsect]\r[section:clear static_string::clear]\r[indexterm2 clear..static_string]\r
5777 Clears the contents. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r[endsect]\r[section:compare static_string::compare]\r[indexterm2 compare..static_string]\r```\rtemplate<\r    std::size_t M>\rint\r``[link beast.ref.boost__beast__static_string.compare.overload1 compare]``(\r    static_string< M, CharT, Traits > const& str) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload1 more...]]``\r\rtemplate<\r    std::size_t M>\rint\r``[link beast.ref.boost__beast__static_string.compare.overload2 compare]``(\r    size_type pos1,\r    size_type count1,\r    static_string< M, CharT, Traits > const& str) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload2 more...]]``\r\rtemplate<\r    std::size_t M>\rint\r``[link beast.ref.boost__beast__static_string.compare.overload3 compare]``(\r    size_type pos1,\r    size_type count1,\r    static_string< M, CharT, Traits > const& str,\r    size_type pos2,\r    size_type count2 = npos) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload3 more...]]``\r\rint\r``[link beast.ref.boost__beast__static_string.compare.overload4 compare]``(\r    CharT const* s) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload4 more...]]``\r\rint\r``[link beast.ref.boost__beast__static_string.compare.overload5 compare]``(\r    size_type pos1,\r    size_type count1,\r    CharT const* s) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload5 more...]]``\r\rint\r``[link beast.ref.boost__beast__static_string.compare.overload6 compare]``(\r    size_type pos1,\r    size_type count1,\r    CharT const* s,\r    size_type count2) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload6 more...]]``\r\rint\r``[link beast.ref.boost__beast__static_string.compare.overload7 compare]``(\r    string_view_type str) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload7 more...]]``\r\rint\r``[link beast.ref.boost__beast__static_string.compare.overload8 compare]``(\r    size_type pos1,\r    size_type count1,\r    string_view_type str) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload8 more...]]``\r\rtemplate<\r    class T>\rint\r``[link beast.ref.boost__beast__static_string.compare.overload9 compare]``(\r    size_type pos1,\r    size_type count1,\r    T const& t,\r    size_type pos2,\r    size_type count2 = npos) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.compare.overload9 more...]]``\r```\r[section:overload1 static_string::compare (1 of 9 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rint\rcompare(\r    static_string< M, CharT, Traits > const& str) const;\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::compare (2 of 9 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rint\rcompare(\r    size_type pos1,\r    size_type count1,\r    static_string< M, CharT, Traits > const& str) const;\r```\r\r[heading Description]\r[endsect]\r[section:overload3 static_string::compare (3 of 9 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rint\rcompare(\r    size_type pos1,\r    size_type count1,\r    static_string< M, CharT, Traits > const& str,\r    size_type pos2,\r    size_type count2 = npos) const;\r```\r\r[heading Description]\r[endsect]\r[section:overload4 static_string::compare (4 of 9 overloads)]\r\r[heading Synopsis]\r```\rint\rcompare(\r    CharT const* s) const;\r```\r\r[heading Description]\r[endsect]\r[section:overload5 static_string::compare (5 of 9 overloads)]\r\r[heading Synopsis]\r```\rint\rcompare(\r    size_type pos1,\r    size_type count1,\r    CharT const* s) const;\r```\r\r[heading Description]\r[endsect]\r[section:overload6 static_string::compare (6 of 9 overloads)]\r\r[heading Synopsis]\r```\rint\rcompare(\r    size_type pos1,\r    size_type count1,\r    CharT const* s,\r    size_type count2) const;\r```\r\r[heading Description]\r[endsect]\r[section:overload7 static_string::compare (7 of 9 overloads)]\r\r[heading Synopsis]\r```\rint\rcompare(\r    string_view_type str) const;\r```\r\r[heading Description]\r[endsect]\r[section:overload8 static_string::compare (8 of 9 overloads)]\r\r[heading Synopsis]\r```\rint\rcompare(\r    size_type pos1,\r    size_type count1,\r    string_view_type str) const;\r```\r\r[heading Description]\r[endsect]\r[section:overload9 static_string::compare (9 of 9 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class T>\rint\rcompare(\r    size_type pos1,\r    size_type count1,\r    T const& t,\r    size_type pos2,\r    size_type count2 = npos) const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:const_iterator static_string::const_iterator]\r[indexterm2 const_iterator..static_string]\r\r[heading Synopsis]\r\r```\rusing const_iterator = value_type const *;\r```\r\r[heading Description]\r[endsect]\r[section:const_pointer static_string::const_pointer]\r[indexterm2 const_pointer..static_string]\r\r[heading Synopsis]\r\r```\rusing const_pointer = value_type const *;\r```\r\r[heading Description]\r[endsect]\r[section:const_reference static_string::const_reference]\r[indexterm2 const_reference..static_string]\r\r[heading Synopsis]\r\r```\rusing const_reference = value_type const &;\r```\r\r[heading Description]\r[endsect]\r[section:const_reverse_iterator static_string::const_reverse_iterator]\r[indexterm2 const_reverse_iterator..static_string]\r\r[heading Synopsis]\r\r```\rusing const_reverse_iterator = std::reverse_iterator< const_iterator >;\r```\r\r[heading Description]\r[endsect]\r[section:copy static_string::copy]\r[indexterm2 copy..static_string]\r
5778 Copy a substring (pos, pos+count) to character string pointed to by `dest`. \r[heading Synopsis]\r```\rsize_type\rcopy(\r    CharT* dest,\r    size_type count,\r    size_type pos = 0) const;\r```\r\r[heading Description]\r[endsect]\r[section:crbegin static_string::crbegin]\r[indexterm2 crbegin..static_string]\r
5779 Returns a reverse iterator to the beginning. \r[heading Synopsis]\r```\rconst_reverse_iterator\rcrbegin() const;\r```\r\r[heading Description]\r[endsect]\r[section:crend static_string::crend]\r[indexterm2 crend..static_string]\r
5780 Returns a reverse iterator to the end. \r[heading Synopsis]\r```\rconst_reverse_iterator\rcrend() const;\r```\r\r[heading Description]\r[endsect]\r[section:data static_string::data]\r[indexterm2 data..static_string]\r
5781 Returns a pointer to the first character of a string. ```\rCharT*\r``[link beast.ref.boost__beast__static_string.data.overload1 data]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.data.overload1 more...]]``\r\rCharT const *\r``[link beast.ref.boost__beast__static_string.data.overload2 data]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.data.overload2 more...]]``\r```\r[section:overload1 static_string::data (1 of 2 overloads)]\r
5782 Returns a pointer to the first character of a string. \r[heading Synopsis]\r```\rCharT*\rdata();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::data (2 of 2 overloads)]\r
5783 Returns a pointer to the first character of a string. \r[heading Synopsis]\r```\rCharT const *\rdata() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:difference_type static_string::difference_type]\r[indexterm2 difference_type..static_string]\r\r[heading Synopsis]\r\r```\rusing difference_type = std::ptrdiff_t;\r```\r\r[heading Description]\r[endsect]\r[section:empty static_string::empty]\r[indexterm2 empty..static_string]\r
5784 Returns `true` if the string is empty. \r[heading Synopsis]\r```\rbool\rempty() const;\r```\r\r[heading Description]\r[endsect]\r[section:end static_string::end]\r[indexterm2 end..static_string]\r
5785 Returns an iterator to the end. ```\riterator\r``[link beast.ref.boost__beast__static_string.end.overload1 end]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.end.overload1 more...]]``\r\rconst_iterator\r``[link beast.ref.boost__beast__static_string.end.overload2 end]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.end.overload2 more...]]``\r```\r[section:overload1 static_string::end (1 of 2 overloads)]\r
5786 Returns an iterator to the end. \r[heading Synopsis]\r```\riterator\rend();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::end (2 of 2 overloads)]\r
5787 Returns an iterator to the end. \r[heading Synopsis]\r```\rconst_iterator\rend() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:erase static_string::erase]\r[indexterm2 erase..static_string]\r```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.erase.overload1 erase]``(\r    size_type index = 0,\r    size_type count = npos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.erase.overload1 more...]]``\r\riterator\r``[link beast.ref.boost__beast__static_string.erase.overload2 erase]``(\r    const_iterator pos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.erase.overload2 more...]]``\r\riterator\r``[link beast.ref.boost__beast__static_string.erase.overload3 erase]``(\r    const_iterator first,\r    const_iterator last);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.erase.overload3 more...]]``\r```\r[section:overload1 static_string::erase (1 of 3 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rerase(\r    size_type index = 0,\r    size_type count = npos);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::erase (2 of 3 overloads)]\r\r[heading Synopsis]\r```\riterator\rerase(\r    const_iterator pos);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 static_string::erase (3 of 3 overloads)]\r\r[heading Synopsis]\r```\riterator\rerase(\r    const_iterator first,\r    const_iterator last);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:front static_string::front]\r[indexterm2 front..static_string]\r
5788 Accesses the first character. ```\rCharT&\r``[link beast.ref.boost__beast__static_string.front.overload1 front]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.front.overload1 more...]]``\r\rCharT const &\r``[link beast.ref.boost__beast__static_string.front.overload2 front]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.front.overload2 more...]]``\r```\r[section:overload1 static_string::front (1 of 2 overloads)]\r
5789 Accesses the first character. \r[heading Synopsis]\r```\rCharT&\rfront();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::front (2 of 2 overloads)]\r
5790 Accesses the first character. \r[heading Synopsis]\r```\rCharT const &\rfront() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:insert static_string::insert]\r[indexterm2 insert..static_string]\r```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.insert.overload1 insert]``(\r    size_type index,\r    size_type count,\r    CharT ch);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload1 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.insert.overload2 insert]``(\r    size_type index,\r    CharT const* s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload2 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.insert.overload3 insert]``(\r    size_type index,\r    CharT const* s,\r    size_type count);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload3 more...]]``\r\rtemplate<\r    std::size_t M>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.insert.overload4 insert]``(\r    size_type index,\r    static_string< M, CharT, Traits > const& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload4 more...]]``\r\rtemplate<\r    std::size_t M>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.insert.overload5 insert]``(\r    size_type index,\r    static_string< M, CharT, Traits > const& str,\r    size_type index_str,\r    size_type count = npos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload5 more...]]``\r\riterator\r``[link beast.ref.boost__beast__static_string.insert.overload6 insert]``(\r    const_iterator pos,\r    CharT ch);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload6 more...]]``\r\riterator\r``[link beast.ref.boost__beast__static_string.insert.overload7 insert]``(\r    const_iterator pos,\r    size_type count,\r    CharT ch);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload7 more...]]``\r\rtemplate<\r    class InputIt>\riterator\r``[link beast.ref.boost__beast__static_string.insert.overload8 insert]``(\r    const_iterator pos,\r    InputIt first,\r    InputIt last);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload8 more...]]``\r\riterator\r``[link beast.ref.boost__beast__static_string.insert.overload9 insert]``(\r    const_iterator pos,\r    std::initializer_list< CharT > init);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload9 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.insert.overload10 insert]``(\r    size_type index,\r    string_view_type str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload10 more...]]``\r\rtemplate<\r    class T>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.insert.overload11 insert]``(\r    size_type index,\r    T const& t,\r    size_type index_str,\r    size_type count = npos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.insert.overload11 more...]]``\r```\r[section:overload1 static_string::insert (1 of 11 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rinsert(\r    size_type index,\r    size_type count,\r    CharT ch);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::insert (2 of 11 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rinsert(\r    size_type index,\r    CharT const* s);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 static_string::insert (3 of 11 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rinsert(\r    size_type index,\r    CharT const* s,\r    size_type count);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 static_string::insert (4 of 11 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\rinsert(\r    size_type index,\r    static_string< M, CharT, Traits > const& str);\r```\r\r[heading Description]\r[endsect]\r[section:overload5 static_string::insert (5 of 11 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\rinsert(\r    size_type index,\r    static_string< M, CharT, Traits > const& str,\r    size_type index_str,\r    size_type count = npos);\r```\r\r[heading Description]\r[endsect]\r[section:overload6 static_string::insert (6 of 11 overloads)]\r\r[heading Synopsis]\r```\riterator\rinsert(\r    const_iterator pos,\r    CharT ch);\r```\r\r[heading Description]\r[endsect]\r[section:overload7 static_string::insert (7 of 11 overloads)]\r\r[heading Synopsis]\r```\riterator\rinsert(\r    const_iterator pos,\r    size_type count,\r    CharT ch);\r```\r\r[heading Description]\r[endsect]\r[section:overload8 static_string::insert (8 of 11 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class InputIt>\riterator\rinsert(\r    const_iterator pos,\r    InputIt first,\r    InputIt last);\r```\r\r[heading Description]\r[endsect]\r[section:overload9 static_string::insert (9 of 11 overloads)]\r\r[heading Synopsis]\r```\riterator\rinsert(\r    const_iterator pos,\r    std::initializer_list< CharT > init);\r```\r\r[heading Description]\r[endsect]\r[section:overload10 static_string::insert (10 of 11 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\rinsert(\r    size_type index,\r    string_view_type str);\r```\r\r[heading Description]\r[endsect]\r[section:overload11 static_string::insert (11 of 11 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class T>\rstatic_string&\rinsert(\r    size_type index,\r    T const& t,\r    size_type index_str,\r    size_type count = npos);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:iterator static_string::iterator]\r[indexterm2 iterator..static_string]\r\r[heading Synopsis]\r\r```\rusing iterator = value_type*;\r```\r\r[heading Description]\r[endsect]\r[section:length static_string::length]\r[indexterm2 length..static_string]\r
5791 Returns the number of characters, excluding the null terminator. \r[heading Synopsis]\r```\rsize_type\rlength() const;\r```\r\r[heading Description]\r[endsect]\r[section:max_size static_string::max_size]\r[indexterm2 max_size..static_string]\r
5792 Returns the maximum number of characters that can be stored, excluding the null terminator. \r[heading Synopsis]\r```\rsize_type constexpr\rmax_size() const;\r```\r\r[heading Description]\r[endsect]\r[section:max_size_n static_string::max_size_n]\r[indexterm2 max_size_n..static_string]\r
5793 Maximum size of the string excluding the null terminator. \r[heading Synopsis]\r```\rstatic\rstd::size_t constexpr max_size_n = N;\r```\r\r[heading Description]\r[endsect]\r[section:npos static_string::npos]\r[indexterm2 npos..static_string]\r
5794 A special index. \r[heading Synopsis]\r```\rstatic\rconstexpr size_type npos = size_type(-1);\r```\r\r[heading Description]\r[endsect]\r[section:operator_string_view_type static_string::operator string_view_type]\r[indexterm2 operator string_view_type..static_string]\r
5795 Convert a static string to a `string_view_type` \r[heading Synopsis]\r```\roperator string_view_type() const;\r```\r\r[heading Description]\r[endsect]\r[section:operator_plus__eq_ static_string::operator+=]\r[indexterm2 operator+=..static_string]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_plus__eq_.overload1 operator+=]``(\r    static_string< M, CharT, Traits > const& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_plus__eq_.overload1 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_plus__eq_.overload2 operator+=]``(\r    CharT ch);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_plus__eq_.overload2 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_plus__eq_.overload3 operator+=]``(\r    CharT const* s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_plus__eq_.overload3 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_plus__eq_.overload4 operator+=]``(\r    std::initializer_list< CharT > init);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_plus__eq_.overload4 more...]]``\r\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_plus__eq_.overload5 operator+=]``(\r    string_view_type const& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_plus__eq_.overload5 more...]]``\r```\r[section:overload1 static_string::operator+= (1 of 5 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\roperator+=(\r    static_string< M, CharT, Traits > const& str);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::operator+= (2 of 5 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\roperator+=(\r    CharT ch);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 static_string::operator+= (3 of 5 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\roperator+=(\r    CharT const* s);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 static_string::operator+= (4 of 5 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\roperator+=(\r    std::initializer_list< CharT > init);\r```\r\r[heading Description]\r[endsect]\r[section:overload5 static_string::operator+= (5 of 5 overloads)]\r\r[heading Synopsis]\r```\rstatic_string&\roperator+=(\r    string_view_type const& str);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:operator_eq_ static_string::operator=]\r[indexterm2 operator=..static_string]\r
5796 Copy assignment. ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_eq_.overload1 operator=]``(\r    static_string const& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_eq_.overload1 more...]]``\r\rtemplate<\r    std::size_t M>\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_eq_.overload2 operator=]``(\r    static_string< M, CharT, Traits > const& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_eq_.overload2 more...]]``\r\r```\r
5797 Assign from null-terminated string. ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_eq_.overload3 operator=]``(\r    CharT const* s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_eq_.overload3 more...]]``\r\r```\r
5798 Assign from single character. ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_eq_.overload4 operator=]``(\r    CharT ch);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_eq_.overload4 more...]]``\r\r```\r
5799 Assign from initializer list. ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_eq_.overload5 operator=]``(\r    std::initializer_list< CharT > init);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_eq_.overload5 more...]]``\r\r```\r
5800 Assign from `string_view_type`. ```\rstatic_string&\r``[link beast.ref.boost__beast__static_string.operator_eq_.overload6 operator=]``(\r    string_view_type sv);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_eq_.overload6 more...]]``\r```\r[section:overload1 static_string::operator= (1 of 6 overloads)]\r
5801 Copy assignment. \r[heading Synopsis]\r```\rstatic_string&\roperator=(\r    static_string const& str);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::operator= (2 of 6 overloads)]\r
5802 Copy assignment. \r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string&\roperator=(\r    static_string< M, CharT, Traits > const& str);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 static_string::operator= (3 of 6 overloads)]\r
5803 Assign from null-terminated string. \r[heading Synopsis]\r```\rstatic_string&\roperator=(\r    CharT const* s);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 static_string::operator= (4 of 6 overloads)]\r
5804 Assign from single character. \r[heading Synopsis]\r```\rstatic_string&\roperator=(\r    CharT ch);\r```\r\r[heading Description]\r[endsect]\r[section:overload5 static_string::operator= (5 of 6 overloads)]\r
5805 Assign from initializer list. \r[heading Synopsis]\r```\rstatic_string&\roperator=(\r    std::initializer_list< CharT > init);\r```\r\r[heading Description]\r[endsect]\r[section:overload6 static_string::operator= (6 of 6 overloads)]\r
5806 Assign from `string_view_type`. \r[heading Synopsis]\r```\rstatic_string&\roperator=(\r    string_view_type sv);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:operator_lb__rb_ static_string::operator\[\]]\r[indexterm2 operator\[\]..static_string]\r
5807 Access specified character. ```\rreference\r``[link beast.ref.boost__beast__static_string.operator_lb__rb_.overload1 operator[]]``(\r    size_type pos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_lb__rb_.overload1 more...]]``\r\rconst_reference\r``[link beast.ref.boost__beast__static_string.operator_lb__rb_.overload2 operator[]]``(\r    size_type pos) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.operator_lb__rb_.overload2 more...]]``\r```\r[section:overload1 static_string::operator\[\] (1 of 2 overloads)]\r
5808 Access specified character. \r[heading Synopsis]\r```\rreference\roperator[](\r    size_type pos);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::operator\[\] (2 of 2 overloads)]\r
5809 Access specified character. \r[heading Synopsis]\r```\rconst_reference\roperator[](\r    size_type pos) const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:pointer static_string::pointer]\r[indexterm2 pointer..static_string]\r\r[heading Synopsis]\r\r```\rusing pointer = value_type*;\r```\r\r[heading Description]\r[endsect]\r[section:pop_back static_string::pop_back]\r[indexterm2 pop_back..static_string]\r\r[heading Synopsis]\r```\rvoid\rpop_back();\r```\r\r[heading Description]\r[endsect]\r[section:push_back static_string::push_back]\r[indexterm2 push_back..static_string]\r\r[heading Synopsis]\r```\rvoid\rpush_back(\r    CharT ch);\r```\r\r[heading Description]\r[endsect]\r[section:rbegin static_string::rbegin]\r[indexterm2 rbegin..static_string]\r
5810 Returns a reverse iterator to the beginning. ```\rreverse_iterator\r``[link beast.ref.boost__beast__static_string.rbegin.overload1 rbegin]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.rbegin.overload1 more...]]``\r\rconst_reverse_iterator\r``[link beast.ref.boost__beast__static_string.rbegin.overload2 rbegin]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.rbegin.overload2 more...]]``\r```\r[section:overload1 static_string::rbegin (1 of 2 overloads)]\r
5811 Returns a reverse iterator to the beginning. \r[heading Synopsis]\r```\rreverse_iterator\rrbegin();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::rbegin (2 of 2 overloads)]\r
5812 Returns a reverse iterator to the beginning. \r[heading Synopsis]\r```\rconst_reverse_iterator\rrbegin() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:reference static_string::reference]\r[indexterm2 reference..static_string]\r\r[heading Synopsis]\r\r```\rusing reference = value_type&;\r```\r\r[heading Description]\r[endsect]\r[section:rend static_string::rend]\r[indexterm2 rend..static_string]\r
5813 Returns a reverse iterator to the end. ```\rreverse_iterator\r``[link beast.ref.boost__beast__static_string.rend.overload1 rend]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.rend.overload1 more...]]``\r\rconst_reverse_iterator\r``[link beast.ref.boost__beast__static_string.rend.overload2 rend]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.rend.overload2 more...]]``\r```\r[section:overload1 static_string::rend (1 of 2 overloads)]\r
5814 Returns a reverse iterator to the end. \r[heading Synopsis]\r```\rreverse_iterator\rrend();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::rend (2 of 2 overloads)]\r
5815 Returns a reverse iterator to the end. \r[heading Synopsis]\r```\rconst_reverse_iterator\rrend() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:reserve static_string::reserve]\r[indexterm2 reserve..static_string]\r
5816 Reserves storage. \r[heading Synopsis]\r```\rvoid\rreserve(\r    std::size_t n);\r```\r\r[heading Description]\r
5817 This actually just throws an exception if `n > N`, otherwise does nothing since the storage is fixed. [endsect]\r[section:resize static_string::resize]\r[indexterm2 resize..static_string]\r
5818 Changes the number of characters stored. ```\rvoid\r``[link beast.ref.boost__beast__static_string.resize.overload1 resize]``(\r    std::size_t n);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.resize.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__static_string.resize.overload2 resize]``(\r    std::size_t n,\r    CharT c);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.resize.overload2 more...]]``\r```\r[section:overload1 static_string::resize (1 of 2 overloads)]\r
5819 Changes the number of characters stored. \r[heading Synopsis]\r```\rvoid\rresize(\r    std::size_t n);\r```\r\r[heading Description]\r
5820 If the resulting string is larger, the new characters are uninitialized. [endsect]\r[section:overload2 static_string::resize (2 of 2 overloads)]\r
5821 Changes the number of characters stored. \r[heading Synopsis]\r```\rvoid\rresize(\r    std::size_t n,\r    CharT c);\r```\r\r[heading Description]\r
5822 If the resulting string is larger, the new characters are initialized to the value of `c`. [endsect]\r[endsect]\r\r[section:reverse_iterator static_string::reverse_iterator]\r[indexterm2 reverse_iterator..static_string]\r\r[heading Synopsis]\r\r```\rusing reverse_iterator = std::reverse_iterator< iterator >;\r```\r\r[heading Description]\r[endsect]\r[section:shrink_to_fit static_string::shrink_to_fit]\r[indexterm2 shrink_to_fit..static_string]\r
5823 Reduces memory usage by freeing unused memory. \r[heading Synopsis]\r```\rvoid\rshrink_to_fit();\r```\r\r[heading Description]\r
5824 This actually does nothing, since the storage is fixed. [endsect]\r[section:size static_string::size]\r[indexterm2 size..static_string]\r
5825 Returns the number of characters, excluding the null terminator. \r[heading Synopsis]\r```\rsize_type\rsize() const;\r```\r\r[heading Description]\r[endsect]\r[section:size_type static_string::size_type]\r[indexterm2 size_type..static_string]\r\r[heading Synopsis]\r\r```\rusing size_type = std::size_t;\r```\r\r[heading Description]\r[endsect]\r[section:static_string static_string::static_string]\r[indexterm2 static_string..static_string]\r
5826 Default constructor (empty string). ```\r``[link beast.ref.boost__beast__static_string.static_string.overload1 static_string]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload1 more...]]``\r\r```\r
5827 Construct with count copies of character `ch`. ```\r``[link beast.ref.boost__beast__static_string.static_string.overload2 static_string]``(\r    size_type count,\r    CharT ch);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload2 more...]]``\r\r```\r
5828 Construct with a substring (pos, other.size()) of `other`. ```\rtemplate<\r    std::size_t M>\r``[link beast.ref.boost__beast__static_string.static_string.overload3 static_string]``(\r    static_string< M, CharT, Traits > const& other,\r    size_type pos);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload3 more...]]``\r\r```\r
5829 Construct with a substring (pos, count) of `other`. ```\rtemplate<\r    std::size_t M>\r``[link beast.ref.boost__beast__static_string.static_string.overload4 static_string]``(\r    static_string< M, CharT, Traits > const& other,\r    size_type pos,\r    size_type count);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload4 more...]]``\r\r```\r
5830 Construct with the first `count` characters of `s`, including nulls. ```\r``[link beast.ref.boost__beast__static_string.static_string.overload5 static_string]``(\r    CharT const* s,\r    size_type count);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload5 more...]]``\r\r```\r
5831 Construct from a null terminated string. ```\r``[link beast.ref.boost__beast__static_string.static_string.overload6 static_string]``(\r    CharT const* s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload6 more...]]``\r\r```\r
5832 Construct from a range of characters. ```\rtemplate<\r    class InputIt>\r``[link beast.ref.boost__beast__static_string.static_string.overload7 static_string]``(\r    InputIt first,\r    InputIt last);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload7 more...]]``\r\r```\r
5833 Copy constructor. ```\r``[link beast.ref.boost__beast__static_string.static_string.overload8 static_string]``(\r    static_string const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload8 more...]]``\r\rtemplate<\r    std::size_t M>\r``[link beast.ref.boost__beast__static_string.static_string.overload9 static_string]``(\r    static_string< M, CharT, Traits > const& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload9 more...]]``\r\r```\r
5834 Construct from an initializer list. ```\r``[link beast.ref.boost__beast__static_string.static_string.overload10 static_string]``(\r    std::initializer_list< CharT > init);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload10 more...]]``\r\r```\r
5835 Construct from a `string_view` ```\rexplicit\r``[link beast.ref.boost__beast__static_string.static_string.overload11 static_string]``(\r    string_view_type sv);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload11 more...]]``\r\r```\r
5836 Construct from any object convertible to `string_view_type`. ```\rtemplate<\r    class T>\r``[link beast.ref.boost__beast__static_string.static_string.overload12 static_string]``(\r    T const& t,\r    size_type pos,\r    size_type n);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.static_string.overload12 more...]]``\r```\r[section:overload1 static_string::static_string (1 of 12 overloads)]\r
5837 Default constructor (empty string). \r[heading Synopsis]\r```\rstatic_string();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::static_string (2 of 12 overloads)]\r
5838 Construct with count copies of character `ch`. \r[heading Synopsis]\r```\rstatic_string(\r    size_type count,\r    CharT ch);\r```\r\r[heading Description]\r
5839 The behavior is undefined if `count >= npos` [endsect]\r[section:overload3 static_string::static_string (3 of 12 overloads)]\r
5840 Construct with a substring (pos, other.size()) of `other`. \r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string(\r    static_string< M, CharT, Traits > const& other,\r    size_type pos);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 static_string::static_string (4 of 12 overloads)]\r
5841 Construct with a substring (pos, count) of `other`. \r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string(\r    static_string< M, CharT, Traits > const& other,\r    size_type pos,\r    size_type count);\r```\r\r[heading Description]\r[endsect]\r[section:overload5 static_string::static_string (5 of 12 overloads)]\r
5842 Construct with the first `count` characters of `s`, including nulls. \r[heading Synopsis]\r```\rstatic_string(\r    CharT const* s,\r    size_type count);\r```\r\r[heading Description]\r[endsect]\r[section:overload6 static_string::static_string (6 of 12 overloads)]\r
5843 Construct from a null terminated string. \r[heading Synopsis]\r```\rstatic_string(\r    CharT const* s);\r```\r\r[heading Description]\r[endsect]\r[section:overload7 static_string::static_string (7 of 12 overloads)]\r
5844 Construct from a range of characters. \r[heading Synopsis]\r```\rtemplate<\r    class InputIt>\rstatic_string(\r    InputIt first,\r    InputIt last);\r```\r\r[heading Description]\r[endsect]\r[section:overload8 static_string::static_string (8 of 12 overloads)]\r
5845 Copy constructor. \r[heading Synopsis]\r```\rstatic_string(\r    static_string const& other);\r```\r\r[heading Description]\r[endsect]\r[section:overload9 static_string::static_string (9 of 12 overloads)]\r
5846 Copy constructor. \r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rstatic_string(\r    static_string< M, CharT, Traits > const& other);\r```\r\r[heading Description]\r[endsect]\r[section:overload10 static_string::static_string (10 of 12 overloads)]\r
5847 Construct from an initializer list. \r[heading Synopsis]\r```\rstatic_string(\r    std::initializer_list< CharT > init);\r```\r\r[heading Description]\r[endsect]\r[section:overload11 static_string::static_string (11 of 12 overloads)]\r
5848 Construct from a `string_view` \r[heading Synopsis]\r```\rstatic_string(\r    string_view_type sv);\r```\r\r[heading Description]\r[endsect]\r[section:overload12 static_string::static_string (12 of 12 overloads)]\r
5849 Construct from any object convertible to `string_view_type`. \r[heading Synopsis]\r```\rtemplate<\r    class T>\rstatic_string(\r    T const& t,\r    size_type pos,\r    size_type n);\r```\r\r[heading Description]\r
5850 The range (pos, n) is extracted from the value obtained by converting `t` to `string_view_type`, and used to construct the string. [endsect]\r[endsect]\r\r[section:string_view_type static_string::string_view_type]\r[indexterm2 string_view_type..static_string]\r
5851 The type of `string_view` returned by the interface. \r[heading Synopsis]\r\r```\rusing string_view_type = basic_string_view< CharT, Traits >;\r```\r\r[heading Description]\r[endsect]\r[section:substr static_string::substr]\r[indexterm2 substr..static_string]\r\r[heading Synopsis]\r```\rstring_view_type\rsubstr(\r    size_type pos = 0,\r    size_type count = npos) const;\r```\r\r[heading Description]\r[endsect]\r[section:swap static_string::swap]\r[indexterm2 swap..static_string]\r
5852 Exchange the contents of this string with another. ```\rvoid\r``[link beast.ref.boost__beast__static_string.swap.overload1 swap]``(\r    static_string& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.swap.overload1 more...]]``\r\rtemplate<\r    std::size_t M>\rvoid\r``[link beast.ref.boost__beast__static_string.swap.overload2 swap]``(\r    static_string< M, CharT, Traits >& str);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__static_string.swap.overload2 more...]]``\r```\r[section:overload1 static_string::swap (1 of 2 overloads)]\r
5853 Exchange the contents of this string with another. \r[heading Synopsis]\r```\rvoid\rswap(\r    static_string& str);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 static_string::swap (2 of 2 overloads)]\r
5854 Exchange the contents of this string with another. \r[heading Synopsis]\r```\rtemplate<\r    std::size_t M>\rvoid\rswap(\r    static_string< M, CharT, Traits >& str);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:traits_type static_string::traits_type]\r[indexterm2 traits_type..static_string]\r\r[heading Synopsis]\r\r```\rusing traits_type = Traits;\r```\r\r[heading Description]\r[endsect]\r[section:value_type static_string::value_type]\r[indexterm2 value_type..static_string]\r\r[heading Synopsis]\r\r```\rusing value_type = typename Traits::char_type;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__string_param string_param]\r
5855 A function parameter which efficiently converts to string. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/string_param.hpp]\r\r\r\r```\rclass string_param\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__string_param.operator_string_view_const [*operator string_view const]]]\r    [\r      Implicit conversion to string_view. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__string_param.operator_eq_ [*operator=]]]\r    [\r      Copy assignment (disallowed) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__string_param.str [*str]]]\r    [\r      Returns the contained string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__string_param.string_param [*string_param]]]\r    [\r      Copy constructor (disallowed) \r\r      Constructor. \r    ]\r  ]\r]\r\r[heading Description]\r
5856 This is used as a function parameter type to allow callers notational convenience: objects other than strings may be passed in contexts where a string is expected. The conversion to string is made using `operator<<` to a non-dynamically allocated static buffer if possible, else to a `std::string` on overflow.
5857 To use it, modify your function signature to accept `string_param` and then extract the string inside the function: \r```\r  void print(string_param s)
5858   {
5859       std::cout << s.str();
5860   }
5861 ```\r[section:operator_string_view_const string_param::operator string_view const]\r[indexterm2 operator string_view const..string_param]\r
5862 Implicit conversion to [link beast.ref.boost__beast__string_view `string_view`]. \r[heading Synopsis]\r```\roperator string_view const() const;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ string_param::operator=]\r[indexterm2 operator=..string_param]\r
5863 Copy assignment (disallowed) \r[heading Synopsis]\r```\rstring_param&\roperator=(\r    string_param const&);\r```\r\r[heading Description]\r[endsect]\r[section:str string_param::str]\r[indexterm2 str..string_param]\r
5864 Returns the contained string. \r[heading Synopsis]\r```\rstring_view\rstr() const;\r```\r\r[heading Description]\r[endsect]\r[section:string_param string_param::string_param]\r[indexterm2 string_param..string_param]\r
5865 Copy constructor (disallowed) ```\r``[link beast.ref.boost__beast__string_param.string_param.overload1 string_param]``(\r    string_param const&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__string_param.string_param.overload1 more...]]``\r\r```\r
5866 Constructor. ```\rtemplate<\r    class... Args>\r``[link beast.ref.boost__beast__string_param.string_param.overload2 string_param]``(\r    Args const&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__string_param.string_param.overload2 more...]]``\r```\r[section:overload1 string_param::string_param (1 of 2 overloads)]\r
5867 Copy constructor (disallowed) \r[heading Synopsis]\r```\rstring_param(\r    string_param const&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 string_param::string_param (2 of 2 overloads)]\r
5868 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rstring_param(\r    Args const&... args);\r```\r\r[heading Description]\r
5869 This function constructs a string as if by concatenating the result of streaming each argument in order into an output stream. It is used as a notational convenience at call sites which expect a parameter with the semantics of a [link beast.ref.boost__beast__string_view `string_view`].
5870 The implementation uses a small, internal static buffer to avoid memory allocations especially for the case where the list of arguments to be converted consists of a single integral type.
5871 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
5872 One or more arguments to convert \r  ]]\r]\r
5873 [endsect]\r[endsect]\r\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__string_view string_view]\r[indexterm1 string_view]\r
5874 The type of string view used by the library. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/string_type.hpp]\r\r\r\r```\rusing string_view = boost::string_view;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__swap swap]\r[indexterm1 swap]\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\r``[link beast.ref.boost__beast__swap.overload1 swap]``(\r    static_string< N, CharT, Traits >& lhs,\r    static_string< N, CharT, Traits >& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__swap.overload1 more...]]``\r\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rvoid\r``[link beast.ref.boost__beast__swap.overload2 swap]``(\r    static_string< N, CharT, Traits >& lhs,\r    static_string< M, CharT, Traits >& rhs);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__swap.overload2 more...]]``\r```\r[section:overload1 swap (1 of 2 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    class CharT,\r    class Traits>\rvoid\rswap(\r    static_string< N, CharT, Traits >& lhs,\r    static_string< N, CharT, Traits >& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:overload2 swap (2 of 2 overloads)]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    std::size_t N,\r    std::size_t M,\r    class CharT,\r    class Traits>\rvoid\rswap(\r    static_string< N, CharT, Traits >& lhs,\r    static_string< M, CharT, Traits >& rhs);\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__system_category system_category]\r[indexterm1 system_category]\r
5875 A function to return the system error category used by the library. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r\r```\rerror_category const &\rsystem_category();\r\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__system_error system_error]\r[indexterm1 system_error]\r
5876 The type of system error thrown by the library. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/error.hpp]\r\r\r\r```\rusing system_error = boost::system::system_error;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__tcp_stream tcp_stream]\r[indexterm1 tcp_stream]\r
5877 A TCP/IP stream socket with timeouts and a polymorphic executor. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/tcp_stream.hpp]\r\r\r\r```\rusing tcp_stream = basic_stream< net::ip::tcp, net::executor, unlimited_rate_policy >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream__rebind_executor [*rebind_executor]]]\r    [\r      Rebinds the stream type to another executor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.endpoint_type [*endpoint_type]]]\r    [\r      The endpoint type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.executor_type [*executor_type]]]\r    [\r      The type of the executor associated with the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.protocol_type [*protocol_type]]]\r    [\r      The protocol type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.socket_type [*socket_type]]]\r    [\r      The type of the underlying socket. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_connect [*async_connect]]]\r    [\r      Connect the stream to the specified endpoint asynchronously. \r\r      Establishes a connection by trying each endpoint in a sequence asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_read_some [*async_read_some]]]\r    [\r      Read some data asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.async_write_some [*async_write_some]]]\r    [\r      Write some data asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.basic_stream [*basic_stream]]]\r    [\r      Constructor. \r\r      Move constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.cancel [*cancel]]]\r    [\r      Cancel all asynchronous operations associated with the socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.close [*close]]]\r    [\r      Close the timed stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.connect [*connect]]]\r    [\r      Connect the stream to the specified endpoint. \r\r      Establishes a connection by trying each endpoint in a sequence. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_after [*expires_after]]]\r    [\r      Set the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_at [*expires_at]]]\r    [\r      Set the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.expires_never [*expires_never]]]\r    [\r      Disable the timeout for the next logical operation. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.get_executor [*get_executor]]]\r    [\r      Get the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.operator_eq_ [*operator=]]]\r    [\r      Move assignment (deleted). \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.rate_policy [*rate_policy]]]\r    [\r      Returns the rate policy associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.read_some [*read_some]]]\r    [\r      Read some data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.release_socket [*release_socket]]]\r    [\r      Release ownership of the underlying socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.socket [*socket]]]\r    [\r      Return a reference to the underlying socket. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.write_some [*write_some]]]\r    [\r      Write some data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__basic_stream.basic_stream_dtor_ [*~basic_stream]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r
5878 This stream wraps a `net::basic_stream_socket` to provide the following features:
5879
5880 * An ['Executor] may be associated with the stream, which will be used to invoke any completion handlers which do not already have an associated executor. This achieves support for [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html [P1322R0] Networking TS enhancement to enable custom I/O executors].
5881
5882
5883 * Timeouts may be specified for each logical asynchronous operation performing any reading, writing, or connecting.
5884
5885
5886 * A ['RatePolicy] may be associated with the stream, to implement rate limiting through the policy's interface.
5887
5888 Although the stream supports multiple concurrent outstanding asynchronous operations, the stream object is not thread-safe. The caller is responsible for ensuring that the stream is accessed from only one thread at a time. This includes the times when the stream, and its underlying socket, are accessed by the networking implementation. To meet this thread safety requirement, all asynchronous operations must be performed by the stream within the same implicit strand (only one thread `net::io_context::run`) or within the same explicit strand, such as an instance of `net::strand`.
5889 Completion handlers with explicit associated executors (such as those arising from use of `net::bind_executor`) will be invoked by the stream using the associated executor. Otherwise, the completion handler will be invoked by the executor associated with the stream upon construction. The type of executor used with this stream must meet the following requirements:
5890
5891 * Function objects submitted to the executor shall never run concurrently with each other.
5892
5893 The executor type `net::strand` meets these requirements. Use of a strand as the executor in the stream class template offers an additional notational convenience: the strand does not need to be specified in each individual initiating function call.
5894 Unlike other stream wrappers, the underlying socket is accessed through the [link beast.ref.boost__beast__basic_stream.socket `basic_stream::socket`] member function instead of `next_layer`. This causes the [link beast.ref.boost__beast__basic_stream `basic_stream`] to be returned in calls to [link beast.ref.boost__beast__get_lowest_layer `get_lowest_layer`].
5895 [heading Usage]
5896
5897 To use this stream declare an instance of the class. Then, before each logical operation for which a timeout is desired, call [link beast.ref.boost__beast__basic_stream.expires_after `basic_stream::expires_after`] with a duration, or call [link beast.ref.boost__beast__basic_stream.expires_at `basic_stream::expires_at`] with a time point. Alternatively, call [link beast.ref.boost__beast__basic_stream.expires_never `basic_stream::expires_never`] to disable the timeout for subsequent logical operations. A logical operation is any series of one or more direct or indirect calls to the timeout stream's asynchronous read, asynchronous write, or asynchronous connect functions.
5898 When a timeout is set and a mixed operation is performed (one that includes both reads and writes, for example) the timeout applies to all of the intermediate asynchronous operations used in the enclosing operation. This allows timeouts to be applied to stream algorithms which were not written specifically to allow for timeouts, when those algorithms are passed a timeout stream with a timeout set.
5899 When a timeout occurs the socket will be closed, canceling any pending I/O operations. The completion handlers for these canceled operations will be invoked with the error [link beast.ref.boost__beast__error `timeout`].
5900 [heading Examples]
5901
5902 This function reads an HTTP request with a timeout, then sends the HTTP response with a different timeout.
5903 \r```\r  void process_http_1 (tcp_stream& stream, net::yield_context yield)
5904   {
5905       flat_buffer buffer;
5906       http::request<http::empty_body> req;
5907
5908       // Read the request, with a 15 second timeout
5909       stream.expires_after(std::chrono::seconds(15));
5910       http::async_read(stream, buffer, req, yield);
5911
5912       // Calculate the response
5913       http::response<http::string_body> res = make_response(req);
5914
5915       // Send the response, with a 30 second timeout.
5916       stream.expires_after (std::chrono::seconds(30));
5917       http::async_write (stream, res, yield);
5918   }
5919 ```\r
5920 The example above could be expressed using a single timeout with a simple modification. The function that follows first reads an HTTP request then sends the HTTP response, with a single timeout that applies to the entire combined operation of reading and writing:
5921 \r```\r  void process_http_2 (tcp_stream& stream, net::yield_context yield)
5922   {
5923       flat_buffer buffer;
5924       http::request<http::empty_body> req;
5925
5926       // Require that the read and write combined take no longer than 30 seconds
5927       stream.expires_after(std::chrono::seconds(30));
5928
5929       http::async_read(stream, buffer, req, yield);
5930
5931       http::response<http::string_body> res = make_response(req);
5932       http::async_write (stream, res, yield);
5933   }
5934 ```\r
5935 Some stream algorithms, such as `ssl::stream::async_handshake` perform both reads and writes. A timeout set before calling the initiating function of such composite stream algorithms will apply to the entire composite operation. For example, a timeout may be set on performing the SSL handshake thusly:
5936 \r```\r  void do_ssl_handshake (net::ssl::stream<tcp_stream>& stream, net::yield_context yield)
5937   {
5938       // Require that the SSL handshake take no longer than 10 seconds
5939       stream.expires_after(std::chrono::seconds(10));
5940
5941       stream.async_handshake(net::ssl::stream_base::client, yield);
5942   }
5943 ```\r
5944 [heading Blocking I/O]
5945
5946 Synchronous functions behave identically as that of the wrapped `net::basic_stream_socket`. Timeouts are not available when performing blocking calls.
5947 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`Protocol`][\r    
5948 A type meeting the requirements of ['Protocol] representing the protocol the protocol to use for the basic stream socket. A common choice is `net::ip::tcp`.\r  ]]\r  [[`Executor`][\r    
5949 A type meeting the requirements of ['Executor] to be used for submitting all completion handlers which do not already have an associated executor. If this type is omitted, the default of `net::executor` will be used.\r  ]]\r]\r
5950 [heading Thread Safety]
5951 ['Distinct objects]: Safe.\r\r['Shared objects]: Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
5952 [heading See Also]\r
5953
5954
5955 * [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1322r0.html [P1322R0] Networking TS enhancement to enable custom I/O executors]. 
5956
5957 \r[heading Description]\r
5958 [heading See Also]\r
5959 [link beast.ref.boost__beast__basic_stream `basic_stream`] 
5960 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__teardown teardown]\r[indexterm1 teardown]\r
5961 Tear down a `net::ssl::stream`. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/ssl.hpp]\r\r\r\r```\rtemplate<\r    class __SyncStream__>\rvoid\rteardown(\r    role_type role,\r    net::ssl::stream< SyncStream >& stream,\r    error_code& ec);\r\r```\r\r[heading Description]\r
5962 This tears down a connection. The implementation will call the overload of this function based on the `Stream` parameter used to consruct the socket. When `Stream` is a user defined type, and not a `net::ip::tcp::socket` or any `net::ssl::stream`, callers are responsible for providing a suitable overload of this function.
5963 [heading Parameters]\r[table [[Name][Description]]\r  [[`role`][\r    
5964 The role of the local endpoint\r  ]]\r  [[`stream`][\r    
5965 The stream to tear down.\r  ]]\r  [[`ec`][\r    
5966 Set to the error if any occurred. \r  ]]\r]\r
5967 \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__test__any_handler test::any_handler]\r[indexterm1 test::any_handler]\r
5968 Return a test CompletionHandler which requires invocation. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/handler.hpp]\r\r\r\r```\rhandler\rany_handler();\r\r```\r\r[heading Description]\r
5969 The returned handler can be invoked with any signature. The handler fails the test if:
5970
5971 * The handler is destroyed without being invoked. 
5972
5973 \r\r[endsect]\r[section:boost__beast__test__connect test::connect]\r[indexterm1 test::connect]\r
5974 Return a new stream connected to the given stream. ```\rtemplate<\r    class... Args>\rstream\r``[link beast.ref.boost__beast__test__connect.overload1 connect]``(\r    stream& to,\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__connect.overload1 more...]]``\r\r```\r
5975 Connect two TCP sockets together. ```\rtemplate<\r    class __Executor__>\rbool\r``[link beast.ref.boost__beast__test__connect.overload2 connect]``(\r    net::basic_stream_socket< net::ip::tcp, Executor >& s1,\r    net::basic_stream_socket< net::ip::tcp, Executor >& s2);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__connect.overload2 more...]]``\r```\r[section:overload1 test::connect (1 of 2 overloads)]\r
5976 Return a new stream connected to the given stream. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/stream.hpp]\r\r\r\r```\rtemplate<\r    class... Args>\rstream\rconnect(\r    stream& to,\r    Args&&... args);\r\r```\r\r[heading Description]\r
5977 [heading Parameters]\r[table [[Name][Description]]\r  [[`to`][\r    
5978 The stream to connect to.\r  ]]\r  [[`args`][\r    
5979 Optional arguments forwarded to the new stream's constructor.\r  ]]\r]\r
5980 [heading Return Value]
5981 The new, connected stream. 
5982 \r\r[endsect]\r[section:overload2 test::connect (2 of 2 overloads)]\r
5983 Connect two TCP sockets together. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/tcp.hpp]\r\r\r\r```\rtemplate<\r    class __Executor__>\rbool\rconnect(\r    net::basic_stream_socket< net::ip::tcp, Executor >& s1,\r    net::basic_stream_socket< net::ip::tcp, Executor >& s2);\r\r```\r\r[heading Description]\r\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__test__error test::error]\r[indexterm1 test::error]\r
5984 Error codes returned from unit testing algorithms. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/error.hpp]\r\r\r```\renum error\r```\r\r[indexterm2 test_failure..test::error]\r[heading Values]\r[table [[Name][Description]]\r  [[[^test_failure]][The test stream generated a simulated testing error. \r\rThis error is returned by a @ref fail_count object
5985 when it generates a simulated error.
5986  ]]\r]\r\r[heading Description]\r\r\r[endsect]\r[section:boost__beast__test__fail_count test::fail_count]\r
5987 A countdown to simulated failure. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/fail_count.hpp]\r\r\r\r```\rclass fail_count\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__test__fail_count.fail [*fail]]]\r    [\r      Throw an exception on the Nth failure. \r\r      Set an error code on the Nth failure. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__fail_count.fail_count [*fail_count]]]\r    [\r      \r\r      Construct a counter. \r    ]\r  ]\r]\r\r[heading Description]\r
5988 On the Nth operation, the class will fail with the specified error code, or the default error code of [link beast.ref.boost__beast__test__error `test::test_failure`].
5989 Instances of this class may be used to build objects which are specifically designed to aid in writing unit tests, for interfaces which can throw exceptions or return `error_code` values representing failure. [section:fail test::fail_count::fail]\r[indexterm2 fail..test::fail_count]\r
5990 Throw an exception on the Nth failure. ```\rvoid\r``[link beast.ref.boost__beast__test__fail_count.fail.overload1 fail]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__fail_count.fail.overload1 more...]]``\r\r```\r
5991 Set an error code on the Nth failure. ```\rbool\r``[link beast.ref.boost__beast__test__fail_count.fail.overload2 fail]``(\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__fail_count.fail.overload2 more...]]``\r```\r[section:overload1 test::fail_count::fail (1 of 2 overloads)]\r
5992 Throw an exception on the Nth failure. \r[heading Synopsis]\r```\rvoid\rfail();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 test::fail_count::fail (2 of 2 overloads)]\r
5993 Set an error code on the Nth failure. \r[heading Synopsis]\r```\rbool\rfail(\r    error_code& ec);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:fail_count test::fail_count::fail_count]\r[indexterm2 fail_count..test::fail_count]\r```\r``[link beast.ref.boost__beast__test__fail_count.fail_count.overload1 fail_count]``(\r    fail_count&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__fail_count.fail_count.overload1 more...]]``\r\r```\r
5994 Construct a counter. ```\rexplicit\r``[link beast.ref.boost__beast__test__fail_count.fail_count.overload2 fail_count]``(\r    std::size_t n,\r    error_code ev = error::test_failure);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__fail_count.fail_count.overload2 more...]]``\r```\r[section:overload1 test::fail_count::fail_count (1 of 2 overloads)]\r\r[heading Synopsis]\r```\rfail_count(\r    fail_count&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 test::fail_count::fail_count (2 of 2 overloads)]\r
5995 Construct a counter. \r[heading Synopsis]\r```\rfail_count(\r    std::size_t n,\r    error_code ev = error::test_failure);\r```\r\r[heading Description]\r
5996 [heading Parameters]\r[table [[Name][Description]]\r  [[`n`][\r    
5997 The 0-based index of the operation to fail on or after \r  ]]\r  [[`ev`][\r    
5998 An optional error code to use when generating a simulated failure \r  ]]\r]\r
5999 [endsect]\r[endsect]\r\r\r\r[endsect]\r\r\r\r[section:boost__beast__test__fail_handler test::fail_handler]\r[indexterm1 test::fail_handler]\r
6000 Return a test CompletionHandler which requires a specific error code. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/handler.hpp]\r\r\r\r```\rhandler\rfail_handler(\r    error_code ec);\r\r```\r\r[heading Description]\r
6001 This handler can be invoked with any signature whose first parameter is an `error_code`. The handler fails the test if:
6002
6003 * The handler is destroyed without being invoked.
6004
6005
6006 * The handler is invoked with an error code different from what is specified.
6007
6008 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
6009 The error code to specify. \r  ]]\r]\r
6010 \r\r[endsect]\r[section:boost__beast__test__handler test::handler]\r
6011 A CompletionHandler used for testing. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/handler.hpp]\r\r\r\r```\rclass handler\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__test__handler.handler [*handler]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__handler.operator_lp__rp_ [*operator()]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__handler.handler_dtor_ [*~handler]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r
6012 This completion handler is used by tests to ensure correctness of behavior. It is designed as a single type to reduce template instantiations, with configurable settings through constructor arguments. Typically this type will be used in type lists and not instantiated directly; instances of this class are returned by the helper functions listed below.
6013 [heading See Also]\r
6014 [link beast.ref.boost__beast__test__success_handler `test::success_handler`], [link beast.ref.boost__beast__test__fail_handler `test::fail_handler`], [link beast.ref.boost__beast__test__any_handler `test::any_handler`] 
6015 [section:handler test::handler::handler]\r[indexterm2 handler..test::handler]\r```\r``[link beast.ref.boost__beast__test__handler.handler.overload1 handler]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__handler.handler.overload1 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__test__handler.handler.overload2 handler]``(\r    error_code ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__handler.handler.overload2 more...]]``\r\rexplicit\r``[link beast.ref.boost__beast__test__handler.handler.overload3 handler]``(\r    boost::none_t);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__handler.handler.overload3 more...]]``\r\r``[link beast.ref.boost__beast__test__handler.handler.overload4 handler]``(\r    handler&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__handler.handler.overload4 more...]]``\r```\r[section:overload1 test::handler::handler (1 of 4 overloads)]\r\r[heading Synopsis]\r```\rhandler();\r```\r\r[heading Description]\r[endsect]\r[section:overload2 test::handler::handler (2 of 4 overloads)]\r\r[heading Synopsis]\r```\rhandler(\r    error_code ec);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 test::handler::handler (3 of 4 overloads)]\r\r[heading Synopsis]\r```\rhandler(\r    boost::none_t);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 test::handler::handler (4 of 4 overloads)]\r\r[heading Synopsis]\r```\rhandler(\r    handler&& other);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:operator_lp__rp_ test::handler::operator()]\r[indexterm2 operator()..test::handler]\r```\rtemplate<\r    class... Args>\rvoid\r``[link beast.ref.boost__beast__test__handler.operator_lp__rp_.overload1 operator()]``(\r    error_code ec,\r    Args&& ...);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__handler.operator_lp__rp_.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__test__handler.operator_lp__rp_.overload2 operator()]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__handler.operator_lp__rp_.overload2 more...]]``\r\rtemplate<\r    class Arg0,\r    class... Args,\r    [role red error.class-detail-template.1][role red error.class-detail-template.2] = typename std::enable_if<            ! std::is_convertible<Arg0, error_code>::value>::type>\rvoid\r``[link beast.ref.boost__beast__test__handler.operator_lp__rp_.overload3 operator()]``(\r    Arg0&&,\r    Args&& ...);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__handler.operator_lp__rp_.overload3 more...]]``\r```\r[section:overload1 test::handler::operator() (1 of 3 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rvoid\roperator()(\r    error_code ec,\r    Args&& ...);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 test::handler::operator() (2 of 3 overloads)]\r\r[heading Synopsis]\r```\rvoid\roperator()();\r```\r\r[heading Description]\r[endsect]\r[section:overload3 test::handler::operator() (3 of 3 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class Arg0,\r    class... Args,\r    [role red error.class-detail-template.1][role red error.class-detail-template.2] = typename std::enable_if<            ! std::is_convertible<Arg0, error_code>::value>::type>\rvoid\roperator()(\r    Arg0&&,\r    Args&& ...);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:handler_dtor_ test::handler::~handler]\r[indexterm2 ~handler..test::handler]\r\r[heading Synopsis]\r```\r~handler();\r```\r\r[heading Description]\r[endsect]\r\r\r[endsect]\r\r\r\r[section:boost__beast__test__run test::run]\r[indexterm1 test::run]\r
6016 Run an I/O context. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/handler.hpp]\r\r\r\r```\rvoid\rrun(\r    net::io_context& ioc);\r\r```\r\r[heading Description]\r
6017 This function runs and dispatches handlers on the specified I/O context, until one of the following conditions is true:
6018
6019 * The I/O context runs out of work.
6020
6021 [heading Parameters]\r[table [[Name][Description]]\r  [[`ioc`][\r    
6022 The I/O context to run \r  ]]\r]\r
6023 \r\r[endsect]\r[section:boost__beast__test__run_for test::run_for]\r[indexterm1 test::run_for]\r
6024 Run an I/O context for a certain amount of time. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/handler.hpp]\r\r\r\r```\rtemplate<\r    class Rep,\r    class Period>\rvoid\rrun_for(\r    net::io_context& ioc,\r    std::chrono::duration< Rep, Period > elapsed);\r\r```\r\r[heading Description]\r
6025 This function runs and dispatches handlers on the specified I/O context, until one of the following conditions is true:
6026
6027 * The I/O context runs out of work.
6028
6029
6030 * No completions occur and the specified amount of time has elapsed.
6031
6032 [heading Parameters]\r[table [[Name][Description]]\r  [[`ioc`][\r    
6033 The I/O context to run\r  ]]\r  [[`elapsed`][\r    
6034 The maximum amount of time to run for. \r  ]]\r]\r
6035 \r\r[endsect]\r[section:boost__beast__test__stream test::stream]\r
6036 A two-way socket useful for unit testing. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/stream.hpp]\r\r\r\r```\rclass stream\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__test__stream.buffer_type [*buffer_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.executor_type [*executor_type]]]\r    [\r      The type of the executor associated with the object. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__test__stream.append [*append]]]\r    [\r      Appends a string to the pending input data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.async_read_some [*async_read_some]]]\r    [\r      Start an asynchronous read. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.async_write_some [*async_write_some]]]\r    [\r      Start an asynchronous write. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.buffer [*buffer]]]\r    [\r      Direct input buffer access. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.clear [*clear]]]\r    [\r      Clear the pending input area. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.close [*close]]]\r    [\r      Close the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.close_remote [*close_remote]]]\r    [\r      Close the other end of the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.connect [*connect]]]\r    [\r      Establish a connection. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.get_executor [*get_executor]]]\r    [\r      Return the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.nread [*nread]]]\r    [\r      Return the number of reads. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.nread_bytes [*nread_bytes]]]\r    [\r      Return the number of bytes read. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.nwrite [*nwrite]]]\r    [\r      Return the number of writes. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.nwrite_bytes [*nwrite_bytes]]]\r    [\r      Return the number of bytes written. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.operator_eq_ [*operator=]]]\r    [\r      Move Assignment. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.read_size [*read_size]]]\r    [\r      Set the maximum number of bytes returned by read_some. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.read_some [*read_some]]]\r    [\r      Read some data from the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.str [*str]]]\r    [\r      Returns a string view representing the pending input data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.stream [*stream]]]\r    [\r      Move Constructor. \r\r      Construct a stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.write_size [*write_size]]]\r    [\r      Set the maximum number of bytes returned by write_some. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.write_some [*write_some]]]\r    [\r      Write some data to the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream.stream_dtor_ [*~stream]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
6037 An instance of this class simulates a traditional socket, while also providing features useful for unit testing. Each endpoint maintains an independent buffer called the input area. Writes from one endpoint append data to the peer's pending input area. When an endpoint performs a read and data is present in the input area, the data is delivered to the blocking or asynchronous operation. Otherwise the operation is blocked or deferred until data is made available, or until the endpoints become disconnected.
6038 These streams may be used anywhere an algorithm accepts a reference to a synchronous or asynchronous read or write stream. It is possible to use a test stream in a call to `net::read_until`, or in a call to [link beast.ref.boost__beast__http__async_write `http::async_write`] for example.
6039 As with Boost.Asio I/O objects, a [link beast.ref.boost__beast__test__stream `test::stream`] constructs with a reference to the `net::io_context` to use for handling asynchronous I/O. For asynchronous operations, the stream follows the same rules as a traditional asio socket with respect to how completion handlers for asynchronous operations are performed.
6040 To facilitate testing, these streams support some additional features:
6041
6042 * The input area, represented by a [link beast.ref.boost__beast__basic_flat_buffer `basic_flat_buffer`], may be directly accessed by the caller to inspect the contents before or after the remote endpoint writes data. This allows a unit test to verify that the received data matches.
6043
6044
6045 * Data may be manually appended to the input area. This data will delivered in the next call to [link beast.ref.boost__beast__test__stream.read_some `test::stream::read_some`] or [link beast.ref.boost__beast__test__stream.async_read_some `test::stream::async_read_some`]. This allows predefined test vectors to be set up for testing read algorithms.
6046
6047
6048 * The stream may be constructed with a fail count. The stream will eventually fail with a predefined error after a certain number of operations, where the number of operations is controlled by the test. When a test loops over a range of operation counts, it is possible to exercise every possible point of failure in the algorithm being tested. When used correctly the technique allows the tests to reach a high percentage of code coverage.
6049
6050 [heading Thread Safety]
6051 ['Distinct] ['objects:] Safe.\r\r['Shared] ['objects:] Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
6052 [heading Concepts]
6053
6054 * ['SyncReadStream] 
6055 * ['SyncWriteStream] 
6056 * ['AsyncReadStream] 
6057 * ['AsyncWriteStream] 
6058
6059
6060 [section:append test::stream::append]\r[indexterm2 append..test::stream]\r
6061 Appends a string to the pending input data. \r[heading Synopsis]\r```\rvoid\rappend(\r    string_view s);\r```\r\r[heading Description]\r[endsect]\r[section:async_read_some test::stream::async_read_some]\r[indexterm2 async_read_some..test::stream]\r
6062 Start an asynchronous read. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__,\r    class __ReadHandler__>\r``__deduced__``\rasync_read_some(\r    MutableBufferSequence const& buffers,\r    ReadHandler&& handler);\r```\r\r[heading Description]\r
6063 This function is used to asynchronously read one or more bytes of data from the stream. The function call always returns immediately.
6064 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6065 The buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
6066 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6067       error_code const& ec,           // Result of operation.
6068       std::size_t bytes_transferred   // Number of bytes read.
6069   );
6070 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
6071 [heading Remarks]\r
6072 The `async_read_some` operation may not read all of the requested number of bytes. Consider using the function `net::async_read` if you need to ensure that the requested amount of data is read before the asynchronous operation completes. 
6073 [endsect]\r[section:async_write_some test::stream::async_write_some]\r[indexterm2 async_write_some..test::stream]\r
6074 Start an asynchronous write. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class __WriteHandler__>\r``__deduced__``\rasync_write_some(\r    ConstBufferSequence const& buffers,\r    WriteHandler&& handler);\r```\r\r[heading Description]\r
6075 This function is used to asynchronously write one or more bytes of data to the stream. The function call always returns immediately.
6076 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6077 The data to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.\r  ]]\r  [[`handler`][\r    
6078 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6079       error_code const& ec,           // Result of operation.
6080       std::size_t bytes_transferred   // Number of bytes written.
6081   );
6082 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
6083 [heading Remarks]\r
6084 The `async_write_some` operation may not transmit all of the data to the peer. Consider using the function `net::async_write` if you need to ensure that all data is written before the asynchronous operation completes. 
6085 [endsect]\r[section:buffer test::stream::buffer]\r[indexterm2 buffer..test::stream]\r
6086 Direct input buffer access. \r[heading Synopsis]\r```\rbuffer_type&\rbuffer();\r```\r\r[heading Description]\r[endsect]\r[section:buffer_type test::stream::buffer_type]\r[indexterm2 buffer_type..test::stream]\r\r[heading Synopsis]\r\r```\rusing buffer_type = flat_buffer;\r```\r\r[heading Description]\r[endsect]\r[section:clear test::stream::clear]\r[indexterm2 clear..test::stream]\r
6087 Clear the pending input area. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r[endsect]\r[section:close test::stream::close]\r[indexterm2 close..test::stream]\r
6088 Close the stream. \r[heading Synopsis]\r```\rvoid\rclose();\r```\r\r[heading Description]\r
6089 The other end of the connection will see `error::eof` after reading all the remaining data. [endsect]\r[section:close_remote test::stream::close_remote]\r[indexterm2 close_remote..test::stream]\r
6090 Close the other end of the stream. \r[heading Synopsis]\r```\rvoid\rclose_remote();\r```\r\r[heading Description]\r
6091 This end of the connection will see `error::eof` after reading all the remaining data. [endsect]\r[section:connect test::stream::connect]\r[indexterm2 connect..test::stream]\r
6092 Establish a connection. \r[heading Synopsis]\r```\rvoid\rconnect(\r    stream& remote);\r```\r\r[heading Description]\r[endsect]\r[section:executor_type test::stream::executor_type]\r[indexterm2 executor_type..test::stream]\r
6093 The type of the executor associated with the object. \r[heading Synopsis]\r\r```\rusing executor_type = net::io_context::executor_type;\r```\r\r[heading Description]\r[endsect]\r[section:get_executor test::stream::get_executor]\r[indexterm2 get_executor..test::stream]\r
6094 Return the executor associated with the object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor();\r```\r\r[heading Description]\r[endsect]\r[section:nread test::stream::nread]\r[indexterm2 nread..test::stream]\r
6095 Return the number of reads. \r[heading Synopsis]\r```\rstd::size_t\rnread() const;\r```\r\r[heading Description]\r[endsect]\r[section:nread_bytes test::stream::nread_bytes]\r[indexterm2 nread_bytes..test::stream]\r
6096 Return the number of bytes read. \r[heading Synopsis]\r```\rstd::size_t\rnread_bytes() const;\r```\r\r[heading Description]\r[endsect]\r[section:nwrite test::stream::nwrite]\r[indexterm2 nwrite..test::stream]\r
6097 Return the number of writes. \r[heading Synopsis]\r```\rstd::size_t\rnwrite() const;\r```\r\r[heading Description]\r[endsect]\r[section:nwrite_bytes test::stream::nwrite_bytes]\r[indexterm2 nwrite_bytes..test::stream]\r
6098 Return the number of bytes written. \r[heading Synopsis]\r```\rstd::size_t\rnwrite_bytes() const;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ test::stream::operator=]\r[indexterm2 operator=..test::stream]\r
6099 Move Assignment. \r[heading Synopsis]\r```\rstream&\roperator=(\r    stream&& other);\r```\r\r[heading Description]\r
6100 Moving the stream while asynchronous operations are pending results in undefined behavior. [endsect]\r[section:read_size test::stream::read_size]\r[indexterm2 read_size..test::stream]\r
6101 Set the maximum number of bytes returned by read\_some. \r[heading Synopsis]\r```\rvoid\rread_size(\r    std::size_t n);\r```\r\r[heading Description]\r[endsect]\r[section:read_some test::stream::read_some]\r[indexterm2 read_some..test::stream]\r
6102 Read some data from the stream. ```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__test__stream.read_some.overload1 read_some]``(\r    MutableBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.read_some.overload1 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__test__stream.read_some.overload2 read_some]``(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.read_some.overload2 more...]]``\r```\r[section:overload1 test::stream::read_some (1 of 2 overloads)]\r
6103 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers);\r```\r\r[heading Description]\r
6104 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
6105 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6106 The buffers into which the data will be read.\r  ]]\r]\r
6107 [heading Return Value]
6108 The number of bytes read.
6109 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
6110 Thrown on failure.\r  ]]\r]\r
6111 [heading Remarks]\r
6112 The `read_some` operation may not read all of the requested number of bytes. Consider using the function `net::read` if you need to ensure that the requested amount of data is read before the blocking operation completes. 
6113 [endsect]\r[section:overload2 test::stream::read_some (2 of 2 overloads)]\r
6114 Read some data from the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
6115 This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
6116 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6117 The buffers into which the data will be read.\r  ]]\r  [[`ec`][\r    
6118 Set to indicate what error occurred, if any.\r  ]]\r]\r
6119 [heading Return Value]
6120 The number of bytes read.
6121 [heading Remarks]\r
6122 The `read_some` operation may not read all of the requested number of bytes. Consider using the function `net::read` if you need to ensure that the requested amount of data is read before the blocking operation completes. 
6123 [endsect]\r[endsect]\r\r[section:str test::stream::str]\r[indexterm2 str..test::stream]\r
6124 Returns a string view representing the pending input data. \r[heading Synopsis]\r```\rstring_view\rstr() const;\r```\r\r[heading Description]\r[endsect]\r[section:stream test::stream::stream]\r[indexterm2 stream..test::stream]\r
6125 Move Constructor. ```\r``[link beast.ref.boost__beast__test__stream.stream.overload1 stream]``(\r    stream&& other);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.stream.overload1 more...]]``\r\r```\r
6126 Construct a stream. ```\rexplicit\r``[link beast.ref.boost__beast__test__stream.stream.overload2 stream]``(\r    net::io_context& ioc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.stream.overload2 more...]]``\r\r``[link beast.ref.boost__beast__test__stream.stream.overload3 stream]``(\r    net::io_context& ioc,\r    fail_count& fc);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.stream.overload3 more...]]``\r\r``[link beast.ref.boost__beast__test__stream.stream.overload4 stream]``(\r    net::io_context& ioc,\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.stream.overload4 more...]]``\r\r``[link beast.ref.boost__beast__test__stream.stream.overload5 stream]``(\r    net::io_context& ioc,\r    fail_count& fc,\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.stream.overload5 more...]]``\r```\r[section:overload1 test::stream::stream (1 of 5 overloads)]\r
6127 Move Constructor. \r[heading Synopsis]\r```\rstream(\r    stream&& other);\r```\r\r[heading Description]\r
6128 Moving the stream while asynchronous operations are pending results in undefined behavior. [endsect]\r[section:overload2 test::stream::stream (2 of 5 overloads)]\r
6129 Construct a stream. \r[heading Synopsis]\r```\rstream(\r    net::io_context& ioc);\r```\r\r[heading Description]\r
6130 The stream will be created in a disconnected state.
6131 [heading Parameters]\r[table [[Name][Description]]\r  [[`ioc`][\r    
6132 The `io_context` object that the stream will use to dispatch handlers for any asynchronous operations. \r  ]]\r]\r
6133 [endsect]\r[section:overload3 test::stream::stream (3 of 5 overloads)]\r
6134 Construct a stream. \r[heading Synopsis]\r```\rstream(\r    net::io_context& ioc,\r    fail_count& fc);\r```\r\r[heading Description]\r
6135 The stream will be created in a disconnected state.
6136 [heading Parameters]\r[table [[Name][Description]]\r  [[`ioc`][\r    
6137 The `io_context` object that the stream will use to dispatch handlers for any asynchronous operations.\r  ]]\r  [[`fc`][\r    
6138 The [link beast.ref.boost__beast__test__fail_count `test::fail_count`] to associate with the stream. Each I/O operation performed on the stream will increment the fail count. When the fail count reaches its internal limit, a simulated failure error will be raised. \r  ]]\r]\r
6139 [endsect]\r[section:overload4 test::stream::stream (4 of 5 overloads)]\r
6140 Construct a stream. \r[heading Synopsis]\r```\rstream(\r    net::io_context& ioc,\r    string_view s);\r```\r\r[heading Description]\r
6141 The stream will be created in a disconnected state.
6142 [heading Parameters]\r[table [[Name][Description]]\r  [[`ioc`][\r    
6143 The `io_context` object that the stream will use to dispatch handlers for any asynchronous operations.\r  ]]\r  [[`s`][\r    
6144 A string which will be appended to the input area, not including the null terminator. \r  ]]\r]\r
6145 [endsect]\r[section:overload5 test::stream::stream (5 of 5 overloads)]\r
6146 Construct a stream. \r[heading Synopsis]\r```\rstream(\r    net::io_context& ioc,\r    fail_count& fc,\r    string_view s);\r```\r\r[heading Description]\r
6147 The stream will be created in a disconnected state.
6148 [heading Parameters]\r[table [[Name][Description]]\r  [[`ioc`][\r    
6149 The `io_context` object that the stream will use to dispatch handlers for any asynchronous operations.\r  ]]\r  [[`fc`][\r    
6150 The [link beast.ref.boost__beast__test__fail_count `test::fail_count`] to associate with the stream. Each I/O operation performed on the stream will increment the fail count. When the fail count reaches its internal limit, a simulated failure error will be raised.\r  ]]\r  [[`s`][\r    
6151 A string which will be appended to the input area, not including the null terminator. \r  ]]\r]\r
6152 [endsect]\r[endsect]\r\r[section:write_size test::stream::write_size]\r[indexterm2 write_size..test::stream]\r
6153 Set the maximum number of bytes returned by write\_some. \r[heading Synopsis]\r```\rvoid\rwrite_size(\r    std::size_t n);\r```\r\r[heading Description]\r[endsect]\r[section:write_some test::stream::write_some]\r[indexterm2 write_some..test::stream]\r
6154 Write some data to the stream. ```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__test__stream.write_some.overload1 write_some]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.write_some.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__test__stream.write_some.overload2 write_some]``(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__test__stream.write_some.overload2 more...]]``\r```\r[section:overload1 test::stream::write_some (1 of 2 overloads)]\r
6155 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
6156 This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
6157 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6158 The data to be written.\r  ]]\r]\r
6159 [heading Return Value]
6160 The number of bytes written.
6161 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`boost::system::system_error`][\r    
6162 Thrown on failure.\r  ]]\r]\r
6163 [heading Remarks]\r
6164 The `write_some` operation may not transmit all of the data to the peer. Consider using the function `net::write` if you need to ensure that all data is written before the blocking operation completes. 
6165 [endsect]\r[section:overload2 test::stream::write_some (2 of 2 overloads)]\r
6166 Write some data to the stream. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
6167 This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
6168 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6169 The data to be written.\r  ]]\r  [[`ec`][\r    
6170 Set to indicate what error occurred, if any.\r  ]]\r]\r
6171 [heading Return Value]
6172 The number of bytes written.
6173 [heading Remarks]\r
6174 The `write_some` operation may not transmit all of the data to the peer. Consider using the function `net::write` if you need to ensure that all data is written before the blocking operation completes. 
6175 [endsect]\r[endsect]\r\r[section:stream_dtor_ test::stream::~stream]\r[indexterm2 ~stream..test::stream]\r
6176 Destructor. \r[heading Synopsis]\r```\r~stream();\r```\r\r[heading Description]\r
6177 If an asynchronous read operation is pending, it will simply be discarded with no notification to the completion handler.
6178 If a connection is established while the stream is destroyed, the peer will see the error `net::error::connection_reset` when performing any reads or writes. [endsect]\r\r\r[endsect]\r\r\r\r[section:boost__beast__test__stream__read_op test::stream::read_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/stream.hpp]\r\r\r\r```\rtemplate<\r    class __Handler__,\r    class Buffers>\rclass read_op\r```\r\r[heading Description]\r\r\r[endsect]\r\r\r\r[section:boost__beast__test__stream__read_op_base test::stream::read_op_base]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/stream.hpp]\r\r\r\r```\rstruct read_op_base\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__test__stream__read_op_base.operator_lp__rp_ [*operator()]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__read_op_base.read_op_base_dtor_ [*~read_op_base]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r[section:operator_lp__rp_ test::stream::read_op_base::operator()]\r[indexterm2 operator()..test::stream::read_op_base]\r\r[heading Synopsis]\r```\rvoid\roperator()(\r    error_code ec);\r```\r\r[heading Description]\r[endsect]\r[section:read_op_base_dtor_ test::stream::read_op_base::~read_op_base]\r[indexterm2 ~read_op_base..test::stream::read_op_base]\r\r[heading Synopsis]\r```\rvirtual\r~read_op_base();\r```\r\r[heading Description]\r[endsect]\r\r\r[endsect]\r\r\r\r[section:boost__beast__test__stream__state test::stream::state]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/stream.hpp]\r\r\r\r```\rstruct state\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.cancel_read [*cancel_read]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.notify_read [*notify_read]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.remove [*remove]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.state [*state]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.state_dtor_ [*~state]]]\r    [\r      \r    ]\r  ]\r]\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.b [*b]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.code [*code]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.cv [*cv]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.fc [*fc]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.ioc [*ioc]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.m [*m]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.nread [*nread]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.nread_bytes [*nread_bytes]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.nwrite [*nwrite]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.nwrite_bytes [*nwrite_bytes]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.op [*op]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.read_max [*read_max]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.wp [*wp]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__test__stream__state.write_max [*write_max]]]\r    [\r      \r    ]\r  ]\r]\r\r[heading Description]\r[section:b test::stream::state::b]\r[indexterm2 b..test::stream::state]\r\r[heading Synopsis]\r```\rflat_buffer b;\r```\r\r[heading Description]\r[endsect]\r[section:cancel_read test::stream::state::cancel_read]\r[indexterm2 cancel_read..test::stream::state]\r\r[heading Synopsis]\r```\rvoid\rcancel_read();\r```\r\r[heading Description]\r[endsect]\r[section:code test::stream::state::code]\r[indexterm2 code..test::stream::state]\r\r[heading Synopsis]\r```\rstatus code = status::ok;\r```\r\r[heading Description]\r[endsect]\r[section:cv test::stream::state::cv]\r[indexterm2 cv..test::stream::state]\r\r[heading Synopsis]\r```\rstd::condition_variable cv;\r```\r\r[heading Description]\r[endsect]\r[section:fc test::stream::state::fc]\r[indexterm2 fc..test::stream::state]\r\r[heading Synopsis]\r```\rfail_count * fc = nullptr;\r```\r\r[heading Description]\r[endsect]\r[section:ioc test::stream::state::ioc]\r[indexterm2 ioc..test::stream::state]\r\r[heading Synopsis]\r```\rnet::io_context & ioc;\r```\r\r[heading Description]\r[endsect]\r[section:m test::stream::state::m]\r[indexterm2 m..test::stream::state]\r\r[heading Synopsis]\r```\rstd::mutex m;\r```\r\r[heading Description]\r[endsect]\r[section:notify_read test::stream::state::notify_read]\r[indexterm2 notify_read..test::stream::state]\r\r[heading Synopsis]\r```\rvoid\rnotify_read();\r```\r\r[heading Description]\r[endsect]\r[section:nread test::stream::state::nread]\r[indexterm2 nread..test::stream::state]\r\r[heading Synopsis]\r```\rstd::size_t nread = 0;\r```\r\r[heading Description]\r[endsect]\r[section:nread_bytes test::stream::state::nread_bytes]\r[indexterm2 nread_bytes..test::stream::state]\r\r[heading Synopsis]\r```\rstd::size_t nread_bytes = 0;\r```\r\r[heading Description]\r[endsect]\r[section:nwrite test::stream::state::nwrite]\r[indexterm2 nwrite..test::stream::state]\r\r[heading Synopsis]\r```\rstd::size_t nwrite = 0;\r```\r\r[heading Description]\r[endsect]\r[section:nwrite_bytes test::stream::state::nwrite_bytes]\r[indexterm2 nwrite_bytes..test::stream::state]\r\r[heading Synopsis]\r```\rstd::size_t nwrite_bytes = 0;\r```\r\r[heading Description]\r[endsect]\r[section:op test::stream::state::op]\r[indexterm2 op..test::stream::state]\r\r[heading Synopsis]\r```\rstd::unique_ptr< read_op_base > op;\r```\r\r[heading Description]\r[endsect]\r[section:read_max test::stream::state::read_max]\r[indexterm2 read_max..test::stream::state]\r\r[heading Synopsis]\r```\rstd::size_t read_max =
6179             (std::numeric_limits<std::size_t>::max)();\r```\r\r[heading Description]\r[endsect]\r[section:remove test::stream::state::remove]\r[indexterm2 remove..test::stream::state]\r\r[heading Synopsis]\r```\rvoid\rremove();\r```\r\r[heading Description]\r[endsect]\r[section:state test::stream::state::state]\r[indexterm2 state..test::stream::state]\r\r[heading Synopsis]\r```\rstate(\r    net::io_context& ioc_,\r    boost::weak_ptr< service_impl > wp_,\r    fail_count* fc_);\r```\r\r[heading Description]\r[endsect]\r[section:wp test::stream::state::wp]\r[indexterm2 wp..test::stream::state]\r\r[heading Synopsis]\r```\rboost::weak_ptr< service_impl > wp;\r```\r\r[heading Description]\r[endsect]\r[section:write_max test::stream::state::write_max]\r[indexterm2 write_max..test::stream::state]\r\r[heading Synopsis]\r```\rstd::size_t write_max =
6180             (std::numeric_limits<std::size_t>::max)();\r```\r\r[heading Description]\r[endsect]\r[section:state_dtor_ test::stream::state::~state]\r[indexterm2 ~state..test::stream::state]\r\r[heading Synopsis]\r```\r~state();\r```\r\r[heading Description]\r[endsect]\r\r\r[endsect]\r\r\r\r[section:boost__beast__test__success_handler test::success_handler]\r[indexterm1 test::success_handler]\r
6181 Return a test CompletionHandler which requires success. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/_experimental/test/handler.hpp]\r\r\r\r```\rhandler\rsuccess_handler();\r\r```\r\r[heading Description]\r
6182 The returned handler can be invoked with any signature whose first parameter is an `error_code`. The handler fails the test if:
6183
6184 * The handler is destroyed without being invoked, or
6185
6186
6187 * The handler is invoked with a non-successful error code. 
6188
6189 \r\r[endsect]\r[section:boost__beast__to_static_string to_static_string]\r[indexterm1 to_static_string]\r
6190 Returns a static string representing an integer as a decimal. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/static_string.hpp]\r\r\r\r```\rtemplate<\r    class Integer>\rstatic_string< detail::max_digits(sizeof(Integer))>\rto_static_string(\r    Integer x);\r\r```\r\r[heading Description]\r
6191 [heading Parameters]\r[table [[Name][Description]]\r  [[`x`][\r    
6192 The signed or unsigned integer to convert. This must be an integral type.\r  ]]\r]\r
6193 [heading Return Value]
6194 A [link beast.ref.boost__beast__static_string `static_string`] with an implementation defined maximum size large enough to hold the longest possible decimal representation of any integer of the given type. 
6195 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r[section:boost__beast__unlimited_rate_policy unlimited_rate_policy]\r
6196 A rate policy with unlimited throughput. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/core/rate_policy.hpp]\r\r\r\r```\rclass unlimited_rate_policy\r```\r\r[heading Description]\r
6197 This rate policy object does not apply any rate limit.
6198 [heading Concepts]
6199
6200
6201 * ['RatePolicy]
6202
6203 [heading See Also]\r
6204 [link beast.ref.boost__beast__basic_stream `basic_stream`], [link beast.ref.boost__beast__tcp_stream `tcp_stream`] 
6205 \r\r\rConvenience header [include_file boost/beast/core.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__async_teardown websocket::async_teardown]\r[indexterm1 websocket::async_teardown]\r
6206 Start tearing down a connection. ```\rtemplate<\r    class Socket,\r    class TeardownHandler>\rvoid\r``[link beast.ref.boost__beast__websocket__async_teardown.overload1 async_teardown]``(\r    role_type role,\r    Socket& socket,\r    TeardownHandler&& handler);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__async_teardown.overload1 more...]]``\r\r```\r
6207 Start tearing down a `net::ip::tcp::socket`. ```\rtemplate<\r    class __Protocol__,\r    class __Executor__,\r    class TeardownHandler>\rvoid\r``[link beast.ref.boost__beast__websocket__async_teardown.overload2 async_teardown]``(\r    role_type role,\r    net::basic_stream_socket< Protocol, Executor >& socket,\r    TeardownHandler&& handler);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__async_teardown.overload2 more...]]``\r```\r[section:overload1 websocket::async_teardown (1 of 2 overloads)]\r
6208 Start tearing down a connection. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/teardown.hpp]\r\r\r\r```\rtemplate<\r    class Socket,\r    class TeardownHandler>\rvoid\rasync_teardown(\r    role_type role,\r    Socket& socket,\r    TeardownHandler&& handler);\r\r```\r\r[heading Description]\r
6209 This begins tearing down a connection asynchronously. The implementation will call the overload of this function based on the `Socket` parameter used to consruct the socket. When `Stream` is a user defined type, and not a `net::ip::tcp::socket` or any `net::ssl::stream`, callers are responsible for providing a suitable overload of this function.
6210 [heading Parameters]\r[table [[Name][Description]]\r  [[`role`][\r    
6211 The role of the local endpoint\r  ]]\r  [[`socket`][\r    
6212 The socket to tear down.\r  ]]\r  [[`handler`][\r    
6213 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6214       error_code const& error // result of operation
6215   );
6216 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
6217 \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:overload2 websocket::async_teardown (2 of 2 overloads)]\r
6218 Start tearing down a `net::ip::tcp::socket`. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/teardown.hpp]\r\r\r\r```\rtemplate<\r    class __Protocol__,\r    class __Executor__,\r    class TeardownHandler>\rvoid\rasync_teardown(\r    role_type role,\r    net::basic_stream_socket< Protocol, Executor >& socket,\r    TeardownHandler&& handler);\r\r```\r\r[heading Description]\r
6219 This begins tearing down a connection asynchronously. The implementation will call the overload of this function based on the `Stream` parameter used to consruct the socket. When `Stream` is a user defined type, and not a `net::ip::tcp::socket` or any `net::ssl::stream`, callers are responsible for providing a suitable overload of this function.
6220 [heading Parameters]\r[table [[Name][Description]]\r  [[`role`][\r    
6221 The role of the local endpoint\r  ]]\r  [[`socket`][\r    
6222 The socket to tear down.\r  ]]\r  [[`handler`][\r    
6223 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6224       error_code const& error // result of operation
6225   );
6226 ```\r\r  ]]\r]\r
6227 Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__websocket__close_code websocket::close_code]\r[indexterm1 websocket::close_code]\r
6228 Close status codes. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/rfc6455.hpp]\r\r\r```\renum close_code\r```\r\r[indexterm2 normal..websocket::close_code]\r[indexterm2 going_away..websocket::close_code]\r[indexterm2 protocol_error..websocket::close_code]\r[indexterm2 unknown_data..websocket::close_code]\r[indexterm2 bad_payload..websocket::close_code]\r[indexterm2 policy_error..websocket::close_code]\r[indexterm2 too_big..websocket::close_code]\r[indexterm2 needs_extension..websocket::close_code]\r[indexterm2 internal_error..websocket::close_code]\r[indexterm2 service_restart..websocket::close_code]\r[indexterm2 try_again_later..websocket::close_code]\r[indexterm2 none..websocket::close_code]\r[indexterm2 reserved1..websocket::close_code]\r[indexterm2 no_status..websocket::close_code]\r[indexterm2 abnormal..websocket::close_code]\r[indexterm2 reserved2..websocket::close_code]\r[indexterm2 reserved3..websocket::close_code]\r[heading Values]\r[table [[Name][Description]]\r  [[[^normal]][Normal closure; the connection successfully completed whatever purpose for which it was created. \r\r]]\r  [[[^going_away]][The endpoint is going away, either because of a server failure or because the browser is navigating away from the page that opened the connection. \r\r]]\r  [[[^protocol_error]][The endpoint is terminating the connection due to a protocol error. \r\r]]\r  [[[^unknown_data]][The connection is being terminated because the endpoint received data of a type it cannot accept (for example, a text-only endpoint received binary data). \r\r]]\r  [[[^bad_payload]][The endpoint is terminating the connection because a message was received that contained inconsistent data (e.g., non-UTF-8 data within a text message). \r\r]]\r  [[[^policy_error]][The endpoint is terminating the connection because it received a message that violates its policy. This is a generic status code, used when codes 1003 and 1009 are not suitable. \r\r]]\r  [[[^too_big]][The endpoint is terminating the connection because a data frame was received that is too large. \r\r]]\r  [[[^needs_extension]][The client is terminating the connection because it expected the server to negotiate one or more extension, but the server didn't. \r\r]]\r  [[[^internal_error]][The server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request. \r\r]]\r  [[[^service_restart]][The server is terminating the connection because it is restarting. \r\r]]\r  [[[^try_again_later]][The server is terminating the connection due to a temporary condition, e.g. it is overloaded and is casting off some of its clients. \r\r]]\r  [[[^none]][Used internally to mean "no error". \r\rThis code is reserved and may not be sent.
6229  ]]\r  [[[^reserved1]][Reserved for future use by the WebSocket standard. \r\rThis code is reserved and may not be sent.
6230  ]]\r  [[[^no_status]][No status code was provided even though one was expected. \r\rThis code is reserved and may not be sent.
6231  ]]\r  [[[^abnormal]][Connection was closed without receiving a close frame. \r\rThis code is reserved and may not be sent.
6232  ]]\r  [[[^reserved2]][Reserved for future use by the WebSocket standard. \r\rThis code is reserved and may not be sent.
6233  ]]\r  [[[^reserved3]][Reserved for future use by the WebSocket standard. \r\rThis code is reserved and may not be sent.
6234  ]]\r]\r\r[heading Description]\r
6235 These codes accompany close frames.
6236 [heading See Also]\r
6237 [@https://tools.ietf.org/html/rfc6455#section-7.4.1 RFC 6455 7.4.1 Defined Status Codes] 
6238 \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__close_reason websocket::close_reason]\r
6239 Description of the close reason. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/rfc6455.hpp]\r\r\r\r```\rstruct close_reason\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__close_reason.close_reason [*close_reason]]]\r    [\r      Default constructor. \r\r      Construct from a code. \r\r      Construct from a reason string. code is close_code::normal. \r\r      Construct from a reason string literal. code is close_code::normal. \r\r      Construct from a close code and reason string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__close_reason.operator_bool [*operator bool]]]\r    [\r      Returns true if a code was specified. \r    ]\r  ]\r]\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__close_reason.code [*code]]]\r    [\r      The close code. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__close_reason.reason [*reason]]]\r    [\r      The optional utf8-encoded reason string. \r    ]\r  ]\r]\r\r[heading Description]\r
6240 This object stores the close code (if any) and the optional utf-8 encoded implementation defined reason string. [section:close_reason websocket::close_reason::close_reason]\r[indexterm2 close_reason..websocket::close_reason]\r
6241 Default constructor. ```\r``[link beast.ref.boost__beast__websocket__close_reason.close_reason.overload1 close_reason]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__close_reason.close_reason.overload1 more...]]``\r\r```\r
6242 Construct from a code. ```\r``[link beast.ref.boost__beast__websocket__close_reason.close_reason.overload2 close_reason]``(\r    std::uint16_t code_);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__close_reason.close_reason.overload2 more...]]``\r\r```\r
6243 Construct from a reason string. code is close\_code::normal. ```\r``[link beast.ref.boost__beast__websocket__close_reason.close_reason.overload3 close_reason]``(\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__close_reason.close_reason.overload3 more...]]``\r\r```\r
6244 Construct from a reason string literal. code is close\_code::normal. ```\r``[link beast.ref.boost__beast__websocket__close_reason.close_reason.overload4 close_reason]``(\r    char const* s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__close_reason.close_reason.overload4 more...]]``\r\r```\r
6245 Construct from a close code and reason string. ```\r``[link beast.ref.boost__beast__websocket__close_reason.close_reason.overload5 close_reason]``(\r    close_code code_,\r    string_view s);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__close_reason.close_reason.overload5 more...]]``\r```\r[section:overload1 websocket::close_reason::close_reason (1 of 5 overloads)]\r
6246 Default constructor. \r[heading Synopsis]\r```\rclose_reason();\r```\r\r[heading Description]\r
6247 The code will be none. Default constructed objects will explicitly convert to bool as `false`. [endsect]\r[section:overload2 websocket::close_reason::close_reason (2 of 5 overloads)]\r
6248 Construct from a code. \r[heading Synopsis]\r```\rclose_reason(\r    std::uint16_t code_);\r```\r\r[heading Description]\r[endsect]\r[section:overload3 websocket::close_reason::close_reason (3 of 5 overloads)]\r
6249 Construct from a reason string. code is close\_code::normal. \r[heading Synopsis]\r```\rclose_reason(\r    string_view s);\r```\r\r[heading Description]\r[endsect]\r[section:overload4 websocket::close_reason::close_reason (4 of 5 overloads)]\r
6250 Construct from a reason string literal. code is close\_code::normal. \r[heading Synopsis]\r```\rclose_reason(\r    char const* s);\r```\r\r[heading Description]\r[endsect]\r[section:overload5 websocket::close_reason::close_reason (5 of 5 overloads)]\r
6251 Construct from a close code and reason string. \r[heading Synopsis]\r```\rclose_reason(\r    close_code code_,\r    string_view s);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:code websocket::close_reason::code]\r[indexterm2 code..websocket::close_reason]\r
6252 The close code. \r[heading Synopsis]\r```\rstd::uint16_t code = close_code::none;\r```\r\r[heading Description]\r[endsect]\r[section:operator_bool websocket::close_reason::operator bool]\r[indexterm2 operator bool..websocket::close_reason]\r
6253 Returns `true` if a code was specified. \r[heading Synopsis]\r```\roperator bool() const;\r```\r\r[heading Description]\r[endsect]\r[section:reason websocket::close_reason::reason]\r[indexterm2 reason..websocket::close_reason]\r
6254 The optional utf8-encoded reason string. \r[heading Synopsis]\r```\rreason_string reason;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__condition websocket::condition]\r[indexterm1 websocket::condition]\r
6255 Error conditions corresponding to sets of error codes. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/error.hpp]\r\r\r```\renum condition\r```\r\r[indexterm2 handshake_failed..websocket::condition]\r[indexterm2 protocol_violation..websocket::condition]\r[heading Values]\r[table [[Name][Description]]\r  [[[^handshake_failed]][The WebSocket handshake failed. \r\rThis condition indicates that the WebSocket handshake failed. If
6256 the corresponding HTTP response indicates the keep-alive behavior,
6257 then the handshake may be reattempted.
6258  ]]\r  [[[^protocol_violation]][A WebSocket protocol violation occurred. \r\rThis condition indicates that the remote peer on the WebSocket
6259 connection sent data which violated the protocol.
6260  ]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__error websocket::error]\r[indexterm1 websocket::error]\r
6261 Error codes returned from [link beast.ref.boost__beast__websocket__stream `websocket::stream`] operations. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/error.hpp]\r\r\r```\renum error\r```\r\r[indexterm2 closed..websocket::error]\r[indexterm2 buffer_overflow..websocket::error]\r[indexterm2 partial_deflate_block..websocket::error]\r[indexterm2 message_too_big..websocket::error]\r[indexterm2 bad_http_version..websocket::error]\r[indexterm2 bad_method..websocket::error]\r[indexterm2 no_host..websocket::error]\r[indexterm2 no_connection..websocket::error]\r[indexterm2 no_connection_upgrade..websocket::error]\r[indexterm2 no_upgrade..websocket::error]\r[indexterm2 no_upgrade_websocket..websocket::error]\r[indexterm2 no_sec_key..websocket::error]\r[indexterm2 bad_sec_key..websocket::error]\r[indexterm2 no_sec_version..websocket::error]\r[indexterm2 bad_sec_version..websocket::error]\r[indexterm2 no_sec_accept..websocket::error]\r[indexterm2 bad_sec_accept..websocket::error]\r[indexterm2 upgrade_declined..websocket::error]\r[indexterm2 bad_opcode..websocket::error]\r[indexterm2 bad_data_frame..websocket::error]\r[indexterm2 bad_continuation..websocket::error]\r[indexterm2 bad_reserved_bits..websocket::error]\r[indexterm2 bad_control_fragment..websocket::error]\r[indexterm2 bad_control_size..websocket::error]\r[indexterm2 bad_unmasked_frame..websocket::error]\r[indexterm2 bad_masked_frame..websocket::error]\r[indexterm2 bad_size..websocket::error]\r[indexterm2 bad_frame_payload..websocket::error]\r[indexterm2 bad_close_code..websocket::error]\r[indexterm2 bad_close_size..websocket::error]\r[indexterm2 bad_close_payload..websocket::error]\r[heading Values]\r[table [[Name][Description]]\r  [[[^closed]][The WebSocket stream was gracefully closed at both endpoints. \r\r]]\r  [[[^buffer_overflow]][The WebSocket operation caused a dynamic buffer overflow. \r\r]]\r  [[[^partial_deflate_block]][The WebSocket stream produced an incomplete deflate block. \r\r]]\r  [[[^message_too_big]][The WebSocket message exceeded the locally configured limit. \r\r]]\r  [[[^bad_http_version]][The WebSocket handshake was not HTTP/1.1. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6262  ]]\r  [[[^bad_method]][The WebSocket handshake method was not GET. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6263  ]]\r  [[[^no_host]][The WebSocket handshake Host field is missing. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6264  ]]\r  [[[^no_connection]][The WebSocket handshake Connection field is missing. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6265  ]]\r  [[[^no_connection_upgrade]][The WebSocket handshake Connection field is missing the upgrade token. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6266  ]]\r  [[[^no_upgrade]][The WebSocket handshake Upgrade field is missing. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6267  ]]\r  [[[^no_upgrade_websocket]][The WebSocket handshake Upgrade field is missing the websocket token. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6268  ]]\r  [[[^no_sec_key]][The WebSocket handshake Sec-WebSocket-Key field is missing. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6269  ]]\r  [[[^bad_sec_key]][The WebSocket handshake Sec-WebSocket-Key field is invalid. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6270  ]]\r  [[[^no_sec_version]][The WebSocket handshake Sec-WebSocket-Version field is missing. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6271  ]]\r  [[[^bad_sec_version]][The WebSocket handshake Sec-WebSocket-Version field is invalid. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6272  ]]\r  [[[^no_sec_accept]][The WebSocket handshake Sec-WebSocket-Accept field is missing. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6273  ]]\r  [[[^bad_sec_accept]][The WebSocket handshake Sec-WebSocket-Accept field is invalid. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6274  ]]\r  [[[^upgrade_declined]][The WebSocket handshake was declined by the remote peer. \r\rError codes with this value will compare equal to @ref condition::handshake_failed
6275  ]]\r  [[[^bad_opcode]][The WebSocket frame contained an illegal opcode. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6276  ]]\r  [[[^bad_data_frame]][The WebSocket data frame was unexpected. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6277  ]]\r  [[[^bad_continuation]][The WebSocket continuation frame was unexpected. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6278  ]]\r  [[[^bad_reserved_bits]][The WebSocket frame contained illegal reserved bits. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6279  ]]\r  [[[^bad_control_fragment]][The WebSocket control frame was fragmented. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6280  ]]\r  [[[^bad_control_size]][The WebSocket control frame size was invalid. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6281  ]]\r  [[[^bad_unmasked_frame]][The WebSocket frame was unmasked. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6282  ]]\r  [[[^bad_masked_frame]][The WebSocket frame was masked. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6283  ]]\r  [[[^bad_size]][The WebSocket frame size was not canonical. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6284  ]]\r  [[[^bad_frame_payload]][The WebSocket frame payload was not valid utf8. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6285  ]]\r  [[[^bad_close_code]][The WebSocket close frame reason code was invalid. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6286  ]]\r  [[[^bad_close_size]][The WebSocket close frame payload size was invalid. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6287  ]]\r  [[[^bad_close_payload]][The WebSocket close frame payload was not valid utf8. \r\rError codes with this value will compare equal to @ref condition::protocol_violation
6288  ]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__frame_type websocket::frame_type]\r[indexterm1 websocket::frame_type]\r
6289 The type of received control frame. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r```\renum frame_type\r```\r\r[indexterm2 close..websocket::frame_type]\r[indexterm2 ping..websocket::frame_type]\r[indexterm2 pong..websocket::frame_type]\r[heading Values]\r[table [[Name][Description]]\r  [[[^close]][A close frame was received. \r\r]]\r  [[[^ping]][A ping frame was received. \r\r]]\r  [[[^pong]][A pong frame was received. \r\r]]\r]\r\r[heading Description]\r
6290 Values of this type are passed to the control frame callback set using [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`]. \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__is_upgrade websocket::is_upgrade]\r[indexterm1 websocket::is_upgrade]\r
6291 Returns `true` if the specified HTTP request is a WebSocket Upgrade. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/rfc6455.hpp]\r\r\r\r```\rtemplate<\r    class __Allocator__>\rbool\ris_upgrade(\r    beast::http::header< true, http::basic_fields< Allocator >> const& req);\r\r```\r\r[heading Description]\r
6292 This function returns `true` when the passed HTTP Request indicates a WebSocket Upgrade. It does not validate the contents of the fields: it just trivially accepts requests which could only possibly be a valid or invalid WebSocket Upgrade message.
6293 Callers who wish to manually read HTTP requests in their server implementation can use this function to determine if the request should be routed to an instance of [link beast.ref.boost__beast__websocket__stream `websocket::stream`].
6294 [heading Example]
6295 \r```\r  void handle_connection(net::ip::tcp::socket& sock)
6296   {
6297       boost::beast::flat_buffer buffer;
6298       boost::beast::http::request<boost::beast::http::string_body> req;
6299       boost::beast::http::read(sock, buffer, req);
6300       if(boost::beast::websocket::is_upgrade(req))
6301       {
6302           boost::beast::websocket::stream<decltype(sock)> ws{std::move(sock)};
6303           ws.accept(req);
6304       }
6305   }
6306 ```\r
6307 [heading Parameters]\r[table [[Name][Description]]\r  [[`req`][\r    
6308 The HTTP Request object to check.\r  ]]\r]\r
6309 [heading Return Value]
6310 `true` if the request is a WebSocket Upgrade. 
6311 \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__permessage_deflate websocket::permessage_deflate]\r
6312 permessage-deflate extension options. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/option.hpp]\r\r\r\r```\rstruct permessage_deflate\r```\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__permessage_deflate.client_enable [*client_enable]]]\r    [\r      true to offer the extension in the client role \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__permessage_deflate.client_max_window_bits [*client_max_window_bits]]]\r    [\r      Maximum client window bits to offer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__permessage_deflate.client_no_context_takeover [*client_no_context_takeover]]]\r    [\r      true if client_no_context_takeover desired \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__permessage_deflate.compLevel [*compLevel]]]\r    [\r      Deflate compression level 0..9. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__permessage_deflate.memLevel [*memLevel]]]\r    [\r      Deflate memory level, 1..9. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__permessage_deflate.server_enable [*server_enable]]]\r    [\r      true to offer the extension in the server role \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__permessage_deflate.server_max_window_bits [*server_max_window_bits]]]\r    [\r      Maximum server window bits to offer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__permessage_deflate.server_no_context_takeover [*server_no_context_takeover]]]\r    [\r      true if server_no_context_takeover desired \r    ]\r  ]\r]\r\r[heading Description]\r
6313 These settings control the permessage-deflate extension, which allows messages to be compressed.
6314 [heading Remarks]\r
6315 Objects of this type are used with [link beast.ref.boost__beast__websocket__stream.set_option `websocket::stream::set_option`]. 
6316 [section:client_enable websocket::permessage_deflate::client_enable]\r[indexterm2 client_enable..websocket::permessage_deflate]\r
6317 `true` to offer the extension in the client role \r[heading Synopsis]\r```\rbool client_enable = false;\r```\r\r[heading Description]\r[endsect]\r[section:client_max_window_bits websocket::permessage_deflate::client_max_window_bits]\r[indexterm2 client_max_window_bits..websocket::permessage_deflate]\r
6318 Maximum client window bits to offer. \r[heading Synopsis]\r```\rint client_max_window_bits = 15;\r```\r\r[heading Description]\r
6319 [heading Remarks]\r
6320 Due to a bug in ZLib, this value must be greater than 8. 
6321 [endsect]\r[section:client_no_context_takeover websocket::permessage_deflate::client_no_context_takeover]\r[indexterm2 client_no_context_takeover..websocket::permessage_deflate]\r
6322 `true` if client\_no\_context\_takeover desired \r[heading Synopsis]\r```\rbool client_no_context_takeover = false;\r```\r\r[heading Description]\r[endsect]\r[section:compLevel websocket::permessage_deflate::compLevel]\r[indexterm2 compLevel..websocket::permessage_deflate]\r
6323 Deflate compression level 0..9. \r[heading Synopsis]\r```\rint compLevel = 8;\r```\r\r[heading Description]\r[endsect]\r[section:memLevel websocket::permessage_deflate::memLevel]\r[indexterm2 memLevel..websocket::permessage_deflate]\r
6324 Deflate memory level, 1..9. \r[heading Synopsis]\r```\rint memLevel = 4;\r```\r\r[heading Description]\r[endsect]\r[section:server_enable websocket::permessage_deflate::server_enable]\r[indexterm2 server_enable..websocket::permessage_deflate]\r
6325 `true` to offer the extension in the server role \r[heading Synopsis]\r```\rbool server_enable = false;\r```\r\r[heading Description]\r[endsect]\r[section:server_max_window_bits websocket::permessage_deflate::server_max_window_bits]\r[indexterm2 server_max_window_bits..websocket::permessage_deflate]\r
6326 Maximum server window bits to offer. \r[heading Synopsis]\r```\rint server_max_window_bits = 15;\r```\r\r[heading Description]\r
6327 [heading Remarks]\r
6328 Due to a bug in ZLib, this value must be greater than 8. 
6329 [endsect]\r[section:server_no_context_takeover websocket::permessage_deflate::server_no_context_takeover]\r[indexterm2 server_no_context_takeover..websocket::permessage_deflate]\r
6330 `true` if server\_no\_context\_takeover desired \r[heading Synopsis]\r```\rbool server_no_context_takeover = false;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__ping_data websocket::ping_data]\r[indexterm1 websocket::ping_data]\r
6331 The type representing the payload of ping and pong messages. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/rfc6455.hpp]\r\r\r\r```\rusing ping_data = static_string< 125, char >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.const_iterator [*const_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_pointer [*const_pointer]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_reference [*const_reference]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_reverse_iterator [*const_reverse_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.difference_type [*difference_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.iterator [*iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.pointer [*pointer]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reference [*reference]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reverse_iterator [*reverse_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.size_type [*size_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.string_view_type [*string_view_type]]]\r    [\r      The type of string_view returned by the interface. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.traits_type [*traits_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.value_type [*value_type]]]\r    [\r      \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.append [*append]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.assign [*assign]]]\r    [\r      Assign count copies of ch. \r\r      Assign from another static_string \r\r      Assign count characterss starting at npos from other. \r\r      Assign the first count characters of s, including nulls. \r\r      Assign a null terminated string. \r\r      Assign from an iterator range of characters. \r\r      Assign from any object convertible to string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.at [*at]]]\r    [\r      Access specified character with bounds checking. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.back [*back]]]\r    [\r      Accesses the last character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.begin [*begin]]]\r    [\r      Returns an iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.c_str [*c_str]]]\r    [\r      Returns a non-modifiable standard C character array version of the string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.capacity [*capacity]]]\r    [\r      Returns the number of characters that can be held in currently allocated storage. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.cbegin [*cbegin]]]\r    [\r      Returns an iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.cend [*cend]]]\r    [\r      Returns an iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.clear [*clear]]]\r    [\r      Clears the contents. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.compare [*compare]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.copy [*copy]]]\r    [\r      Copy a substring (pos, pos+count) to character string pointed to by dest. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.crbegin [*crbegin]]]\r    [\r      Returns a reverse iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.crend [*crend]]]\r    [\r      Returns a reverse iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.data [*data]]]\r    [\r      Returns a pointer to the first character of a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.empty [*empty]]]\r    [\r      Returns true if the string is empty. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.end [*end]]]\r    [\r      Returns an iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.erase [*erase]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.front [*front]]]\r    [\r      Accesses the first character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.insert [*insert]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.length [*length]]]\r    [\r      Returns the number of characters, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.max_size [*max_size]]]\r    [\r      Returns the maximum number of characters that can be stored, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_string_view_type [*operator string_view_type]]]\r    [\r      Convert a static string to a string_view_type \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_plus__eq_ [*operator+=]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_eq_ [*operator=]]]\r    [\r      Copy assignment. \r\r      Assign from null-terminated string. \r\r      Assign from single character. \r\r      Assign from initializer list. \r\r      Assign from string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_lb__rb_ [*operator\[\]]]]\r    [\r      Access specified character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.pop_back [*pop_back]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.push_back [*push_back]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.rbegin [*rbegin]]]\r    [\r      Returns a reverse iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.rend [*rend]]]\r    [\r      Returns a reverse iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reserve [*reserve]]]\r    [\r      Reserves storage. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.resize [*resize]]]\r    [\r      Changes the number of characters stored. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.shrink_to_fit [*shrink_to_fit]]]\r    [\r      Reduces memory usage by freeing unused memory. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.size [*size]]]\r    [\r      Returns the number of characters, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.static_string [*static_string]]]\r    [\r      Default constructor (empty string). \r\r      Construct with count copies of character ch. \r\r      Construct with a substring (pos, other.size()) of other. \r\r      Construct with a substring (pos, count) of other. \r\r      Construct with the first count characters of s, including nulls. \r\r      Construct from a null terminated string. \r\r      Construct from a range of characters. \r\r      Copy constructor. \r\r      Construct from an initializer list. \r\r      Construct from a string_view \r\r      Construct from any object convertible to string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.substr [*substr]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.swap [*swap]]]\r    [\r      Exchange the contents of this string with another. \r    ]\r  ]\r]\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.max_size_n [*max_size_n]]]\r    [\r      Maximum size of the string excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.npos [*npos]]]\r    [\r      A special index. \r    ]\r  ]\r]\r
6332 These objects behave like `std::string` except that the storage is not dynamically allocated but rather fixed in size.
6333 These strings offer performance advantages when a protocol imposes a natural small upper limit on the size of a value.
6334 [heading Remarks]\r
6335 The stored string is always null-terminated.
6336 [heading See Also]\r
6337 [link beast.ref.boost__beast__to_static_string `to_static_string`] 
6338 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__reason_string websocket::reason_string]\r[indexterm1 websocket::reason_string]\r
6339 The type representing the reason string in a close frame. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/rfc6455.hpp]\r\r\r\r```\rusing reason_string = static_string< 123, char >;\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.const_iterator [*const_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_pointer [*const_pointer]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_reference [*const_reference]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.const_reverse_iterator [*const_reverse_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.difference_type [*difference_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.iterator [*iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.pointer [*pointer]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reference [*reference]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reverse_iterator [*reverse_iterator]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.size_type [*size_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.string_view_type [*string_view_type]]]\r    [\r      The type of string_view returned by the interface. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.traits_type [*traits_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.value_type [*value_type]]]\r    [\r      \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.append [*append]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.assign [*assign]]]\r    [\r      Assign count copies of ch. \r\r      Assign from another static_string \r\r      Assign count characterss starting at npos from other. \r\r      Assign the first count characters of s, including nulls. \r\r      Assign a null terminated string. \r\r      Assign from an iterator range of characters. \r\r      Assign from any object convertible to string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.at [*at]]]\r    [\r      Access specified character with bounds checking. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.back [*back]]]\r    [\r      Accesses the last character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.begin [*begin]]]\r    [\r      Returns an iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.c_str [*c_str]]]\r    [\r      Returns a non-modifiable standard C character array version of the string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.capacity [*capacity]]]\r    [\r      Returns the number of characters that can be held in currently allocated storage. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.cbegin [*cbegin]]]\r    [\r      Returns an iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.cend [*cend]]]\r    [\r      Returns an iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.clear [*clear]]]\r    [\r      Clears the contents. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.compare [*compare]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.copy [*copy]]]\r    [\r      Copy a substring (pos, pos+count) to character string pointed to by dest. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.crbegin [*crbegin]]]\r    [\r      Returns a reverse iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.crend [*crend]]]\r    [\r      Returns a reverse iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.data [*data]]]\r    [\r      Returns a pointer to the first character of a string. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.empty [*empty]]]\r    [\r      Returns true if the string is empty. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.end [*end]]]\r    [\r      Returns an iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.erase [*erase]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.front [*front]]]\r    [\r      Accesses the first character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.insert [*insert]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.length [*length]]]\r    [\r      Returns the number of characters, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.max_size [*max_size]]]\r    [\r      Returns the maximum number of characters that can be stored, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_string_view_type [*operator string_view_type]]]\r    [\r      Convert a static string to a string_view_type \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_plus__eq_ [*operator+=]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_eq_ [*operator=]]]\r    [\r      Copy assignment. \r\r      Assign from null-terminated string. \r\r      Assign from single character. \r\r      Assign from initializer list. \r\r      Assign from string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.operator_lb__rb_ [*operator\[\]]]]\r    [\r      Access specified character. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.pop_back [*pop_back]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.push_back [*push_back]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.rbegin [*rbegin]]]\r    [\r      Returns a reverse iterator to the beginning. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.rend [*rend]]]\r    [\r      Returns a reverse iterator to the end. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.reserve [*reserve]]]\r    [\r      Reserves storage. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.resize [*resize]]]\r    [\r      Changes the number of characters stored. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.shrink_to_fit [*shrink_to_fit]]]\r    [\r      Reduces memory usage by freeing unused memory. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.size [*size]]]\r    [\r      Returns the number of characters, excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.static_string [*static_string]]]\r    [\r      Default constructor (empty string). \r\r      Construct with count copies of character ch. \r\r      Construct with a substring (pos, other.size()) of other. \r\r      Construct with a substring (pos, count) of other. \r\r      Construct with the first count characters of s, including nulls. \r\r      Construct from a null terminated string. \r\r      Construct from a range of characters. \r\r      Copy constructor. \r\r      Construct from an initializer list. \r\r      Construct from a string_view \r\r      Construct from any object convertible to string_view_type. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.substr [*substr]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.swap [*swap]]]\r    [\r      Exchange the contents of this string with another. \r    ]\r  ]\r]\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__static_string.max_size_n [*max_size_n]]]\r    [\r      Maximum size of the string excluding the null terminator. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__static_string.npos [*npos]]]\r    [\r      A special index. \r    ]\r  ]\r]\r
6340 These objects behave like `std::string` except that the storage is not dynamically allocated but rather fixed in size.
6341 These strings offer performance advantages when a protocol imposes a natural small upper limit on the size of a value.
6342 [heading Remarks]\r
6343 The stored string is always null-terminated.
6344 [heading See Also]\r
6345 [link beast.ref.boost__beast__to_static_string `to_static_string`] 
6346 \r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__request_type websocket::request_type]\r[indexterm1 websocket::request_type]\r
6347 The type of object holding HTTP Upgrade requests. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/rfc6455.hpp]\r\r\r\r```\rusing request_type = http::request< http::empty_body >;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__response_type websocket::response_type]\r[indexterm1 websocket::response_type]\r
6348 The type of object holding HTTP Upgrade responses. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/rfc6455.hpp]\r\r\r\r```\rusing response_type = http::response< http::string_body >;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__seed_prng websocket::seed_prng]\r[indexterm1 websocket::seed_prng]\r
6349 Manually provide a one-time seed to initialize the PRNG. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rvoid\rseed_prng(\r    std::seed_seq& ss);\r\r```\r\r[heading Description]\r
6350 This function invokes the specified seed sequence to produce a seed suitable for use with the pseudo-random number generator used to create masks and perform WebSocket protocol handshakes.
6351 If a seed is not manually provided, the implementation will perform a one-time seed generation using `std::random_device`. This function may be used when the application runs in an environment where the random device is unreliable or does not provide sufficient entropy.
6352 [heading Preconditions]
6353
6354 This function may not be called after any websocket [link beast.ref.boost__beast__websocket__stream `websocket::stream`] objects have been constructed.
6355 [heading Parameters]\r[table [[Name][Description]]\r  [[`ss`][\r    
6356 A reference to a `std::seed_seq` which will be used to seed the pseudo-random number generator. The seed sequence should have at least 256 bits of entropy.\r  ]]\r]\r
6357 [heading See Also]\r
6358 [link beast.ref.boost__beast__websocket__stream.secure_prng `websocket::stream::secure_prng`] 
6359 \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:boost__beast__websocket__stream websocket::stream]\r
6360 Provides message-oriented functionality using WebSocket. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    class NextLayer,\r    bool deflateSupported>\rclass stream\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.executor_type [*executor_type]]]\r    [\r      The type of the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.is_deflate_supported [*is_deflate_supported]]]\r    [\r      Indicates if the permessage-deflate extension is supported. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.next_layer_type [*next_layer_type]]]\r    [\r      The type of the next layer. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.accept [*accept]]]\r    [\r      Perform the WebSocket handshake in the server role. \r\r      Read and respond to a WebSocket HTTP Upgrade request. \r\r      Respond to a WebSocket HTTP Upgrade request. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_accept [*async_accept]]]\r    [\r      Perform the WebSocket handshake asynchronously in the server role. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_close [*async_close]]]\r    [\r      Send a websocket close control frame asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_handshake [*async_handshake]]]\r    [\r      Perform the WebSocket handshake asynchronously in the client role. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_ping [*async_ping]]]\r    [\r      Send a websocket ping control frame asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_pong [*async_pong]]]\r    [\r      Send a websocket pong control frame asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_read [*async_read]]]\r    [\r      Read a complete message asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_read_some [*async_read_some]]]\r    [\r      Read some message data asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_write [*async_write]]]\r    [\r      Write a complete message asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.async_write_some [*async_write_some]]]\r    [\r      Write some message data asynchronously. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.auto_fragment [*auto_fragment]]]\r    [\r      Set the automatic fragmentation option. \r\r      Returns true if the automatic fragmentation option is set. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.binary [*binary]]]\r    [\r      Set the binary message write option. \r\r      Returns true if the binary message write option is set. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.close [*close]]]\r    [\r      Send a websocket close control frame. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.control_callback [*control_callback]]]\r    [\r      Set a callback to be invoked on each incoming control frame. \r\r      Reset the control frame callback. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.get_executor [*get_executor]]]\r    [\r      Get the executor associated with the object. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.get_option [*get_option]]]\r    [\r      \r\r      Get the permessage-deflate extension options. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.got_binary [*got_binary]]]\r    [\r      Returns true if the latest message data indicates binary. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.got_text [*got_text]]]\r    [\r      Returns true if the latest message data indicates text. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.handshake [*handshake]]]\r    [\r      Perform the WebSocket handshake in the client role. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.is_message_done [*is_message_done]]]\r    [\r      Returns true if the last completed read finished the current message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.is_open [*is_open]]]\r    [\r      Returns true if the stream is open. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.next_layer [*next_layer]]]\r    [\r      Get a reference to the next layer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.operator_eq_ [*operator=]]]\r    [\r      Move assignment (deleted) \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.ping [*ping]]]\r    [\r      Send a websocket ping control frame. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.pong [*pong]]]\r    [\r      Send a websocket pong control frame. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.read [*read]]]\r    [\r      Read a complete message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.read_message_max [*read_message_max]]]\r    [\r      Set the maximum incoming message size option. \r\r      Returns the maximum incoming message size setting. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.read_size_hint [*read_size_hint]]]\r    [\r      Returns a suggested maximum buffer size for the next call to read. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.read_some [*read_some]]]\r    [\r      Read some message data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.reason [*reason]]]\r    [\r      Returns the close reason received from the remote peer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.secure_prng [*secure_prng]]]\r    [\r      Set whether the PRNG is cryptographically secure. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.set_option [*set_option]]]\r    [\r      \r\r      Set the permessage-deflate extension options. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.stream [*stream]]]\r    [\r      Constructor. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.text [*text]]]\r    [\r      Set the text message write option. \r\r      Returns true if the text message write option is set. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.write [*write]]]\r    [\r      Write a complete message. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.write_buffer_bytes [*write_buffer_bytes]]]\r    [\r      Set the write buffer size option. \r\r      Returns the size of the write buffer. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.write_some [*write_some]]]\r    [\r      Write some message data. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream.stream_dtor_ [*~stream]]]\r    [\r      Destructor. \r    ]\r  ]\r]\r\r[heading Description]\r
6361 The [link beast.ref.boost__beast__websocket__stream `websocket::stream`] class template provides asynchronous and blocking message-oriented functionality necessary for clients and servers to utilize the WebSocket protocol.
6362 For asynchronous operations, the application must ensure that they are are all performed within the same implicit or explicit strand.
6363 [heading Thread Safety]
6364 ['Distinct] ['objects:] Safe.\r\r['Shared] ['objects:] Unsafe. The application must also ensure that all asynchronous operations are performed within the same implicit or explicit strand.
6365 [heading Example]
6366 To declare the [link beast.ref.boost__beast__websocket__stream `websocket::stream`] object with a [link beast.ref.boost__beast__tcp_stream `tcp_stream`] in a multi-threaded asynchronous program using a strand, you may write: \r```\r  websocket::stream<tcp_stream> ws{net::io_context::strand(ioc)};
6367 ```\rAlternatively, for a single-threaded or synchronous application you may write: \r```\r  websocket::stream<tcp_stream> ws(ioc);
6368 ```\r
6369 [heading Template Parameters]\r[table [[Type][Description]]\r  [[`NextLayer`][\r    
6370 The type representing the next layer, to which data will be read and written during operations. For synchronous operations, the type must support the ['SyncStream] concept. For asynchronous operations, the type must support the ['AsyncStream] concept.\r  ]]\r  [[`deflateSupported`][\r    
6371 A `bool` indicating whether or not the stream will be capable of negotiating the permessage-deflate websocket extension. Note that even if this is set to `true`, the permessage deflate options (set by the caller at runtime) must still have the feature enabled for a successful negotiation to occur.\r  ]]\r]\r
6372 [heading Remarks]\r
6373 A stream object must not be moved or destroyed while there are pending asynchronous operations associated with it.
6374 [heading Concepts]
6375
6376 * ['AsyncStream] 
6377 * ['DynamicBuffer] 
6378 * ['SyncStream]
6379
6380
6381 [heading See Also]\r
6382
6383 * [@https://tools.ietf.org/html/rfc6455#section-4.1 Websocket Opening Handshake Client Requirements (RFC6455)] 
6384 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6385 * [@https://tools.ietf.org/html/rfc6455#section-7.1.2 Websocket Closing Handshake (RFC6455)] 
6386 * [@https://tools.ietf.org/html/rfc6455#section-5.5.1 Websocket Close (RFC6455)] 
6387 * [@https://tools.ietf.org/html/rfc6455#section-5.5.2 WebSocket Ping (RFC6455)] 
6388 * [@https://tools.ietf.org/html/rfc6455#section-5.5.3 WebSocket Pong (RFC6455)] 
6389 * [@https://tools.ietf.org/html/rfc7230#section-5.4 Host field (RFC7230)] 
6390 * [@https://tools.ietf.org/html/rfc7230#section-3.1.1 request-target (RFC7230)] 
6391 * [@https://tools.ietf.org/html/rfc7230#section-5.3.1 origin-form (RFC7230)] 
6392
6393
6394 [section:accept websocket::stream::accept]\r[indexterm2 accept..websocket::stream]\r
6395 Perform the WebSocket handshake in the server role. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.accept.overload1 accept]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.accept.overload1 more...]]``\r\r```\r
6396 Read and respond to a WebSocket HTTP Upgrade request. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.accept.overload2 accept]``(\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.accept.overload2 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rvoid\r``[link beast.ref.boost__beast__websocket__stream.accept.overload3 accept]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.accept.overload3 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rvoid\r``[link beast.ref.boost__beast__websocket__stream.accept.overload4 accept]``(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.accept.overload4 more...]]``\r\r```\r
6397 Respond to a WebSocket HTTP Upgrade request. ```\rtemplate<\r    class __Body__,\r    class __Allocator__>\rvoid\r``[link beast.ref.boost__beast__websocket__stream.accept.overload5 accept]``(\r    http::request< Body, http::basic_fields< Allocator >> const& req);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.accept.overload5 more...]]``\r\rtemplate<\r    class __Body__,\r    class __Allocator__>\rvoid\r``[link beast.ref.boost__beast__websocket__stream.accept.overload6 accept]``(\r    http::request< Body, http::basic_fields< Allocator >> const& req,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.accept.overload6 more...]]``\r```\r[section:overload1 websocket::stream::accept (1 of 6 overloads)]\r
6398 Perform the WebSocket handshake in the server role. \r[heading Synopsis]\r```\rvoid\raccept();\r```\r\r[heading Description]\r
6399 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6400 The call blocks until one of the following conditions is true:
6401
6402 * The request is received and the response is sent.
6403
6404
6405 * An error occurs.
6406
6407 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
6408 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6409 If the request size exceeds the capacity of the stream's internal buffer, the error [link beast.ref.boost__beast__websocket__error `websocket::buffer_overflow`] will be indicated. To handle larger requests, an application should read the HTTP request directly using [link beast.ref.boost__beast__http__read `http::read`] and then pass the request to the appropriate overload of [link beast.ref.boost__beast__websocket__stream.accept `websocket::stream::accept`] or [link beast.ref.boost__beast__websocket__stream.async_accept `websocket::stream::async_accept`]
6410 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
6411 Thrown on failure.\r  ]]\r]\r
6412 [heading See Also]\r
6413
6414 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6415
6416
6417 [endsect]\r[section:overload2 websocket::stream::accept (2 of 6 overloads)]\r
6418 Read and respond to a WebSocket HTTP Upgrade request. \r[heading Synopsis]\r```\rvoid\raccept(\r    error_code& ec);\r```\r\r[heading Description]\r
6419 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6420 The call blocks until one of the following conditions is true:
6421
6422 * The request is received and the response is sent.
6423
6424
6425 * An error occurs.
6426
6427 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
6428 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6429 If the request size exceeds the capacity of the stream's internal buffer, the error [link beast.ref.boost__beast__websocket__error `websocket::buffer_overflow`] will be indicated. To handle larger requests, an application should read the HTTP request directly using [link beast.ref.boost__beast__http__read `http::read`] and then pass the request to the appropriate overload of [link beast.ref.boost__beast__websocket__stream.accept `websocket::stream::accept`] or [link beast.ref.boost__beast__websocket__stream.async_accept `websocket::stream::async_accept`]
6430 [heading Parameters]\r[table [[Name][Description]]\r  [[`ec`][\r    
6431 Set to indicate what error occurred, if any.\r  ]]\r]\r
6432 [heading See Also]\r
6433
6434 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6435
6436
6437 [endsect]\r[section:overload3 websocket::stream::accept (3 of 6 overloads)]\r
6438 Read and respond to a WebSocket HTTP Upgrade request. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rvoid\raccept(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
6439 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6440 The call blocks until one of the following conditions is true:
6441
6442 * The request is received and the response is sent.
6443
6444
6445 * An error occurs.
6446
6447 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
6448 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6449 If the request size exceeds the capacity of the stream's internal buffer, the error [link beast.ref.boost__beast__websocket__error `websocket::buffer_overflow`] will be indicated. To handle larger requests, an application should read the HTTP request directly using [link beast.ref.boost__beast__http__read `http::read`] and then pass the request to the appropriate overload of [link beast.ref.boost__beast__websocket__stream.accept `websocket::stream::accept`] or [link beast.ref.boost__beast__websocket__stream.async_accept `websocket::stream::async_accept`]
6450 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6451 Caller provided data that has already been received on the stream. The implementation will copy the caller provided data before the function returns.\r  ]]\r]\r
6452 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
6453 Thrown on failure.\r  ]]\r]\r
6454 [heading See Also]\r
6455
6456 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6457
6458
6459 [endsect]\r[section:overload4 websocket::stream::accept (4 of 6 overloads)]\r
6460 Read and respond to a WebSocket HTTP Upgrade request. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rvoid\raccept(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
6461 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6462 The call blocks until one of the following conditions is true:
6463
6464 * The request is received and the response is sent.
6465
6466
6467 * An error occurs.
6468
6469 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
6470 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6471 If the request size exceeds the capacity of the stream's internal buffer, the error [link beast.ref.boost__beast__websocket__error `websocket::buffer_overflow`] will be indicated. To handle larger requests, an application should read the HTTP request directly using [link beast.ref.boost__beast__http__read `http::read`] and then pass the request to the appropriate overload of [link beast.ref.boost__beast__websocket__stream.accept `websocket::stream::accept`] or [link beast.ref.boost__beast__websocket__stream.async_accept `websocket::stream::async_accept`]
6472 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6473 Caller provided data that has already been received on the stream. The implementation will copy the caller provided data before the function returns.\r  ]]\r  [[`ec`][\r    
6474 Set to indicate what error occurred, if any.\r  ]]\r]\r
6475 [heading See Also]\r
6476
6477 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6478
6479
6480 [endsect]\r[section:overload5 websocket::stream::accept (5 of 6 overloads)]\r
6481 Respond to a WebSocket HTTP Upgrade request. \r[heading Synopsis]\r```\rtemplate<\r    class __Body__,\r    class __Allocator__>\rvoid\raccept(\r    http::request< Body, http::basic_fields< Allocator >> const& req);\r```\r\r[heading Description]\r
6482 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6483 The call blocks until one of the following conditions is true:
6484
6485 * The response is sent.
6486
6487
6488 * An error occurs.
6489
6490 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
6491 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6492 [heading Parameters]\r[table [[Name][Description]]\r  [[`req`][\r    
6493 An object containing the HTTP Upgrade request. Ownership is not transferred, the implementation will not access this object from other threads.\r  ]]\r]\r
6494 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
6495 Thrown on failure.\r  ]]\r]\r
6496 [heading See Also]\r
6497
6498 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6499
6500
6501 [endsect]\r[section:overload6 websocket::stream::accept (6 of 6 overloads)]\r
6502 Respond to a WebSocket HTTP Upgrade request. \r[heading Synopsis]\r```\rtemplate<\r    class __Body__,\r    class __Allocator__>\rvoid\raccept(\r    http::request< Body, http::basic_fields< Allocator >> const& req,\r    error_code& ec);\r```\r\r[heading Description]\r
6503 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6504 The call blocks until one of the following conditions is true:
6505
6506 * The response is sent.
6507
6508
6509 * An error occurs.
6510
6511 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
6512 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6513 [heading Parameters]\r[table [[Name][Description]]\r  [[`req`][\r    
6514 An object containing the HTTP Upgrade request. Ownership is not transferred, the implementation will not access this object from other threads.\r  ]]\r  [[`ec`][\r    
6515 Set to indicate what error occurred, if any.\r  ]]\r]\r
6516 [heading See Also]\r
6517
6518 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6519
6520
6521 [endsect]\r[endsect]\r\r[section:async_accept websocket::stream::async_accept]\r[indexterm2 async_accept..websocket::stream]\r
6522 Perform the WebSocket handshake asynchronously in the server role. ```\rtemplate<\r    class AcceptHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__websocket__stream.async_accept.overload1 async_accept]``(\r    AcceptHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.async_accept.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__,\r    class AcceptHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__websocket__stream.async_accept.overload2 async_accept]``(\r    ConstBufferSequence const& buffers,\r    AcceptHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.async_accept.overload2 more...]]``\r\rtemplate<\r    class __Body__,\r    class __Allocator__,\r    class AcceptHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__websocket__stream.async_accept.overload3 async_accept]``(\r    http::request< Body, http::basic_fields< Allocator >> const& req,\r    AcceptHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.async_accept.overload3 more...]]``\r```\r[section:overload1 websocket::stream::async_accept (1 of 3 overloads)]\r
6523 Perform the WebSocket handshake asynchronously in the server role. \r[heading Synopsis]\r```\rtemplate<\r    class AcceptHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_accept(\r    AcceptHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6524 This initiating function is used to asynchronously begin performing the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6525 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6526
6527 * The request is received and the response is sent.
6528
6529
6530 * An error occurs.
6531
6532 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` and `async_write_some` functions. No other operation may be performed on the stream until this operation completes.
6533 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6534 If the request size exceeds the capacity of the stream's internal buffer, the error [link beast.ref.boost__beast__websocket__error `websocket::buffer_overflow`] will be indicated. To handle larger requests, an application should read the HTTP request directly using [link beast.ref.boost__beast__http__async_read `http::async_read`] and then pass the request to the appropriate overload of [link beast.ref.boost__beast__websocket__stream.accept `websocket::stream::accept`] or [link beast.ref.boost__beast__websocket__stream.async_accept `websocket::stream::async_accept`]
6535 [heading Parameters]\r[table [[Name][Description]]\r  [[`handler`][\r    
6536 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6537       error_code const& ec    // Result of operation
6538   );
6539 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
6540 [heading See Also]\r
6541
6542 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6543
6544
6545 [endsect]\r[section:overload2 websocket::stream::async_accept (2 of 3 overloads)]\r
6546 Perform the WebSocket handshake asynchronously in the server role. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class AcceptHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_accept(\r    ConstBufferSequence const& buffers,\r    AcceptHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6547 This initiating function is used to asynchronously begin performing the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6548 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6549
6550 * The request is received and the response is sent.
6551
6552
6553 * An error occurs.
6554
6555 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` and `async_write_some` functions. No other operation may be performed on the stream until this operation completes.
6556 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6557 If the request size exceeds the capacity of the stream's internal buffer, the error [link beast.ref.boost__beast__websocket__error `websocket::buffer_overflow`] will be indicated. To handle larger requests, an application should read the HTTP request directly using [link beast.ref.boost__beast__http__async_read `http::async_read`] and then pass the request to the appropriate overload of [link beast.ref.boost__beast__websocket__stream.accept `websocket::stream::accept`] or [link beast.ref.boost__beast__websocket__stream.async_accept `websocket::stream::async_accept`]
6558 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6559 Caller provided data that has already been received on the stream. This may be used for implementations allowing multiple protocols on the same stream. The buffered data will first be applied to the handshake, and then to received WebSocket frames. The implementation will copy the caller provided data before the function returns.\r  ]]\r  [[`handler`][\r    
6560 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6561       error_code const& ec    // Result of operation
6562   );
6563 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
6564 [heading See Also]\r
6565
6566 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6567
6568
6569 [endsect]\r[section:overload3 websocket::stream::async_accept (3 of 3 overloads)]\r
6570 Perform the WebSocket handshake asynchronously in the server role. \r[heading Synopsis]\r```\rtemplate<\r    class __Body__,\r    class __Allocator__,\r    class AcceptHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_accept(\r    http::request< Body, http::basic_fields< Allocator >> const& req,\r    AcceptHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6571 This initiating function is used to asynchronously begin performing the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6572 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6573
6574 * The request is received and the response is sent.
6575
6576
6577 * An error occurs.
6578
6579 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` and `async_write_some` functions. No other operation may be performed on the stream until this operation completes.
6580 If a valid upgrade request is received, an HTTP response with a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`] is sent to the peer, otherwise a non-successful error is associated with the operation.
6581 [heading Parameters]\r[table [[Name][Description]]\r  [[`req`][\r    
6582 An object containing the HTTP Upgrade request. Ownership is not transferred, the implementation will not access this object from other threads.\r  ]]\r  [[`handler`][\r    
6583 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6584       error_code const& ec    // Result of operation
6585   );
6586 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
6587 [heading See Also]\r
6588
6589 * [@https://tools.ietf.org/html/rfc6455#section-4.2 Websocket Opening Handshake Server Requirements (RFC6455)] 
6590
6591
6592 [endsect]\r[endsect]\r\r[section:async_close websocket::stream::async_close]\r[indexterm2 async_close..websocket::stream]\r
6593 Send a websocket close control frame asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class CloseHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_close(\r    close_reason const& cr,\r    CloseHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6594 This function is used to asynchronously send a [@https://tools.ietf.org/html/rfc6455#section-5.5.1 close frame], which begins the websocket closing handshake. The session ends when both ends of the connection have sent and received a close frame.
6595 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6596
6597 * The close frame finishes sending.
6598
6599
6600 * An error occurs.
6601
6602 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_write_some` function. No other operations except for message reading operations should be initiated on the stream after a close operation is started.
6603 After beginning the closing handshake, the program should not write further message data, pings, or pongs. Instead, the program should continue reading message data until an error occurs. A read returning [link beast.ref.boost__beast__websocket__error `websocket::closed`] indicates a successful connection closure.
6604 [heading Parameters]\r[table [[Name][Description]]\r  [[`cr`][\r    
6605 The reason for the close. If the close reason specifies a close code other than beast::websocket::close\_code::none, the close frame is sent with the close code and optional reason string. Otherwise, the close frame is sent with no payload.\r  ]]\r  [[`handler`][\r    
6606 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6607       error_code const& ec     // Result of operation
6608   );
6609 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
6610 [heading See Also]\r
6611
6612 * [@https://tools.ietf.org/html/rfc6455#section-7.1.2 Websocket Closing Handshake (RFC6455)] 
6613
6614
6615 [endsect]\r[section:async_handshake websocket::stream::async_handshake]\r[indexterm2 async_handshake..websocket::stream]\r
6616 Perform the WebSocket handshake asynchronously in the client role. ```\rtemplate<\r    class HandshakeHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__websocket__stream.async_handshake.overload1 async_handshake]``(\r    string_view host,\r    string_view target,\r    HandshakeHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.async_handshake.overload1 more...]]``\r\rtemplate<\r    class HandshakeHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__websocket__stream.async_handshake.overload2 async_handshake]``(\r    response_type& res,\r    string_view host,\r    string_view target,\r    HandshakeHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.async_handshake.overload2 more...]]``\r```\r[section:overload1 websocket::stream::async_handshake (1 of 2 overloads)]\r
6617 Perform the WebSocket handshake asynchronously in the client role. \r[heading Synopsis]\r```\rtemplate<\r    class HandshakeHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_handshake(\r    string_view host,\r    string_view target,\r    HandshakeHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6618 This initiating function is used to asynchronously begin performing the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6619 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6620
6621 * The request is sent and the response is received.
6622
6623
6624 * An error occurs.
6625
6626 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` and `async_write_some` functions. No other operation may be performed on the stream until this operation completes.
6627 The handshake is successful if the received HTTP response indicates the upgrade was accepted by the server, represented by a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`].
6628 [heading Parameters]\r[table [[Name][Description]]\r  [[`host`][\r    
6629 The name of the remote host. This is required by the HTTP protocol to set the "Host" header field. The implementation will not access the string data after the initiating function returns.\r  ]]\r  [[`target`][\r    
6630 The request-target, in origin-form. The server may use the target to distinguish different services on the same listening port. The implementation will not access the string data after the initiating function returns.\r  ]]\r  [[`handler`][\r    
6631 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6632       error_code const& ec    // Result of operation
6633   );
6634 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
6635 [heading Example]
6636 \r```\r  ws.async_handshake("localhost", "/",
6637       [](error_code ec)
6638       {
6639           if(ec)
6640               std::cerr << "Error: " << ec.message() << "\n";
6641       });
6642 ```\r
6643 [heading See Also]\r
6644
6645 * [@https://tools.ietf.org/html/rfc6455#section-4.1 Websocket Opening Handshake Client Requirements (RFC6455)] 
6646 * [@https://tools.ietf.org/html/rfc7230#section-5.4 Host field (RFC7230)] 
6647 * [@https://tools.ietf.org/html/rfc7230#section-3.1.1 request-target (RFC7230)] 
6648 * [@https://tools.ietf.org/html/rfc7230#section-5.3.1 origin-form (RFC7230)] 
6649
6650
6651 [endsect]\r[section:overload2 websocket::stream::async_handshake (2 of 2 overloads)]\r
6652 Perform the WebSocket handshake asynchronously in the client role. \r[heading Synopsis]\r```\rtemplate<\r    class HandshakeHandler = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_handshake(\r    response_type& res,\r    string_view host,\r    string_view target,\r    HandshakeHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6653 This initiating function is used to asynchronously begin performing the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6654 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6655
6656 * The request is sent and the response is received.
6657
6658
6659 * An error occurs.
6660
6661 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` and `async_write_some` functions. No other operation may be performed on the stream until this operation completes.
6662 The handshake is successful if the received HTTP response indicates the upgrade was accepted by the server, represented by a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`].
6663 [heading Parameters]\r[table [[Name][Description]]\r  [[`res`][\r    
6664 The HTTP Upgrade response returned by the remote endpoint. The caller may use the response to access any additional information sent by the server. This object will be assigned before the completion handler is invoked.\r  ]]\r  [[`host`][\r    
6665 The name of the remote host. This is required by the HTTP protocol to set the "Host" header field. The implementation will not access the string data after the initiating function returns.\r  ]]\r  [[`target`][\r    
6666 The request-target, in origin-form. The server may use the target to distinguish different services on the same listening port. The implementation will not access the string data after the initiating function returns.\r  ]]\r  [[`handler`][\r    
6667 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6668       error_code const& ec    // Result of operation
6669   );
6670 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.\r  ]]\r]\r
6671 [heading Example]
6672 \r```\r  response_type res;
6673   ws.async_handshake(res, "localhost", "/",
6674       [&res](error_code ec)
6675       {
6676           if(ec)
6677               std::cerr << "Error: " << ec.message() << "\n";
6678           else
6679               std::cout << res;
6680
6681       });
6682 ```\r
6683 [heading See Also]\r
6684
6685 * [@https://tools.ietf.org/html/rfc6455#section-4.1 Websocket Opening Handshake Client Requirements (RFC6455)] 
6686 * [@https://tools.ietf.org/html/rfc7230#section-5.4 Host field (RFC7230)] 
6687 * [@https://tools.ietf.org/html/rfc7230#section-3.1.1 request-target (RFC7230)] 
6688 * [@https://tools.ietf.org/html/rfc7230#section-5.3.1 origin-form (RFC7230)] 
6689
6690
6691 [endsect]\r[endsect]\r\r[section:async_ping websocket::stream::async_ping]\r[indexterm2 async_ping..websocket::stream]\r
6692 Send a websocket ping control frame asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __WriteHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_ping(\r    ping_data const& payload,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6693 This function is used to asynchronously send a [@https://tools.ietf.org/html/rfc6455#section-5.5.2 ping frame], which usually elicits an automatic pong control frame response from the peer.
6694
6695 * The ping frame is written.
6696
6697
6698 * An error occurs.
6699
6700 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_write_some` function. The program must ensure that no other calls to [link beast.ref.boost__beast__websocket__stream.ping `websocket::stream::ping`], [link beast.ref.boost__beast__websocket__stream.pong `websocket::stream::pong`], [link beast.ref.boost__beast__websocket__stream.async_ping `websocket::stream::async_ping`], or [link beast.ref.boost__beast__websocket__stream.async_pong `websocket::stream::async_pong`] are performed until this operation completes.
6701 If a close frame is sent or received before the ping frame is sent, the error received by this completion handler will be `net::error::operation_aborted`.
6702 [heading Parameters]\r[table [[Name][Description]]\r  [[`payload`][\r    
6703 The payload of the ping message, which may be empty. The implementation will not access the contents of this object after the initiating function returns.\r  ]]\r  [[`handler`][\r    
6704 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6705       error_code const& ec     // Result of operation
6706   );
6707 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
6708 [endsect]\r[section:async_pong websocket::stream::async_pong]\r[indexterm2 async_pong..websocket::stream]\r
6709 Send a websocket pong control frame asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __WriteHandler__ = net::default_completion_token_t<executor_type>>\r``__deduced__``\rasync_pong(\r    ping_data const& payload,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6710 This function is used to asynchronously send a [@https://tools.ietf.org/html/rfc6455#section-5.5.3 pong frame], which is usually sent automatically in response to a ping frame from the remote peer.
6711
6712 * The pong frame is written.
6713
6714
6715 * An error occurs.
6716
6717 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_write_some` function. The program must ensure that no other calls to [link beast.ref.boost__beast__websocket__stream.ping `websocket::stream::ping`], [link beast.ref.boost__beast__websocket__stream.pong `websocket::stream::pong`], [link beast.ref.boost__beast__websocket__stream.async_ping `websocket::stream::async_ping`], or [link beast.ref.boost__beast__websocket__stream.async_pong `websocket::stream::async_pong`] are performed until this operation completes.
6718 If a close frame is sent or received before the pong frame is sent, the error received by this completion handler will be `net::error::operation_aborted`.
6719 WebSocket allows pong frames to be sent at any time, without first receiving a ping. An unsolicited pong sent in this fashion may indicate to the remote peer that the connection is still active.
6720 [heading Parameters]\r[table [[Name][Description]]\r  [[`payload`][\r    
6721 The payload of the pong message, which may be empty. The implementation will not access the contents of this object after the initiating function returns.\r  ]]\r  [[`handler`][\r    
6722 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6723       error_code const& ec     // Result of operation
6724   );
6725 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
6726 [endsect]\r[section:async_read websocket::stream::async_read]\r[indexterm2 async_read..websocket::stream]\r
6727 Read a complete message asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __DynamicBuffer__,\r    class __ReadHandler__ = net::default_completion_token_t<                executor_type>>\r``__deduced__``\rasync_read(\r    DynamicBuffer& buffer,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6728 This function is used to asynchronously read a complete message.
6729 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6730
6731 * A complete message is received.
6732
6733
6734 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
6735
6736
6737 * An error occurs.
6738
6739 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` and `async_write_some` functions. The program must ensure that no other calls to [link beast.ref.boost__beast__websocket__stream.read `websocket::stream::read`], [link beast.ref.boost__beast__websocket__stream.read_some `websocket::stream::read_some`], [link beast.ref.boost__beast__websocket__stream.async_read `websocket::stream::async_read`], or [link beast.ref.boost__beast__websocket__stream.async_read_some `websocket::stream::async_read_some`] are performed until this operation completes.
6740 Received message data is appended to the buffer. The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message.
6741 Until the operation completes, the implementation will read incoming control frames and handle them automatically as follows:
6742
6743 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
6744
6745
6746 * For each received ping frame, a pong frame will be automatically sent.
6747
6748
6749 * If a close frame is received, the WebSocket close procedure is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
6750
6751 Pong frames and close frames sent by the implementation while the read operation is outstanding do not prevent the application from also writing message data, sending pings, sending pongs, or sending close frames.
6752 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
6753 A dynamic buffer to append message data to.\r  ]]\r  [[`handler`][\r    
6754 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6755       error_code const& ec,       // Result of operation
6756       std::size_t bytes_written   // Number of bytes appended to buffer
6757   );
6758 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
6759 [endsect]\r[section:async_read_some websocket::stream::async_read_some]\r[indexterm2 async_read_some..websocket::stream]\r
6760 Read some message data asynchronously. ```\rtemplate<\r    class __DynamicBuffer__,\r    class __ReadHandler__ = net::default_completion_token_t<                executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__websocket__stream.async_read_some.overload1 async_read_some]``(\r    DynamicBuffer& buffer,\r    std::size_t limit,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.async_read_some.overload1 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__,\r    class __ReadHandler__ = net::default_completion_token_t<                executor_type>>\r``__deduced__``\r``[link beast.ref.boost__beast__websocket__stream.async_read_some.overload2 async_read_some]``(\r    MutableBufferSequence const& buffers,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.async_read_some.overload2 more...]]``\r```\r[section:overload1 websocket::stream::async_read_some (1 of 2 overloads)]\r
6761 Read some message data asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __DynamicBuffer__,\r    class __ReadHandler__ = net::default_completion_token_t<                executor_type>>\r``__deduced__``\rasync_read_some(\r    DynamicBuffer& buffer,\r    std::size_t limit,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6762 This function is used to asynchronously read some message data.
6763 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6764
6765 * Some message data is received.
6766
6767
6768 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
6769
6770
6771 * An error occurs.
6772
6773 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` and `async_write_some` functions. The program must ensure that no other calls to [link beast.ref.boost__beast__websocket__stream.read `websocket::stream::read`], [link beast.ref.boost__beast__websocket__stream.read_some `websocket::stream::read_some`], [link beast.ref.boost__beast__websocket__stream.async_read `websocket::stream::async_read`], or [link beast.ref.boost__beast__websocket__stream.async_read_some `websocket::stream::async_read_some`] are performed until this operation completes.
6774 Received message data is appended to the buffer. The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message.
6775 Until the operation completes, the implementation will read incoming control frames and handle them automatically as follows:
6776
6777 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
6778
6779
6780 * For each received ping frame, a pong frame will be automatically sent.
6781
6782
6783 * If a close frame is received, the WebSocket close procedure is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
6784
6785 Pong frames and close frames sent by the implementation while the read operation is outstanding do not prevent the application from also writing message data, sending pings, sending pongs, or sending close frames.
6786 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
6787 A dynamic buffer to append message data to.\r  ]]\r  [[`limit`][\r    
6788 An upper limit on the number of bytes this function will append into the buffer. If this value is zero, then a reasonable size will be chosen automatically.\r  ]]\r  [[`handler`][\r    
6789 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6790       error_code const& ec,       // Result of operation
6791       std::size_t bytes_written   // Number of bytes appended to buffer
6792   );
6793 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
6794 [endsect]\r[section:overload2 websocket::stream::async_read_some (2 of 2 overloads)]\r
6795 Read some message data asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__,\r    class __ReadHandler__ = net::default_completion_token_t<                executor_type>>\r``__deduced__``\rasync_read_some(\r    MutableBufferSequence const& buffers,\r    ReadHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6796 This function is used to asynchronously read some message data.
6797 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6798
6799 * Some message data is received.
6800
6801
6802 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
6803
6804
6805 * An error occurs.
6806
6807 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_read_some` and `async_write_some` functions. The program must ensure that no other calls to [link beast.ref.boost__beast__websocket__stream.read `websocket::stream::read`], [link beast.ref.boost__beast__websocket__stream.read_some `websocket::stream::read_some`], [link beast.ref.boost__beast__websocket__stream.async_read `websocket::stream::async_read`], or [link beast.ref.boost__beast__websocket__stream.async_read_some `websocket::stream::async_read_some`] are performed until this operation completes.
6808 Received message data is appended to the buffer. The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message.
6809 Until the operation completes, the implementation will read incoming control frames and handle them automatically as follows:
6810
6811 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
6812
6813
6814 * For each received ping frame, a pong frame will be automatically sent.
6815
6816
6817 * If a close frame is received, the WebSocket close procedure is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
6818
6819 Pong frames and close frames sent by the implementation while the read operation is outstanding do not prevent the application from also writing message data, sending pings, sending pongs, or sending close frames.
6820 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6821 A buffer sequence to write message data into. The previous contents of the buffers will be overwritten, starting from the beginning. The implementation will make copies of this object as needed, but but ownership of the underlying memory is not transferred. The caller is responsible for ensuring that the memory locations pointed to by the buffer sequence remain valid until the completion handler is called.\r  ]]\r  [[`handler`][\r    
6822 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6823       error_code const& ec,       // Result of operation
6824       std::size_t bytes_written   // Number of bytes written to the buffers
6825   );
6826 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
6827 [endsect]\r[endsect]\r\r[section:async_write websocket::stream::async_write]\r[indexterm2 async_write..websocket::stream]\r
6828 Write a complete message asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class __WriteHandler__ = net::default_completion_token_t<                executor_type>>\r``__deduced__``\rasync_write(\r    ConstBufferSequence const& buffers,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6829 This function is used to asynchronously write a complete message.
6830 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6831
6832 * The complete message is written.
6833
6834
6835 * An error occurs.
6836
6837 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_write_some` function. The program must ensure that no other calls to [link beast.ref.boost__beast__websocket__stream.write `websocket::stream::write`], [link beast.ref.boost__beast__websocket__stream.write_some `websocket::stream::write_some`], [link beast.ref.boost__beast__websocket__stream.async_write `websocket::stream::async_write`], or [link beast.ref.boost__beast__websocket__stream.async_write_some `websocket::stream::async_write_some`] are performed until this operation completes.
6838 The current setting of the [link beast.ref.boost__beast__websocket__stream.binary `websocket::stream::binary`] option controls whether the message opcode is set to text or binary. If the [link beast.ref.boost__beast__websocket__stream.auto_fragment `websocket::stream::auto_fragment`] option is set, the message will be split into one or more frames as necessary. The actual payload contents sent may be transformed as per the WebSocket protocol settings.
6839 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
6840 A buffer sequence containing the entire message payload. The implementation will make copies of this object as needed, but ownership of the underlying memory is not transferred. The caller is responsible for ensuring that the memory locations pointed to by buffers remains valid until the completion handler is called.\r  ]]\r  [[`handler`][\r    
6841 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6842       error_code const& ec,           // Result of operation
6843       std::size_t bytes_transferred   // Number of bytes sent from the
6844                                       // buffers. If an error occurred,
6845                                       // this will be less than the buffer_size.
6846   );
6847 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
6848 [endsect]\r[section:async_write_some websocket::stream::async_write_some]\r[indexterm2 async_write_some..websocket::stream]\r
6849 Write some message data asynchronously. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__,\r    class __WriteHandler__ = net::default_completion_token_t<                executor_type>>\r``__deduced__``\rasync_write_some(\r    bool fin,\r    ConstBufferSequence const& buffers,\r    WriteHandler&& handler = net::default_completion_token_t< executor_type >{});\r```\r\r[heading Description]\r
6850 This function is used to asynchronously write part of a message.
6851 This call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:
6852
6853 * The message data is written.
6854
6855
6856 * An error occurs.
6857
6858 The algorithm, known as a ['composed asynchronous operation], is implemented in terms of calls to the next layer's `async_write_some` function. The program must ensure that no other calls to [link beast.ref.boost__beast__websocket__stream.write `websocket::stream::write`], [link beast.ref.boost__beast__websocket__stream.write_some `websocket::stream::write_some`], [link beast.ref.boost__beast__websocket__stream.async_write `websocket::stream::async_write`], or [link beast.ref.boost__beast__websocket__stream.async_write_some `websocket::stream::async_write_some`] are performed until this operation completes.
6859 If this is the beginning of a new message, the message opcode will be set to text or binary based on the current setting of the [link beast.ref.boost__beast__websocket__stream.binary `websocket::stream::binary`] (or [link beast.ref.boost__beast__websocket__stream.text `websocket::stream::text`]) option. The actual payload sent may be transformed as per the WebSocket protocol settings.
6860 [heading Parameters]\r[table [[Name][Description]]\r  [[`fin`][\r    
6861 `true` if this is the last part of the message.\r  ]]\r  [[`buffers`][\r    
6862 The buffers containing the message part to send. The implementation will make copies of this object as needed, but ownership of the underlying memory is not transferred. The caller is responsible for ensuring that the memory locations pointed to by buffers remains valid until the completion handler is called.\r  ]]\r  [[`handler`][\r    
6863 The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: \r```\r  void handler(
6864       error_code const& ec,           // Result of operation
6865       std::size_t bytes_transferred   // Number of bytes sent from the
6866                                       // buffers. If an error occurred,
6867                                       // this will be less than the buffer_size.
6868   );
6869 ```\rRegardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`. \r  ]]\r]\r
6870 [endsect]\r[section:auto_fragment websocket::stream::auto_fragment]\r[indexterm2 auto_fragment..websocket::stream]\r
6871 Set the automatic fragmentation option. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.auto_fragment.overload1 auto_fragment]``(\r    bool value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.auto_fragment.overload1 more...]]``\r\r```\r
6872 Returns `true` if the automatic fragmentation option is set. ```\rbool\r``[link beast.ref.boost__beast__websocket__stream.auto_fragment.overload2 auto_fragment]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.auto_fragment.overload2 more...]]``\r```\r[section:overload1 websocket::stream::auto_fragment (1 of 2 overloads)]\r
6873 Set the automatic fragmentation option. \r[heading Synopsis]\r```\rvoid\rauto_fragment(\r    bool value);\r```\r\r[heading Description]\r
6874 Determines if outgoing message payloads are broken up into multiple pieces.
6875 When the automatic fragmentation size is turned on, outgoing message payloads are broken up into multiple frames no larger than the write buffer size.
6876 The default setting is to fragment messages.
6877 [heading Parameters]\r[table [[Name][Description]]\r  [[`value`][\r    
6878 A `bool` indicating if auto fragmentation should be on.\r  ]]\r]\r
6879 [heading Example]
6880 Setting the automatic fragmentation option: \r```\r  ws.auto_fragment(true);
6881 ```\r
6882 [endsect]\r[section:overload2 websocket::stream::auto_fragment (2 of 2 overloads)]\r
6883 Returns `true` if the automatic fragmentation option is set. \r[heading Synopsis]\r```\rbool\rauto_fragment() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:binary websocket::stream::binary]\r[indexterm2 binary..websocket::stream]\r
6884 Set the binary message write option. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.binary.overload1 binary]``(\r    bool value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.binary.overload1 more...]]``\r\r```\r
6885 Returns `true` if the binary message write option is set. ```\rbool\r``[link beast.ref.boost__beast__websocket__stream.binary.overload2 binary]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.binary.overload2 more...]]``\r```\r[section:overload1 websocket::stream::binary (1 of 2 overloads)]\r
6886 Set the binary message write option. \r[heading Synopsis]\r```\rvoid\rbinary(\r    bool value);\r```\r\r[heading Description]\r
6887 This controls whether or not outgoing message opcodes are set to binary or text. The setting is only applied at the start when a caller begins a new message. Changing the opcode after a message is started will only take effect after the current message being sent is complete.
6888 The default setting is to send text messages.
6889 [heading Parameters]\r[table [[Name][Description]]\r  [[`value`][\r    
6890 `true` if outgoing messages should indicate binary, or `false` if they should indicate text.\r  ]]\r]\r
6891 [heading Example]
6892 Setting the message type to binary. \r```\r  ws.binary(true);
6893 ```\r
6894 [endsect]\r[section:overload2 websocket::stream::binary (2 of 2 overloads)]\r
6895 Returns `true` if the binary message write option is set. \r[heading Synopsis]\r```\rbool\rbinary() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:close websocket::stream::close]\r[indexterm2 close..websocket::stream]\r
6896 Send a websocket close control frame. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.close.overload1 close]``(\r    close_reason const& cr);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.close.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__websocket__stream.close.overload2 close]``(\r    close_reason const& cr,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.close.overload2 more...]]``\r```\r[section:overload1 websocket::stream::close (1 of 2 overloads)]\r
6897 Send a websocket close control frame. \r[heading Synopsis]\r```\rvoid\rclose(\r    close_reason const& cr);\r```\r\r[heading Description]\r
6898 This function is used to send a [@https://tools.ietf.org/html/rfc6455#section-5.5.1 close frame], which begins the websocket closing handshake. The session ends when both ends of the connection have sent and received a close frame.
6899 The call blocks until one of the following conditions is true:
6900
6901 * The close frame is written.
6902
6903
6904 * An error occurs.
6905
6906 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
6907 After beginning the closing handshake, the program should not write further message data, pings, or pongs. Instead, the program should continue reading message data until an error occurs. A read returning [link beast.ref.boost__beast__websocket__error `websocket::closed`] indicates a successful connection closure.
6908 [heading Parameters]\r[table [[Name][Description]]\r  [[`cr`][\r    
6909 The reason for the close. If the close reason specifies a close code other than beast::websocket::close\_code::none, the close frame is sent with the close code and optional reason string. Otherwise, the close frame is sent with no payload.\r  ]]\r]\r
6910 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
6911 Thrown on failure.\r  ]]\r]\r
6912 [heading See Also]\r
6913
6914 * [@https://tools.ietf.org/html/rfc6455#section-7.1.2 Websocket Closing Handshake (RFC6455)] 
6915
6916
6917 [endsect]\r[section:overload2 websocket::stream::close (2 of 2 overloads)]\r
6918 Send a websocket close control frame. \r[heading Synopsis]\r```\rvoid\rclose(\r    close_reason const& cr,\r    error_code& ec);\r```\r\r[heading Description]\r
6919 This function is used to send a [@https://tools.ietf.org/html/rfc6455#section-5.5.1 close frame], which begins the websocket closing handshake. The session ends when both ends of the connection have sent and received a close frame.
6920 The call blocks until one of the following conditions is true:
6921
6922 * The close frame is written.
6923
6924
6925 * An error occurs.
6926
6927 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
6928 After beginning the closing handshake, the program should not write further message data, pings, or pongs. Instead, the program should continue reading message data until an error occurs. A read returning [link beast.ref.boost__beast__websocket__error `websocket::closed`] indicates a successful connection closure.
6929 [heading Parameters]\r[table [[Name][Description]]\r  [[`cr`][\r    
6930 The reason for the close. If the close reason specifies a close code other than beast::websocket::close\_code::none, the close frame is sent with the close code and optional reason string. Otherwise, the close frame is sent with no payload.\r  ]]\r  [[`ec`][\r    
6931 Set to indicate what error occurred, if any.\r  ]]\r]\r
6932 [heading See Also]\r
6933
6934 * [@https://tools.ietf.org/html/rfc6455#section-7.1.2 Websocket Closing Handshake (RFC6455)] 
6935
6936
6937 [endsect]\r[endsect]\r\r[section:control_callback websocket::stream::control_callback]\r[indexterm2 control_callback..websocket::stream]\r
6938 Set a callback to be invoked on each incoming control frame. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.control_callback.overload1 control_callback]``(\r    std::function< void(frame_type, string_view)> cb);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.control_callback.overload1 more...]]``\r\r```\r
6939 Reset the control frame callback. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.control_callback.overload2 control_callback]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.control_callback.overload2 more...]]``\r```\r[section:overload1 websocket::stream::control_callback (1 of 2 overloads)]\r
6940 Set a callback to be invoked on each incoming control frame. \r[heading Synopsis]\r```\rvoid\rcontrol_callback(\r    std::function< void(frame_type, string_view)> cb);\r```\r\r[heading Description]\r
6941 Sets the callback to be invoked whenever a ping, pong, or close control frame is received during a call to one of the following functions:
6942
6943 * [link beast.ref.boost__beast__websocket__stream.read `websocket::stream::read`] 
6944 * [link beast.ref.boost__beast__websocket__stream.read_some `websocket::stream::read_some`] 
6945 * [link beast.ref.boost__beast__websocket__stream.async_read `websocket::stream::async_read`] 
6946 * [link beast.ref.boost__beast__websocket__stream.async_read_some `websocket::stream::async_read_some`]
6947
6948 Unlike completion handlers, the callback will be invoked for each control frame during a call to any synchronous or asynchronous read function. The operation is passive, with no associated error code, and triggered by reads.
6949 For close frames, the close reason code may be obtained by calling the function [link beast.ref.boost__beast__websocket__stream.reason `websocket::stream::reason`].
6950 [heading Parameters]\r[table [[Name][Description]]\r  [[`cb`][\r    
6951 The function object to call, which must be invocable with this equivalent signature: \r```\r  void
6952   callback(
6953       frame_type kind,       // The type of frame
6954       string_view payload    // The payload in the frame
6955   );
6956 ```\rThe implementation type-erases the callback which may require a dynamic allocation. To prevent the possibility of a dynamic allocation, use `std::ref` to wrap the callback. If the read operation which receives the control frame is an asynchronous operation, the callback will be invoked using the same method as that used to invoke the final handler.\r  ]]\r]\r
6957 [heading Remarks]\r
6958 Incoming ping and close frames are automatically handled. Pings are responded to with pongs, and a close frame is responded to with a close frame leading to the closure of the stream. It is not necessary to manually send pings, pongs, or close frames from inside the control callback. Attempting to manually send a close frame from inside the control callback after receiving a close frame will result in undefined behavior. 
6959 [endsect]\r[section:overload2 websocket::stream::control_callback (2 of 2 overloads)]\r
6960 Reset the control frame callback. \r[heading Synopsis]\r```\rvoid\rcontrol_callback();\r```\r\r[heading Description]\r
6961 This function removes any previously set control frame callback. [endsect]\r[endsect]\r\r[section:executor_type websocket::stream::executor_type]\r[indexterm2 executor_type..websocket::stream]\r
6962 The type of the executor associated with the object. \r[heading Synopsis]\r\r```\rusing executor_type = beast::executor_type< next_layer_type >;\r```\r\r[heading Description]\r[endsect]\r[section:get_executor websocket::stream::get_executor]\r[indexterm2 get_executor..websocket::stream]\r
6963 Get the executor associated with the object. \r[heading Synopsis]\r```\rexecutor_type\rget_executor();\r```\r\r[heading Description]\r
6964 This function may be used to obtain the executor object that the stream uses to dispatch handlers for asynchronous operations.
6965 [heading Return Value]
6966 A copy of the executor that stream will use to dispatch handlers. 
6967 [endsect]\r[section:get_option websocket::stream::get_option]\r[indexterm2 get_option..websocket::stream]\r```\rtemplate<\r    class Option>\rvoid\r``[link beast.ref.boost__beast__websocket__stream.get_option.overload1 get_option]``(\r    Option& opt);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.get_option.overload1 more...]]``\r\r```\r
6968 Get the permessage-deflate extension options. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.get_option.overload2 get_option]``(\r    permessage_deflate& o);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.get_option.overload2 more...]]``\r```\r[section:overload1 websocket::stream::get_option (1 of 2 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class Option>\rvoid\rget_option(\r    Option& opt);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 websocket::stream::get_option (2 of 2 overloads)]\r
6969 Get the permessage-deflate extension options. \r[heading Synopsis]\r```\rvoid\rget_option(\r    permessage_deflate& o);\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:got_binary websocket::stream::got_binary]\r[indexterm2 got_binary..websocket::stream]\r
6970 Returns `true` if the latest message data indicates binary. \r[heading Synopsis]\r```\rbool\rgot_binary() const;\r```\r\r[heading Description]\r
6971 This function informs the caller of whether the last received message frame represents a message with the binary opcode.
6972 If there is no last message frame, the return value is undefined. [endsect]\r[section:got_text websocket::stream::got_text]\r[indexterm2 got_text..websocket::stream]\r
6973 Returns `true` if the latest message data indicates text. \r[heading Synopsis]\r```\rbool\rgot_text() const;\r```\r\r[heading Description]\r
6974 This function informs the caller of whether the last received message frame represents a message with the text opcode.
6975 If there is no last message frame, the return value is undefined. [endsect]\r[section:handshake websocket::stream::handshake]\r[indexterm2 handshake..websocket::stream]\r
6976 Perform the WebSocket handshake in the client role. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.handshake.overload1 handshake]``(\r    string_view host,\r    string_view target);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.handshake.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__websocket__stream.handshake.overload2 handshake]``(\r    response_type& res,\r    string_view host,\r    string_view target);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.handshake.overload2 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__websocket__stream.handshake.overload3 handshake]``(\r    string_view host,\r    string_view target,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.handshake.overload3 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__websocket__stream.handshake.overload4 handshake]``(\r    response_type& res,\r    string_view host,\r    string_view target,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.handshake.overload4 more...]]``\r```\r[section:overload1 websocket::stream::handshake (1 of 4 overloads)]\r
6977 Perform the WebSocket handshake in the client role. \r[heading Synopsis]\r```\rvoid\rhandshake(\r    string_view host,\r    string_view target);\r```\r\r[heading Description]\r
6978 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
6979 The call blocks until one of the following conditions is true:
6980
6981 * The request is sent and the response is received.
6982
6983
6984 * An error occurs.
6985
6986 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
6987 The handshake is successful if the received HTTP response indicates the upgrade was accepted by the server, represented by a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`].
6988 [heading Parameters]\r[table [[Name][Description]]\r  [[`host`][\r    
6989 The name of the remote host. This is required by the HTTP protocol to set the "Host" header field.\r  ]]\r  [[`target`][\r    
6990 The request-target, in origin-form. The server may use the target to distinguish different services on the same listening port.\r  ]]\r]\r
6991 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
6992 Thrown on failure.\r  ]]\r]\r
6993 [heading Example]
6994 \r```\r  ws.handshake("localhost", "/");
6995 ```\r
6996 [heading See Also]\r
6997
6998 * [@https://tools.ietf.org/html/rfc6455#section-4.1 Websocket Opening Handshake Client Requirements (RFC6455)] 
6999 * [@https://tools.ietf.org/html/rfc7230#section-5.4 Host field (RFC7230)] 
7000 * [@https://tools.ietf.org/html/rfc7230#section-3.1.1 request-target (RFC7230)] 
7001 * [@https://tools.ietf.org/html/rfc7230#section-5.3.1 origin-form (RFC7230)] 
7002
7003
7004 [endsect]\r[section:overload2 websocket::stream::handshake (2 of 4 overloads)]\r
7005 Perform the WebSocket handshake in the client role. \r[heading Synopsis]\r```\rvoid\rhandshake(\r    response_type& res,\r    string_view host,\r    string_view target);\r```\r\r[heading Description]\r
7006 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
7007 The call blocks until one of the following conditions is true:
7008
7009 * The request is sent and the response is received.
7010
7011
7012 * An error occurs.
7013
7014 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7015 The handshake is successful if the received HTTP response indicates the upgrade was accepted by the server, represented by a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`].
7016 [heading Parameters]\r[table [[Name][Description]]\r  [[`res`][\r    
7017 The HTTP Upgrade response returned by the remote endpoint. The caller may use the response to access any additional information sent by the server.\r  ]]\r  [[`host`][\r    
7018 The name of the remote host. This is required by the HTTP protocol to set the "Host" header field.\r  ]]\r  [[`target`][\r    
7019 The request-target, in origin-form. The server may use the target to distinguish different services on the same listening port.\r  ]]\r]\r
7020 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
7021 Thrown on failure.\r  ]]\r]\r
7022 [heading Example]
7023 \r```\r  response_type res;
7024   ws.handshake(res, "localhost", "/");
7025   std::cout << res;
7026 ```\r
7027 [heading See Also]\r
7028
7029 * [@https://tools.ietf.org/html/rfc6455#section-4.1 Websocket Opening Handshake Client Requirements (RFC6455)] 
7030 * [@https://tools.ietf.org/html/rfc7230#section-5.4 Host field (RFC7230)] 
7031 * [@https://tools.ietf.org/html/rfc7230#section-3.1.1 request-target (RFC7230)] 
7032 * [@https://tools.ietf.org/html/rfc7230#section-5.3.1 origin-form (RFC7230)] 
7033
7034
7035 [endsect]\r[section:overload3 websocket::stream::handshake (3 of 4 overloads)]\r
7036 Perform the WebSocket handshake in the client role. \r[heading Synopsis]\r```\rvoid\rhandshake(\r    string_view host,\r    string_view target,\r    error_code& ec);\r```\r\r[heading Description]\r
7037 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
7038 The call blocks until one of the following conditions is true:
7039
7040 * The request is sent and the response is received.
7041
7042
7043 * An error occurs.
7044
7045 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7046 The handshake is successful if the received HTTP response indicates the upgrade was accepted by the server, represented by a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`].
7047 [heading Parameters]\r[table [[Name][Description]]\r  [[`host`][\r    
7048 The name of the remote host. This is required by the HTTP protocol to set the "Host" header field.\r  ]]\r  [[`target`][\r    
7049 The request-target, in origin-form. The server may use the target to distinguish different services on the same listening port.\r  ]]\r  [[`ec`][\r    
7050 Set to indicate what error occurred, if any.\r  ]]\r]\r
7051 [heading Example]
7052 \r```\r  error_code ec;
7053   ws.handshake("localhost", "/", ec);
7054 ```\r
7055 [heading See Also]\r
7056
7057 * [@https://tools.ietf.org/html/rfc6455#section-4.1 Websocket Opening Handshake Client Requirements (RFC6455)] 
7058 * [@https://tools.ietf.org/html/rfc7230#section-5.4 Host field (RFC7230)] 
7059 * [@https://tools.ietf.org/html/rfc7230#section-3.1.1 request-target (RFC7230)] 
7060 * [@https://tools.ietf.org/html/rfc7230#section-5.3.1 origin-form (RFC7230)] 
7061
7062
7063 [endsect]\r[section:overload4 websocket::stream::handshake (4 of 4 overloads)]\r
7064 Perform the WebSocket handshake in the client role. \r[heading Synopsis]\r```\rvoid\rhandshake(\r    response_type& res,\r    string_view host,\r    string_view target,\r    error_code& ec);\r```\r\r[heading Description]\r
7065 This function is used to perform the [@https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake WebSocket handshake], required before messages can be sent and received. During the handshake, the client sends the Websocket Upgrade HTTP request, and the server replies with an HTTP response indicating the result of the handshake.
7066 The call blocks until one of the following conditions is true:
7067
7068 * The request is sent and the response is received.
7069
7070
7071 * An error occurs.
7072
7073 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7074 The handshake is successful if the received HTTP response indicates the upgrade was accepted by the server, represented by a [@https://tools.ietf.org/html/rfc7230#section-3.1.2 status-code] of [link beast.ref.boost__beast__http__status `http::switching_protocols`].
7075 [heading Parameters]\r[table [[Name][Description]]\r  [[`res`][\r    
7076 The HTTP Upgrade response returned by the remote endpoint. The caller may use the response to access any additional information sent by the server.\r  ]]\r  [[`host`][\r    
7077 The name of the remote host. This is required by the HTTP protocol to set the "Host" header field.\r  ]]\r  [[`target`][\r    
7078 The request-target, in origin-form. The server may use the target to distinguish different services on the same listening port.\r  ]]\r  [[`ec`][\r    
7079 Set to indicate what error occurred, if any.\r  ]]\r]\r
7080 [heading Example]
7081 \r```\r  error_code ec;
7082   response_type res;
7083   ws.handshake(res, "localhost", "/", ec);
7084   if(! ec)
7085       std::cout << res;
7086 ```\r
7087 [heading See Also]\r
7088
7089 * [@https://tools.ietf.org/html/rfc6455#section-4.1 Websocket Opening Handshake Client Requirements (RFC6455)] 
7090 * [@https://tools.ietf.org/html/rfc7230#section-5.4 Host field (RFC7230)] 
7091 * [@https://tools.ietf.org/html/rfc7230#section-3.1.1 request-target (RFC7230)] 
7092 * [@https://tools.ietf.org/html/rfc7230#section-5.3.1 origin-form (RFC7230)] 
7093
7094
7095 [endsect]\r[endsect]\r\r[section:is_deflate_supported websocket::stream::is_deflate_supported]\r[indexterm2 is_deflate_supported..websocket::stream]\r
7096 Indicates if the permessage-deflate extension is supported. \r[heading Synopsis]\r\r```\rusing is_deflate_supported = std::integral_constant< bool, deflateSupported >;\r```\r\r[heading Description]\r[endsect]\r[section:is_message_done websocket::stream::is_message_done]\r[indexterm2 is_message_done..websocket::stream]\r
7097 Returns `true` if the last completed read finished the current message. \r[heading Synopsis]\r```\rbool\ris_message_done() const;\r```\r\r[heading Description]\r[endsect]\r[section:is_open websocket::stream::is_open]\r[indexterm2 is_open..websocket::stream]\r
7098 Returns `true` if the stream is open. \r[heading Synopsis]\r```\rbool\ris_open() const;\r```\r\r[heading Description]\r
7099 The stream is open after a successful handshake, and when no error has occurred. [endsect]\r[section:next_layer websocket::stream::next_layer]\r[indexterm2 next_layer..websocket::stream]\r
7100 Get a reference to the next layer. ```\rnext_layer_type&\r``[link beast.ref.boost__beast__websocket__stream.next_layer.overload1 next_layer]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.next_layer.overload1 more...]]``\r\rnext_layer_type const &\r``[link beast.ref.boost__beast__websocket__stream.next_layer.overload2 next_layer]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.next_layer.overload2 more...]]``\r```\r[section:overload1 websocket::stream::next_layer (1 of 2 overloads)]\r
7101 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type&\rnext_layer();\r```\r\r[heading Description]\r
7102 This function returns a reference to the next layer in a stack of stream layers.
7103 [heading Return Value]
7104 A reference to the next layer in the stack of stream layers. 
7105 [endsect]\r[section:overload2 websocket::stream::next_layer (2 of 2 overloads)]\r
7106 Get a reference to the next layer. \r[heading Synopsis]\r```\rnext_layer_type const &\rnext_layer() const;\r```\r\r[heading Description]\r
7107 This function returns a reference to the next layer in a stack of stream layers.
7108 [heading Return Value]
7109 A reference to the next layer in the stack of stream layers. 
7110 [endsect]\r[endsect]\r\r[section:next_layer_type websocket::stream::next_layer_type]\r[indexterm2 next_layer_type..websocket::stream]\r
7111 The type of the next layer. \r[heading Synopsis]\r\r```\rusing next_layer_type = typename std::remove_reference< NextLayer >::type;\r```\r\r[heading Description]\r[endsect]\r[section:operator_eq_ websocket::stream::operator=]\r[indexterm2 operator=..websocket::stream]\r
7112 Move assignment (deleted) \r[heading Synopsis]\r```\rstream&\roperator=(\r    stream&&);\r```\r\r[heading Description]\r[endsect]\r[section:ping websocket::stream::ping]\r[indexterm2 ping..websocket::stream]\r
7113 Send a websocket ping control frame. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.ping.overload1 ping]``(\r    ping_data const& payload);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.ping.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__websocket__stream.ping.overload2 ping]``(\r    ping_data const& payload,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.ping.overload2 more...]]``\r```\r[section:overload1 websocket::stream::ping (1 of 2 overloads)]\r
7114 Send a websocket ping control frame. \r[heading Synopsis]\r```\rvoid\rping(\r    ping_data const& payload);\r```\r\r[heading Description]\r
7115 This function is used to send a [@https://tools.ietf.org/html/rfc6455#section-5.5.2 ping frame], which usually elicits an automatic pong control frame response from the peer.
7116 The call blocks until one of the following conditions is true:
7117
7118 * The ping frame is written.
7119
7120
7121 * An error occurs.
7122
7123 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
7124 [heading Parameters]\r[table [[Name][Description]]\r  [[`payload`][\r    
7125 The payload of the ping message, which may be empty.\r  ]]\r]\r
7126 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
7127 Thrown on failure. \r  ]]\r]\r
7128 [endsect]\r[section:overload2 websocket::stream::ping (2 of 2 overloads)]\r
7129 Send a websocket ping control frame. \r[heading Synopsis]\r```\rvoid\rping(\r    ping_data const& payload,\r    error_code& ec);\r```\r\r[heading Description]\r
7130 This function is used to send a [@https://tools.ietf.org/html/rfc6455#section-5.5.2 ping frame], which usually elicits an automatic pong control frame response from the peer.
7131 The call blocks until one of the following conditions is true:
7132
7133 * The ping frame is written.
7134
7135
7136 * An error occurs.
7137
7138 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
7139 [heading Parameters]\r[table [[Name][Description]]\r  [[`payload`][\r    
7140 The payload of the ping message, which may be empty.\r  ]]\r  [[`ec`][\r    
7141 Set to indicate what error occurred, if any. \r  ]]\r]\r
7142 [endsect]\r[endsect]\r\r[section:pong websocket::stream::pong]\r[indexterm2 pong..websocket::stream]\r
7143 Send a websocket pong control frame. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.pong.overload1 pong]``(\r    ping_data const& payload);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.pong.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__websocket__stream.pong.overload2 pong]``(\r    ping_data const& payload,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.pong.overload2 more...]]``\r```\r[section:overload1 websocket::stream::pong (1 of 2 overloads)]\r
7144 Send a websocket pong control frame. \r[heading Synopsis]\r```\rvoid\rpong(\r    ping_data const& payload);\r```\r\r[heading Description]\r
7145 This function is used to send a [@https://tools.ietf.org/html/rfc6455#section-5.5.3 pong frame], which is usually sent automatically in response to a ping frame from the remote peer.
7146 The call blocks until one of the following conditions is true:
7147
7148 * The pong frame is written.
7149
7150
7151 * An error occurs.
7152
7153 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
7154 WebSocket allows pong frames to be sent at any time, without first receiving a ping. An unsolicited pong sent in this fashion may indicate to the remote peer that the connection is still active.
7155 [heading Parameters]\r[table [[Name][Description]]\r  [[`payload`][\r    
7156 The payload of the pong message, which may be empty.\r  ]]\r]\r
7157 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
7158 Thrown on failure. \r  ]]\r]\r
7159 [endsect]\r[section:overload2 websocket::stream::pong (2 of 2 overloads)]\r
7160 Send a websocket pong control frame. \r[heading Synopsis]\r```\rvoid\rpong(\r    ping_data const& payload,\r    error_code& ec);\r```\r\r[heading Description]\r
7161 This function is used to send a [@https://tools.ietf.org/html/rfc6455#section-5.5.3 pong frame], which is usually sent automatically in response to a ping frame from the remote peer.
7162 The call blocks until one of the following conditions is true:
7163
7164 * The pong frame is written.
7165
7166
7167 * An error occurs.
7168
7169 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
7170 WebSocket allows pong frames to be sent at any time, without first receiving a ping. An unsolicited pong sent in this fashion may indicate to the remote peer that the connection is still active.
7171 [heading Parameters]\r[table [[Name][Description]]\r  [[`payload`][\r    
7172 The payload of the pong message, which may be empty.\r  ]]\r  [[`ec`][\r    
7173 Set to indicate what error occurred, if any. \r  ]]\r]\r
7174 [endsect]\r[endsect]\r\r[section:read websocket::stream::read]\r[indexterm2 read..websocket::stream]\r
7175 Read a complete message. ```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read.overload1 read]``(\r    DynamicBuffer& buffer);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read.overload1 more...]]``\r\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read.overload2 read]``(\r    DynamicBuffer& buffer,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read.overload2 more...]]``\r```\r[section:overload1 websocket::stream::read (1 of 2 overloads)]\r
7176 Read a complete message. \r[heading Synopsis]\r```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\rread(\r    DynamicBuffer& buffer);\r```\r\r[heading Description]\r
7177 This function is used to read a complete message.
7178 The call blocks until one of the following is true:
7179
7180 * A complete message is received.
7181
7182
7183 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
7184
7185
7186 * An error occurs.
7187
7188 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7189 Received message data is appended to the buffer. The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message.
7190 Until the call returns, the implementation will read incoming control frames and handle them automatically as follows:
7191
7192 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
7193
7194
7195 * For each received ping frame, a pong frame will be automatically sent.
7196
7197
7198 * If a close frame is received, the WebSocket closing handshake is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
7199
7200 [heading Return Value]
7201 The number of message payload bytes appended to the buffer.
7202 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
7203 A dynamic buffer to append message data to.\r  ]]\r]\r
7204 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
7205 Thrown on failure. \r  ]]\r]\r
7206 [endsect]\r[section:overload2 websocket::stream::read (2 of 2 overloads)]\r
7207 Read a complete message. \r[heading Synopsis]\r```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\rread(\r    DynamicBuffer& buffer,\r    error_code& ec);\r```\r\r[heading Description]\r
7208 This function is used to read a complete message.
7209 The call blocks until one of the following is true:
7210
7211 * A complete message is received.
7212
7213
7214 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
7215
7216
7217 * An error occurs.
7218
7219 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7220 Received message data is appended to the buffer. The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message.
7221 Until the call returns, the implementation will read incoming control frames and handle them automatically as follows:
7222
7223 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
7224
7225
7226 * For each received ping frame, a pong frame will be automatically sent.
7227
7228
7229 * If a close frame is received, the WebSocket closing handshake is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
7230
7231 [heading Return Value]
7232 The number of message payload bytes appended to the buffer.
7233 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
7234 A dynamic buffer to append message data to.\r  ]]\r  [[`ec`][\r    
7235 Set to indicate what error occurred, if any. \r  ]]\r]\r
7236 [endsect]\r[endsect]\r\r[section:read_message_max websocket::stream::read_message_max]\r[indexterm2 read_message_max..websocket::stream]\r
7237 Set the maximum incoming message size option. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.read_message_max.overload1 read_message_max]``(\r    std::size_t amount);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read_message_max.overload1 more...]]``\r\r```\r
7238 Returns the maximum incoming message size setting. ```\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read_message_max.overload2 read_message_max]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read_message_max.overload2 more...]]``\r```\r[section:overload1 websocket::stream::read_message_max (1 of 2 overloads)]\r
7239 Set the maximum incoming message size option. \r[heading Synopsis]\r```\rvoid\rread_message_max(\r    std::size_t amount);\r```\r\r[heading Description]\r
7240 Sets the largest permissible incoming message size. Message frame fields indicating a size that would bring the total message size over this limit will cause a protocol failure.
7241 The default setting is 16 megabytes. A value of zero indicates a limit of the maximum value of a `std::uint64_t`.
7242 [heading Example]
7243 Setting the maximum read message size. \r```\r  ws.read_message_max(65536);
7244 ```\r
7245 [heading Parameters]\r[table [[Name][Description]]\r  [[`amount`][\r    
7246 The limit on the size of incoming messages. \r  ]]\r]\r
7247 [endsect]\r[section:overload2 websocket::stream::read_message_max (2 of 2 overloads)]\r
7248 Returns the maximum incoming message size setting. \r[heading Synopsis]\r```\rstd::size_t\rread_message_max() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:read_size_hint websocket::stream::read_size_hint]\r[indexterm2 read_size_hint..websocket::stream]\r
7249 Returns a suggested maximum buffer size for the next call to read. ```\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read_size_hint.overload1 read_size_hint]``(\r    std::size_t initial_size = +tcp_frame_size) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read_size_hint.overload1 more...]]``\r\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read_size_hint.overload2 read_size_hint]``(\r    DynamicBuffer& buffer) const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read_size_hint.overload2 more...]]``\r```\r[section:overload1 websocket::stream::read_size_hint (1 of 2 overloads)]\r
7250 Returns a suggested maximum buffer size for the next call to read. \r[heading Synopsis]\r```\rstd::size_t\rread_size_hint(\r    std::size_t initial_size = +tcp_frame_size) const;\r```\r\r[heading Description]\r
7251 This function returns a reasonable upper limit on the number of bytes for the size of the buffer passed in the next call to read. The number is determined by the state of the current frame and whether or not the permessage-deflate extension is enabled.
7252 [heading Parameters]\r[table [[Name][Description]]\r  [[`initial_size`][\r    
7253 A non-zero size representing the caller's desired buffer size for when there is no information which may be used to calculate a more specific value. For example, when reading the first frame header of a message. \r  ]]\r]\r
7254 [endsect]\r[section:overload2 websocket::stream::read_size_hint (2 of 2 overloads)]\r
7255 Returns a suggested maximum buffer size for the next call to read. \r[heading Synopsis]\r```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\rread_size_hint(\r    DynamicBuffer& buffer) const;\r```\r\r[heading Description]\r
7256 This function returns a reasonable upper limit on the number of bytes for the size of the buffer passed in the next call to read. The number is determined by the state of the current frame and whether or not the permessage-deflate extension is enabled.
7257 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
7258 The buffer which will be used for reading. The implementation will query the buffer to obtain the optimum size of a subsequent call to `buffer.prepare` based on the state of the current frame, if any. \r  ]]\r]\r
7259 [endsect]\r[endsect]\r\r[section:read_some websocket::stream::read_some]\r[indexterm2 read_some..websocket::stream]\r
7260 Read some message data. ```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read_some.overload1 read_some]``(\r    DynamicBuffer& buffer,\r    std::size_t limit);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read_some.overload1 more...]]``\r\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read_some.overload2 read_some]``(\r    DynamicBuffer& buffer,\r    std::size_t limit,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read_some.overload2 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read_some.overload3 read_some]``(\r    MutableBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read_some.overload3 more...]]``\r\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.read_some.overload4 read_some]``(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.read_some.overload4 more...]]``\r```\r[section:overload1 websocket::stream::read_some (1 of 4 overloads)]\r
7261 Read some message data. \r[heading Synopsis]\r```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\rread_some(\r    DynamicBuffer& buffer,\r    std::size_t limit);\r```\r\r[heading Description]\r
7262 This function is used to read some message data.
7263 The call blocks until one of the following is true:
7264
7265 * Some message data is received.
7266
7267
7268 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
7269
7270
7271 * An error occurs.
7272
7273 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7274 Received message data is appended to the buffer. The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message. The function [link beast.ref.boost__beast__websocket__stream.is_message_done `websocket::stream::is_message_done`] may be called to determine if the message received by the last read operation is complete.
7275 Until the call returns, the implementation will read incoming control frames and handle them automatically as follows:
7276
7277 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
7278
7279
7280 * For each received ping frame, a pong frame will be automatically sent.
7281
7282
7283 * If a close frame is received, the WebSocket closing handshake is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
7284
7285 [heading Return Value]
7286 The number of message payload bytes appended to the buffer.
7287 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
7288 A dynamic buffer to append message data to.\r  ]]\r  [[`limit`][\r    
7289 An upper limit on the number of bytes this function will append into the buffer. If this value is zero, then a reasonable size will be chosen automatically.\r  ]]\r]\r
7290 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
7291 Thrown on failure. \r  ]]\r]\r
7292 [endsect]\r[section:overload2 websocket::stream::read_some (2 of 4 overloads)]\r
7293 Read some message data. \r[heading Synopsis]\r```\rtemplate<\r    class __DynamicBuffer__>\rstd::size_t\rread_some(\r    DynamicBuffer& buffer,\r    std::size_t limit,\r    error_code& ec);\r```\r\r[heading Description]\r
7294 This function is used to read some message data.
7295 The call blocks until one of the following is true:
7296
7297 * Some message data is received.
7298
7299
7300 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
7301
7302
7303 * An error occurs.
7304
7305 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7306 Received message data is appended to the buffer. The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message. The function [link beast.ref.boost__beast__websocket__stream.is_message_done `websocket::stream::is_message_done`] may be called to determine if the message received by the last read operation is complete.
7307 Until the call returns, the implementation will read incoming control frames and handle them automatically as follows:
7308
7309 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
7310
7311
7312 * For each received ping frame, a pong frame will be automatically sent.
7313
7314
7315 * If a close frame is received, the WebSocket closing handshake is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
7316
7317 [heading Return Value]
7318 The number of message payload bytes appended to the buffer.
7319 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffer`][\r    
7320 A dynamic buffer to append message data to.\r  ]]\r  [[`limit`][\r    
7321 An upper limit on the number of bytes this function will append into the buffer. If this value is zero, then a reasonable size will be chosen automatically.\r  ]]\r  [[`ec`][\r    
7322 Set to indicate what error occurred, if any. \r  ]]\r]\r
7323 [endsect]\r[section:overload3 websocket::stream::read_some (3 of 4 overloads)]\r
7324 Read some message data. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers);\r```\r\r[heading Description]\r
7325 This function is used to read some message data.
7326 The call blocks until one of the following is true:
7327
7328 * Some message data is received.
7329
7330
7331 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
7332
7333
7334 * An error occurs.
7335
7336 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7337 The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message. The function [link beast.ref.boost__beast__websocket__stream.is_message_done `websocket::stream::is_message_done`] may be called to determine if the message received by the last read operation is complete.
7338 Until the call returns, the implementation will read incoming control frames and handle them automatically as follows:
7339
7340 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
7341
7342
7343 * For each received ping frame, a pong frame will be automatically sent.
7344
7345
7346 * If a close frame is received, the WebSocket closing handshake is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
7347
7348 [heading Return Value]
7349 The number of message payload bytes appended to the buffer.
7350 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
7351 A buffer sequence to write message data into. The previous contents of the buffers will be overwritten, starting from the beginning.\r  ]]\r]\r
7352 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
7353 Thrown on failure. \r  ]]\r]\r
7354 [endsect]\r[section:overload4 websocket::stream::read_some (4 of 4 overloads)]\r
7355 Read some message data. \r[heading Synopsis]\r```\rtemplate<\r    class __MutableBufferSequence__>\rstd::size_t\rread_some(\r    MutableBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
7356 This function is used to read some message data.
7357 The call blocks until one of the following is true:
7358
7359 * Some message data is received.
7360
7361
7362 * A close frame is received. In this case the error indicated by the function will be [link beast.ref.boost__beast__websocket__error `websocket::closed`].
7363
7364
7365 * An error occurs.
7366
7367 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `read_some` and `write_some` functions.
7368 The functions [link beast.ref.boost__beast__websocket__stream.got_binary `websocket::stream::got_binary`] and [link beast.ref.boost__beast__websocket__stream.got_text `websocket::stream::got_text`] may be used to query the stream and determine the type of the last received message. The function [link beast.ref.boost__beast__websocket__stream.is_message_done `websocket::stream::is_message_done`] may be called to determine if the message received by the last read operation is complete.
7369 Until the call returns, the implementation will read incoming control frames and handle them automatically as follows:
7370
7371 * The [link beast.ref.boost__beast__websocket__stream.control_callback `websocket::stream::control_callback`] will be invoked for each control frame.
7372
7373
7374 * For each received ping frame, a pong frame will be automatically sent.
7375
7376
7377 * If a close frame is received, the WebSocket closing handshake is performed. In this case, when the function returns, the error [link beast.ref.boost__beast__websocket__error `websocket::closed`] will be indicated.
7378
7379 [heading Return Value]
7380 The number of message payload bytes appended to the buffer.
7381 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
7382 A buffer sequence to write message data into. The previous contents of the buffers will be overwritten, starting from the beginning.\r  ]]\r  [[`ec`][\r    
7383 Set to indicate what error occurred, if any. \r  ]]\r]\r
7384 [endsect]\r[endsect]\r\r[section:reason websocket::stream::reason]\r[indexterm2 reason..websocket::stream]\r
7385 Returns the close reason received from the remote peer. \r[heading Synopsis]\r```\rclose_reason const &\rreason() const;\r```\r\r[heading Description]\r
7386 This is only valid after a read completes with [link beast.ref.boost__beast__websocket__error `websocket::closed`]. [endsect]\r[section:secure_prng websocket::stream::secure_prng]\r[indexterm2 secure_prng..websocket::stream]\r
7387 Set whether the PRNG is cryptographically secure. \r[heading Synopsis]\r```\rvoid\rsecure_prng(\r    bool value);\r```\r\r[heading Description]\r
7388 This controls whether or not the source of pseudo-random numbers used to produce the masks required by the WebSocket protocol are of cryptographic quality. When the setting is `true`, a strong algorithm is used which cannot be guessed by observing outputs. When the setting is `false`, a much faster algorithm is used. Masking is only performed by streams operating in the client mode. For streams operating in the server mode, this setting has no effect. By default, newly constructed streams use a secure PRNG.
7389 If the WebSocket stream is used with an encrypted SSL or TLS next layer, if it is known to the application that intermediate proxies are not vulnerable to cache poisoning, or if the application is designed such that an attacker cannot send arbitrary inputs to the stream interface, then the faster algorithm may be used.
7390 For more information please consult the WebSocket protocol RFC.
7391 [heading Parameters]\r[table [[Name][Description]]\r  [[`value`][\r    
7392 `true` if the PRNG algorithm should be cryptographically secure. \r  ]]\r]\r
7393 [endsect]\r[section:set_option websocket::stream::set_option]\r[indexterm2 set_option..websocket::stream]\r```\rtemplate<\r    class Option>\rvoid\r``[link beast.ref.boost__beast__websocket__stream.set_option.overload1 set_option]``(\r    Option opt);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.set_option.overload1 more...]]``\r\r```\r
7394 Set the permessage-deflate extension options. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.set_option.overload2 set_option]``(\r    permessage_deflate const& o);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.set_option.overload2 more...]]``\r```\r[section:overload1 websocket::stream::set_option (1 of 2 overloads)]\r\r[heading Synopsis]\r```\rtemplate<\r    class Option>\rvoid\rset_option(\r    Option opt);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 websocket::stream::set_option (2 of 2 overloads)]\r
7395 Set the permessage-deflate extension options. \r[heading Synopsis]\r```\rvoid\rset_option(\r    permessage_deflate const& o);\r```\r\r[heading Description]\r
7396 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`invalid_argument`][\r    
7397 if `deflateSupported == false`, and either `client_enable` or `server_enable` is `true`. \r  ]]\r]\r
7398 [endsect]\r[endsect]\r\r[section:stream websocket::stream::stream]\r[indexterm2 stream..websocket::stream]\r
7399 Constructor. ```\r``[link beast.ref.boost__beast__websocket__stream.stream.overload1 stream]``(\r    stream&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.stream.overload1 more...]]``\r\rtemplate<\r    class... Args>\rexplicit\r``[link beast.ref.boost__beast__websocket__stream.stream.overload2 stream]``(\r    Args&&... args);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.stream.overload2 more...]]``\r```\r[section:overload1 websocket::stream::stream (1 of 2 overloads)]\r
7400 Constructor. \r[heading Synopsis]\r```\rstream(\r    stream&&);\r```\r\r[heading Description]\r
7401 If `NextLayer` is move constructible, this function will move-construct a new stream from the existing stream.
7402 After the move, the only valid operation on the moved-from object is destruction. [endsect]\r[section:overload2 websocket::stream::stream (2 of 2 overloads)]\r
7403 Constructor. \r[heading Synopsis]\r```\rtemplate<\r    class... Args>\rstream(\r    Args&&... args);\r```\r\r[heading Description]\r
7404 This constructor creates a websocket stream and initializes the next layer object.
7405 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`Any`][\r    
7406 exceptions thrown by the NextLayer constructor.\r  ]]\r]\r
7407 [heading Parameters]\r[table [[Name][Description]]\r  [[`args`][\r    
7408 The arguments to be passed to initialize the next layer object. The arguments are forwarded to the next layer's constructor. \r  ]]\r]\r
7409 [endsect]\r[endsect]\r\r[section:text websocket::stream::text]\r[indexterm2 text..websocket::stream]\r
7410 Set the text message write option. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.text.overload1 text]``(\r    bool value);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.text.overload1 more...]]``\r\r```\r
7411 Returns `true` if the text message write option is set. ```\rbool\r``[link beast.ref.boost__beast__websocket__stream.text.overload2 text]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.text.overload2 more...]]``\r```\r[section:overload1 websocket::stream::text (1 of 2 overloads)]\r
7412 Set the text message write option. \r[heading Synopsis]\r```\rvoid\rtext(\r    bool value);\r```\r\r[heading Description]\r
7413 This controls whether or not outgoing message opcodes are set to binary or text. The setting is only applied at the start when a caller begins a new message. Changing the opcode after a message is started will only take effect after the current message being sent is complete.
7414 The default setting is to send text messages.
7415 [heading Parameters]\r[table [[Name][Description]]\r  [[`value`][\r    
7416 `true` if outgoing messages should indicate text, or `false` if they should indicate binary.\r  ]]\r]\r
7417 [heading Example]
7418 Setting the message type to text. \r```\r  ws.text(true);
7419 ```\r
7420 [endsect]\r[section:overload2 websocket::stream::text (2 of 2 overloads)]\r
7421 Returns `true` if the text message write option is set. \r[heading Synopsis]\r```\rbool\rtext() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:write websocket::stream::write]\r[indexterm2 write..websocket::stream]\r
7422 Write a complete message. ```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.write.overload1 write]``(\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.write.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.write.overload2 write]``(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.write.overload2 more...]]``\r```\r[section:overload1 websocket::stream::write (1 of 2 overloads)]\r
7423 Write a complete message. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite(\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
7424 This function is used to write a complete message.
7425 The call blocks until one of the following is true:
7426
7427 * The message is written.
7428
7429
7430 * An error occurs.
7431
7432 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
7433 The current setting of the [link beast.ref.boost__beast__websocket__stream.binary `websocket::stream::binary`] option controls whether the message opcode is set to text or binary. If the [link beast.ref.boost__beast__websocket__stream.auto_fragment `websocket::stream::auto_fragment`] option is set, the message will be split into one or more frames as necessary. The actual payload contents sent may be transformed as per the WebSocket protocol settings.
7434 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
7435 The buffers containing the message to send.\r  ]]\r]\r
7436 [heading Return Value]
7437 The number of bytes sent from the buffers.
7438 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
7439 Thrown on failure. \r  ]]\r]\r
7440 [endsect]\r[section:overload2 websocket::stream::write (2 of 2 overloads)]\r
7441 Write a complete message. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite(\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
7442 This function is used to write a complete message.
7443 The call blocks until one of the following is true:
7444
7445 * The complete message is written.
7446
7447
7448 * An error occurs.
7449
7450 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
7451 The current setting of the [link beast.ref.boost__beast__websocket__stream.binary `websocket::stream::binary`] option controls whether the message opcode is set to text or binary. If the [link beast.ref.boost__beast__websocket__stream.auto_fragment `websocket::stream::auto_fragment`] option is set, the message will be split into one or more frames as necessary. The actual payload contents sent may be transformed as per the WebSocket protocol settings.
7452 [heading Parameters]\r[table [[Name][Description]]\r  [[`buffers`][\r    
7453 The buffers containing the message to send.\r  ]]\r  [[`ec`][\r    
7454 Set to indicate what error occurred, if any.\r  ]]\r]\r
7455 [heading Return Value]
7456 The number of bytes sent from the buffers. 
7457 [endsect]\r[endsect]\r\r[section:write_buffer_bytes websocket::stream::write_buffer_bytes]\r[indexterm2 write_buffer_bytes..websocket::stream]\r
7458 Set the write buffer size option. ```\rvoid\r``[link beast.ref.boost__beast__websocket__stream.write_buffer_bytes.overload1 write_buffer_bytes]``(\r    std::size_t amount);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.write_buffer_bytes.overload1 more...]]``\r\r```\r
7459 Returns the size of the write buffer. ```\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.write_buffer_bytes.overload2 write_buffer_bytes]``() const;\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.write_buffer_bytes.overload2 more...]]``\r```\r[section:overload1 websocket::stream::write_buffer_bytes (1 of 2 overloads)]\r
7460 Set the write buffer size option. \r[heading Synopsis]\r```\rvoid\rwrite_buffer_bytes(\r    std::size_t amount);\r```\r\r[heading Description]\r
7461 Sets the size of the write buffer used by the implementation to send frames. The write buffer is needed when masking payload data in the client role, compressing frames, or auto-fragmenting message data.
7462 Lowering the size of the buffer can decrease the memory requirements for each connection, while increasing the size of the buffer can reduce the number of calls made to the next layer to write data.
7463 The default setting is 4096. The minimum value is 8.
7464 The write buffer size can only be changed when the stream is not open. Undefined behavior results if the option is modified after a successful WebSocket handshake.
7465 [heading Example]
7466 Setting the write buffer size. \r```\r  ws.write_buffer_bytes(8192);
7467 ```\r
7468 [heading Parameters]\r[table [[Name][Description]]\r  [[`amount`][\r    
7469 The size of the write buffer in bytes. \r  ]]\r]\r
7470 [endsect]\r[section:overload2 websocket::stream::write_buffer_bytes (2 of 2 overloads)]\r
7471 Returns the size of the write buffer. \r[heading Synopsis]\r```\rstd::size_t\rwrite_buffer_bytes() const;\r```\r\r[heading Description]\r[endsect]\r[endsect]\r\r[section:write_some websocket::stream::write_some]\r[indexterm2 write_some..websocket::stream]\r
7472 Write some message data. ```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.write_some.overload1 write_some]``(\r    bool fin,\r    ConstBufferSequence const& buffers);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.write_some.overload1 more...]]``\r\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\r``[link beast.ref.boost__beast__websocket__stream.write_some.overload2 write_some]``(\r    bool fin,\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream.write_some.overload2 more...]]``\r```\r[section:overload1 websocket::stream::write_some (1 of 2 overloads)]\r
7473 Write some message data. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    bool fin,\r    ConstBufferSequence const& buffers);\r```\r\r[heading Description]\r
7474 This function is used to send part of a message.
7475 The call blocks until one of the following is true:
7476
7477 * The message data is written.
7478
7479
7480 * An error occurs.
7481
7482 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
7483 If this is the beginning of a new message, the message opcode will be set to text or binary based on the current setting of the [link beast.ref.boost__beast__websocket__stream.binary `websocket::stream::binary`] (or [link beast.ref.boost__beast__websocket__stream.text `websocket::stream::text`]) option. The actual payload sent may be transformed as per the WebSocket protocol settings.
7484 [heading Parameters]\r[table [[Name][Description]]\r  [[`fin`][\r    
7485 `true` if this is the last part of the message.\r  ]]\r  [[`buffers`][\r    
7486 The buffers containing the message part to send.\r  ]]\r]\r
7487 [heading Return Value]
7488 The number of bytes sent from the buffers.
7489 [heading Exceptions]\r[table [[Type][Thrown On]]\r  [[`system_error`][\r    
7490 Thrown on failure. \r  ]]\r]\r
7491 [endsect]\r[section:overload2 websocket::stream::write_some (2 of 2 overloads)]\r
7492 Write some message data. \r[heading Synopsis]\r```\rtemplate<\r    class __ConstBufferSequence__>\rstd::size_t\rwrite_some(\r    bool fin,\r    ConstBufferSequence const& buffers,\r    error_code& ec);\r```\r\r[heading Description]\r
7493 This function is used to send part of a message.
7494 The call blocks until one of the following is true:
7495
7496 * The message data is written.
7497
7498
7499 * An error occurs.
7500
7501 The algorithm, known as a ['composed operation], is implemented in terms of calls to the next layer's `write_some` function.
7502 If this is the beginning of a new message, the message opcode will be set to text or binary based on the current setting of the [link beast.ref.boost__beast__websocket__stream.binary `websocket::stream::binary`] (or [link beast.ref.boost__beast__websocket__stream.text `websocket::stream::text`]) option. The actual payload sent may be transformed as per the WebSocket protocol settings.
7503 [heading Parameters]\r[table [[Name][Description]]\r  [[`fin`][\r    
7504 `true` if this is the last part of the message.\r  ]]\r  [[`buffers`][\r    
7505 The buffers containing the message part to send.\r  ]]\r  [[`ec`][\r    
7506 Set to indicate what error occurred, if any.\r  ]]\r]\r
7507 [heading Return Value]
7508 The number of bytes sent from the buffers.
7509 [heading Return Value]
7510 The number of bytes consumed in the input buffers. 
7511 [endsect]\r[endsect]\r\r[section:stream_dtor_ websocket::stream::~stream]\r[indexterm2 ~stream..websocket::stream]\r
7512 Destructor. \r[heading Synopsis]\r```\r~stream();\r```\r\r[heading Description]\r
7513 Destroys the stream and all associated resources.
7514 [heading Remarks]\r
7515 A stream object must not be destroyed while there are pending asynchronous operations associated with it. 
7516 [endsect]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__accept_op websocket::stream::accept_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2],\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass accept_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__close_op websocket::stream::close_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass close_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__handshake_op websocket::stream::handshake_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass handshake_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__idle_ping_op websocket::stream::idle_ping_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass idle_ping_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__ping_op websocket::stream::ping_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass ping_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__read_op websocket::stream::read_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2],\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass read_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__read_some_op websocket::stream::read_some_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2],\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass read_some_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__response_op websocket::stream::response_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass response_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__write_op websocket::stream::write_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2],\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass write_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream__write_some_op websocket::stream::write_some_op]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream.hpp]\r\r\r\r```\rtemplate<\r    [role red error.class-detail-template.1][role red error.class-detail-template.2],\r    [role red error.class-detail-template.1][role red error.class-detail-template.2]>\rclass write_some_op\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream_base websocket::stream_base]\r
7517 This class is used as a base for the [link beast.ref.boost__beast__websocket__stream `websocket::stream`] class template to group common types and constants. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream_base.hpp]\r\r\r\r```\rstruct stream_base\r```\r[heading Types]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base__decorator [*decorator]]]\r    [\r      Stream option used to adjust HTTP fields of WebSocket upgrade request and responses. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base__timeout [*timeout]]]\r    [\r      Stream option to control the behavior of websocket timeouts. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base.duration [*duration]]]\r    [\r      The type used to represent durations. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base.time_point [*time_point]]]\r    [\r      The type used to represent time points. \r    ]\r  ]\r]\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base.never [*never]]]\r    [\r      Returns the special time_point value meaning "never". \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base.none [*none]]]\r    [\r      Returns the special duration value meaning "none". \r    ]\r  ]\r]\r\r[heading Description]\r[section:duration websocket::stream_base::duration]\r[indexterm2 duration..websocket::stream_base]\r
7518 The type used to represent durations. \r[heading Synopsis]\r\r```\rusing duration = std::chrono::steady_clock::duration;\r```\r\r[heading Description]\r[endsect]\r[section:never websocket::stream_base::never]\r[indexterm2 never..websocket::stream_base]\r
7519 Returns the special time\_point value meaning "never". \r[heading Synopsis]\r```\rstatic\rtime_point\rnever();\r```\r\r[heading Description]\r[endsect]\r[section:none websocket::stream_base::none]\r[indexterm2 none..websocket::stream_base]\r
7520 Returns the special duration value meaning "none". \r[heading Synopsis]\r```\rstatic\rduration\rnone();\r```\r\r[heading Description]\r[endsect]\r[section:time_point websocket::stream_base::time_point]\r[indexterm2 time_point..websocket::stream_base]\r
7521 The type used to represent time points. \r[heading Synopsis]\r\r```\rusing time_point = std::chrono::steady_clock::time_point;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream_base__decorator websocket::stream_base::decorator]\r
7522 Stream option used to adjust HTTP fields of WebSocket upgrade request and responses. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream_base.hpp]\r\r\r\r```\rclass decorator\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base__decorator.decorator [*decorator]]]\r    [\r      \r\r      Construct a decorator option. \r    ]\r  ]\r]\r\r[heading Description]\r[section:decorator websocket::stream_base::decorator::decorator]\r[indexterm2 decorator..websocket::stream_base::decorator]\r```\r``[link beast.ref.boost__beast__websocket__stream_base__decorator.decorator.overload1 decorator]``(\r    decorator&&);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream_base__decorator.decorator.overload1 more...]]``\r\r```\r
7523 Construct a decorator option. ```\rtemplate<\r    class Decorator>\rexplicit\r``[link beast.ref.boost__beast__websocket__stream_base__decorator.decorator.overload2 decorator]``(\r    Decorator&& f);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__stream_base__decorator.decorator.overload2 more...]]``\r```\r[section:overload1 websocket::stream_base::decorator::decorator (1 of 2 overloads)]\r\r[heading Synopsis]\r```\rdecorator(\r    decorator&&);\r```\r\r[heading Description]\r[endsect]\r[section:overload2 websocket::stream_base::decorator::decorator (2 of 2 overloads)]\r
7524 Construct a decorator option. \r[heading Synopsis]\r```\rtemplate<\r    class Decorator>\rdecorator(\r    Decorator&& f);\r```\r\r[heading Description]\r
7525 [heading Parameters]\r[table [[Name][Description]]\r  [[`f`][\r    
7526 An invocable function object. Ownership of the function object is transferred by decay-copy. \r  ]]\r]\r
7527 [endsect]\r[endsect]\r\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__stream_base__timeout websocket::stream_base::timeout]\r
7528 Stream option to control the behavior of websocket timeouts. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/stream_base.hpp]\r\r\r\r```\rstruct timeout\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base__timeout.suggested [*suggested]]]\r    [\r      Construct timeout settings with suggested values for a role. \r    ]\r  ]\r]\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base__timeout.handshake_timeout [*handshake_timeout]]]\r    [\r      Time limit on handshake, accept, and close operations: \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base__timeout.idle_timeout [*idle_timeout]]]\r    [\r      The time limit after which a connection is considered idle. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__websocket__stream_base__timeout.keep_alive_pings [*keep_alive_pings]]]\r    [\r      Automatic ping setting. \r    ]\r  ]\r]\r\r[heading Description]\r
7529 Timeout features are available for asynchronous operations only. [section:handshake_timeout websocket::stream_base::timeout::handshake_timeout]\r[indexterm2 handshake_timeout..websocket::stream_base::timeout]\r
7530 Time limit on handshake, accept, and close operations: \r[heading Synopsis]\r```\rduration handshake_timeout;\r```\r\r[heading Description]\r
7531 This value whether or not there is a time limit, and the duration of that time limit, for asynchronous handshake, accept, and close operations. If this is equal to the value [link beast.ref.boost__beast__websocket__stream_base.none `websocket::stream_base::none`] then there will be no time limit. Otherwise, if any of the applicable operations takes longer than this amount of time, the operation will be canceled and a timeout error delivered to the completion handler. [endsect]\r[section:idle_timeout websocket::stream_base::timeout::idle_timeout]\r[indexterm2 idle_timeout..websocket::stream_base::timeout]\r
7532 The time limit after which a connection is considered idle. \r[heading Synopsis]\r```\rduration idle_timeout;\r```\r\r[heading Description]\r[endsect]\r[section:keep_alive_pings websocket::stream_base::timeout::keep_alive_pings]\r[indexterm2 keep_alive_pings..websocket::stream_base::timeout]\r
7533 Automatic ping setting. \r[heading Synopsis]\r```\rbool keep_alive_pings;\r```\r\r[heading Description]\r
7534 If the idle interval is set, this setting affects the behavior of the stream when no data is received for the timeout interval as follows:
7535
7536 * When `keep_alive_pings` is `true`, an idle ping will be sent automatically. If another timeout interval elapses with no received data then the connection will be closed. An outstanding read operation must be pending, which will complete immediately the error [link beast.ref.boost__beast__error `timeout`].
7537
7538
7539 * When `keep_alive_pings` is `false`, the connection will be closed. An outstanding read operation must be pending, which will complete immediately the error [link beast.ref.boost__beast__error `timeout`]. 
7540
7541 [endsect]\r[section:suggested websocket::stream_base::timeout::suggested]\r[indexterm2 suggested..websocket::stream_base::timeout]\r
7542 Construct timeout settings with suggested values for a role. \r[heading Synopsis]\r```\rstatic\rtimeout\rsuggested(\r    role_type role);\r```\r\r[heading Description]\r
7543 This constructs the timeout settings with a predefined set of values which varies depending on the desired role. The values are selected upon construction, regardless of the current or actual role in use on the stream.
7544 [heading Example]
7545 This statement sets the timeout settings of the stream to the suggested values for the server role: \r```\r```\r
7546 [heading Parameters]\r[table [[Name][Description]]\r  [[`role`][\r    
7547 The role of the websocket stream ([link beast.ref.boost__beast__role_type `client`] or [link beast.ref.boost__beast__role_type `server`]). \r  ]]\r]\r
7548 [endsect]\r\r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__websocket__teardown websocket::teardown]\r[indexterm1 websocket::teardown]\r
7549 Tear down a connection. ```\rtemplate<\r    class Socket>\rvoid\r``[link beast.ref.boost__beast__websocket__teardown.overload1 teardown]``(\r    role_type role,\r    Socket& socket,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__teardown.overload1 more...]]``\r\r```\r
7550 Tear down a `net::ip::tcp::socket`. ```\rtemplate<\r    class __Protocol__,\r    class __Executor__>\rvoid\r``[link beast.ref.boost__beast__websocket__teardown.overload2 teardown]``(\r    role_type role,\r    net::basic_stream_socket< Protocol, Executor >& socket,\r    error_code& ec);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__websocket__teardown.overload2 more...]]``\r```\r[section:overload1 websocket::teardown (1 of 2 overloads)]\r
7551 Tear down a connection. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/teardown.hpp]\r\r\r\r```\rtemplate<\r    class Socket>\rvoid\rteardown(\r    role_type role,\r    Socket& socket,\r    error_code& ec);\r\r```\r\r[heading Description]\r
7552 This tears down a connection. The implementation will call the overload of this function based on the `Socket` parameter used to consruct the socket. When `Socket` is a user defined type, and not a `net::ip::tcp::socket` or any `net::ssl::stream`, callers are responsible for providing a suitable overload of this function.
7553 [heading Parameters]\r[table [[Name][Description]]\r  [[`role`][\r    
7554 The role of the local endpoint\r  ]]\r  [[`socket`][\r    
7555 The socket to tear down.\r  ]]\r  [[`ec`][\r    
7556 Set to the error if any occurred. \r  ]]\r]\r
7557 \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[section:overload2 websocket::teardown (2 of 2 overloads)]\r
7558 Tear down a `net::ip::tcp::socket`. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/websocket/teardown.hpp]\r\r\r\r```\rtemplate<\r    class __Protocol__,\r    class __Executor__>\rvoid\rteardown(\r    role_type role,\r    net::basic_stream_socket< Protocol, Executor >& socket,\r    error_code& ec);\r\r```\r\r[heading Description]\r
7559 This tears down a connection. The implementation will call the overload of this function based on the `Stream` parameter used to consruct the socket. When `Stream` is a user defined type, and not a `net::ip::tcp::socket` or any `net::ssl::stream`, callers are responsible for providing a suitable overload of this function.
7560 [heading Parameters]\r[table [[Name][Description]]\r  [[`role`][\r    
7561 The role of the local endpoint\r  ]]\r  [[`socket`][\r    
7562 The socket to tear down.\r  ]]\r  [[`ec`][\r    
7563 Set to the error if any occurred. \r  ]]\r]\r
7564 \r\r\rConvenience header [include_file boost/beast/websocket.hpp]\r\r[endsect]\r[endsect]\r\r\r\r[section:boost__beast__zlib__Byte zlib::Byte]\r[indexterm1 zlib::Byte]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/zlib.hpp]\r\r\r\r```\rusing Byte = unsigned char;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r[section:boost__beast__zlib__Flush zlib::Flush]\r[indexterm1 zlib::Flush]\r
7565 Flush option. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/zlib.hpp]\r\r\r```\renum Flush\r```\r\r[indexterm2 none..zlib::Flush]\r[indexterm2 block..zlib::Flush]\r[indexterm2 partial..zlib::Flush]\r[indexterm2 sync..zlib::Flush]\r[indexterm2 full..zlib::Flush]\r[indexterm2 finish..zlib::Flush]\r[indexterm2 trees..zlib::Flush]\r[heading Values]\r[table [[Name][Description]]\r  [[[^none]][\r\r]]\r  [[[^block]][\r\r]]\r  [[[^partial]][\r\r]]\r  [[[^sync]][\r\r]]\r  [[[^full]][\r\r]]\r  [[[^finish]][\r\r]]\r  [[[^trees]][\r\r]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r[section:boost__beast__zlib__Strategy zlib::Strategy]\r[indexterm1 zlib::Strategy]\r
7566 Compression strategy. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/zlib.hpp]\r\r\r```\renum Strategy\r```\r\r[indexterm2 normal..zlib::Strategy]\r[indexterm2 filtered..zlib::Strategy]\r[indexterm2 huffman..zlib::Strategy]\r[indexterm2 rle..zlib::Strategy]\r[indexterm2 fixed..zlib::Strategy]\r[heading Values]\r[table [[Name][Description]]\r  [[[^normal]][Default strategy. \r\rThis is suitable for general purpose compression, and works
7567 well in the majority of cases.
7568  ]]\r  [[[^filtered]][Filtered strategy. \r\rThis strategy should be used when the data be compressed
7569 is produced by a filter or predictor.
7570  ]]\r  [[[^huffman]][Huffman-only strategy. \r\rThis strategy only performs Huffman encoding, without doing
7571 any string matching.
7572  ]]\r  [[[^rle]][Run Length Encoding strategy. \r\rThis strategy limits match distances to one, making it
7573 equivalent to run length encoding. This can give better
7574 performance for things like PNG image data.
7575  ]]\r  [[[^fixed]][Fixed table strategy. \r\rThis strategy prevents the use of dynamic Huffman codes,
7576 allowing for a simpler decoder for special applications.
7577  ]]\r]\r\r[heading Description]\r
7578 These are used when compressing streams. \r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r[section:boost__beast__zlib__compression zlib::compression]\r[indexterm1 zlib::compression]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/zlib.hpp]\r\r\r```\renum compression\r```\r\r[indexterm2 none..zlib::compression]\r[indexterm2 none..zlib::compression]\r[indexterm2 best_speed..zlib::compression]\r[indexterm2 best_size..zlib::compression]\r[indexterm2 default_size..zlib::compression]\r[heading Values]\r[table [[Name][Description]]\r  [[[^none]][\r\r]]\r  [[[^none]][\r\r]]\r  [[[^best_speed]][\r\r]]\r  [[[^best_size]][\r\r]]\r  [[[^default_size]][\r\r]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r[section:boost__beast__zlib__deflate_stream zlib::deflate_stream]\r
7579 Raw deflate compressor. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/deflate_stream.hpp]\r\r\r\r```\rclass deflate_stream :\r    private deflate_stream\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.clear [*clear]]]\r    [\r      Clear the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.deflate_stream [*deflate_stream]]]\r    [\r      Construct a default deflate stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.params [*params]]]\r    [\r      Update the compression level and strategy. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.pending [*pending]]]\r    [\r      Return bits pending in the output. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.prime [*prime]]]\r    [\r      Insert bits into the compressed output stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.reset [*reset]]]\r    [\r      Reset the stream and compression settings. \r\r      Reset the stream without deallocating memory. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.tune [*tune]]]\r    [\r      Fine tune internal compression parameters. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.upper_bound [*upper_bound]]]\r    [\r      Returns the upper limit on the size of a compressed block. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__deflate_stream.write [*write]]]\r    [\r      Compress input and write output. \r    ]\r  ]\r]\r\r[heading Description]\r
7580 This is a port of zlib's "deflate" functionality to C++. [section:clear zlib::deflate_stream::clear]\r[indexterm2 clear..zlib::deflate_stream]\r
7581 Clear the stream. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
7582 This function resets the stream and frees all dynamically allocated internal buffers. The compression settings are left unchanged.
7583 [heading Remarks]\r
7584 Any unprocessed input or pending output from previous calls are discarded. 
7585 [endsect]\r[section:deflate_stream zlib::deflate_stream::deflate_stream]\r[indexterm2 deflate_stream..zlib::deflate_stream]\r
7586 Construct a default deflate stream. \r[heading Synopsis]\r```\rdeflate_stream();\r```\r\r[heading Description]\r
7587 Upon construction, the stream settings will be set to these default values:
7588
7589 * `level = 6`
7590
7591
7592 * `windowBits = 15`
7593
7594
7595 * `memLevel = 8`
7596
7597
7598 * `strategy = Strategy::normal`
7599
7600 Although the stream is ready to be used immediately after construction, any required internal buffers are not dynamically allocated until needed. [endsect]\r[section:params zlib::deflate_stream::params]\r[indexterm2 params..zlib::deflate_stream]\r
7601 Update the compression level and strategy. \r[heading Synopsis]\r```\rvoid\rparams(\r    z_params& zs,\r    int level,\r    Strategy strategy,\r    error_code& ec);\r```\r\r[heading Description]\r
7602 This function dynamically updates the compression level and compression strategy. The interpretation of level and strategy is as in [link beast.ref.boost__beast__zlib__deflate_stream.reset `zlib::deflate_stream::reset`]. This can be used to switch between compression and straight copy of the input data, or to switch to a different kind of input data requiring a different strategy. If the compression level is changed, the input available so far is compressed with the old level (and may be flushed); the new level will take effect only at the next call of [link beast.ref.boost__beast__zlib__deflate_stream.write `zlib::deflate_stream::write`].
7603 Before the call of `params`, the stream state must be set as for a call of [link beast.ref.boost__beast__zlib__deflate_stream.write `zlib::deflate_stream::write`], since the currently available input may have to be compressed and flushed. In particular, `zs.avail_out` must be non-zero.
7604 [heading Return Value]
7605 `Z_OK` if success, `Z_STREAM_ERROR` if the source stream state was inconsistent or if a parameter was invalid, `error::need_buffers` if `zs.avail_out` was zero. 
7606 [endsect]\r[section:pending zlib::deflate_stream::pending]\r[indexterm2 pending..zlib::deflate_stream]\r
7607 Return bits pending in the output. \r[heading Synopsis]\r```\rvoid\rpending(\r    unsigned* value,\r    int* bits);\r```\r\r[heading Description]\r
7608 This function returns the number of bytes and bits of output that have been generated, but not yet provided in the available output. The bytes not provided would be due to the available output space having being consumed. The number of bits of output not provided are between 0 and 7, where they await more bits to join them in order to fill out a full byte. If pending or bits are `nullptr`, then those values are not set.
7609 [heading Return Value]
7610 `Z_OK` if success, or `Z_STREAM_ERROR` if the source stream state was inconsistent. 
7611 [endsect]\r[section:prime zlib::deflate_stream::prime]\r[indexterm2 prime..zlib::deflate_stream]\r
7612 Insert bits into the compressed output stream. \r[heading Synopsis]\r```\rvoid\rprime(\r    int bits,\r    int value,\r    error_code& ec);\r```\r\r[heading Description]\r
7613 This function inserts bits in the deflate output stream. The intent is that this function is used to start off the deflate output with the bits leftover from a previous deflate stream when appending to it. As such, this function can only be used for raw deflate, and must be used before the first `write` call after an initialization. `bits` must be less than or equal to 16, and that many of the least significant bits of `value` will be inserted in the output.
7614 [heading Return Value]
7615 `error::need_buffers` if there was not enough room in the internal buffer to insert the bits. 
7616 [endsect]\r[section:reset zlib::deflate_stream::reset]\r[indexterm2 reset..zlib::deflate_stream]\r
7617 Reset the stream and compression settings. ```\rvoid\r``[link beast.ref.boost__beast__zlib__deflate_stream.reset.overload1 reset]``(\r    int level,\r    int windowBits,\r    int memLevel,\r    Strategy strategy);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__zlib__deflate_stream.reset.overload1 more...]]``\r\r```\r
7618 Reset the stream without deallocating memory. ```\rvoid\r``[link beast.ref.boost__beast__zlib__deflate_stream.reset.overload2 reset]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__zlib__deflate_stream.reset.overload2 more...]]``\r```\r[section:overload1 zlib::deflate_stream::reset (1 of 2 overloads)]\r
7619 Reset the stream and compression settings. \r[heading Synopsis]\r```\rvoid\rreset(\r    int level,\r    int windowBits,\r    int memLevel,\r    Strategy strategy);\r```\r\r[heading Description]\r
7620 This function initializes the stream to the specified compression settings.
7621 Although the stream is ready to be used immediately after a reset, any required internal buffers are not dynamically allocated until needed.
7622 [heading Remarks]\r
7623 Any unprocessed input or pending output from previous calls are discarded. 
7624 [endsect]\r[section:overload2 zlib::deflate_stream::reset (2 of 2 overloads)]\r
7625 Reset the stream without deallocating memory. \r[heading Synopsis]\r```\rvoid\rreset();\r```\r\r[heading Description]\r
7626 This function performs the equivalent of calling `clear` followed by `reset` with the same compression settings, without deallocating the internal buffers.
7627 [heading Remarks]\r
7628 Any unprocessed input or pending output from previous calls are discarded. 
7629 [endsect]\r[endsect]\r\r[section:tune zlib::deflate_stream::tune]\r[indexterm2 tune..zlib::deflate_stream]\r
7630 Fine tune internal compression parameters. \r[heading Synopsis]\r```\rvoid\rtune(\r    int good_length,\r    int max_lazy,\r    int nice_length,\r    int max_chain);\r```\r\r[heading Description]\r
7631 Compression parameters should only be tuned by someone who understands the algorithm used by zlib's deflate for searching for the best matching string, and even then only by the most fanatic optimizer trying to squeeze out the last compressed bit for their specific input data. Read the deflate.c source code (ZLib) for the meaning of the max\_lazy, good\_length, nice\_length, and max\_chain parameters. [endsect]\r[section:upper_bound zlib::deflate_stream::upper_bound]\r[indexterm2 upper_bound..zlib::deflate_stream]\r
7632 Returns the upper limit on the size of a compressed block. \r[heading Synopsis]\r```\rstd::size_t\rupper_bound(\r    std::size_t sourceLen) const;\r```\r\r[heading Description]\r
7633 This function makes a conservative estimate of the maximum number of bytes needed to store the result of compressing a block of data based on the current compression level and strategy.
7634 [heading Parameters]\r[table [[Name][Description]]\r  [[`sourceLen`][\r    
7635 The size of the uncompressed data.\r  ]]\r]\r
7636 [heading Return Value]
7637 The maximum number of resulting compressed bytes. 
7638 [endsect]\r[section:write zlib::deflate_stream::write]\r[indexterm2 write..zlib::deflate_stream]\r
7639 Compress input and write output. \r[heading Synopsis]\r```\rvoid\rwrite(\r    z_params& zs,\r    Flush flush,\r    error_code& ec);\r```\r\r[heading Description]\r
7640 This function compresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce some output latency (reading input without producing any output) except when forced to flush.
7641 In each call, one or both of these actions are performed:
7642
7643 * Compress more input starting at `zs.next_in` and update `zs.next_in` and `zs.avail_in` accordingly. If not all input can be processed (because there is not enough room in the output buffer), `zs.next_in` and `zs.avail_in` are updated and processing will resume at this point for the next call.
7644
7645
7646 * Provide more output starting at `zs.next_out` and update `zs.next_out` and `zs.avail_out` accordingly. This action is forced if the parameter flush is not `Flush::none`. Forcing flush frequently degrades the compression ratio, so this parameter should be set only when necessary (in interactive applications). Some output may be provided even if flush is not set.
7647
7648 Before the call, the application must ensure that at least one of the actions is possible, by providing more input and/or consuming more output, and updating `zs.avail_in` or `zs.avail_out` accordingly; `zs.avail_out` should never be zero before the call. The application can consume the compressed output when it wants, for example when the output buffer is full (`zs.avail_out == 0`), or after each call of `write`. If `write` returns no error with zero `zs.avail_out`, it must be called again after making room in the output buffer because there might be more output pending.
7649 Normally the parameter flush is set to `Flush::none`, which allows deflate to decide how much data to accumulate before producing output, in order to maximize compression.
7650 If the parameter flush is set to `Flush::sync`, all pending output is flushed to the output buffer and the output is aligned on a byte boundary, so that the decompressor can get all input data available so far. In particular `zs.avail_in` is zero after the call if enough output space has been provided before the call. Flushing may degrade compression for some compression algorithms and so it should be used only when necessary. This completes the current deflate block and follows it with an empty stored block that is three bits plus filler bits to the next byte, followed by the four bytes `{ 0x00, 0x00 0xff 0xff }`.
7651 If flush is set to `Flush::partial`, all pending output is flushed to the output buffer, but the output is not aligned to a byte boundary. All of the input data so far will be available to the decompressor, as for Z\_SYNC\_FLUSH. This completes the current deflate block and follows it with an empty fixed codes block that is 10 bits long. This assures that enough bytes are output in order for the decompressor to finish the block before the empty fixed code block.
7652 If flush is set to `Flush::block`, a deflate block is completed and emitted, as for `Flush::sync`, but the output is not aligned on a byte boundary, and up to seven bits of the current block are held to be written as the next byte after the next deflate block is completed. In this case, the decompressor may not be provided enough bits at this point in order to complete decompression of the data provided so far to the compressor. It may need to wait for the next block to be emitted. This is for advanced applications that need to control the emission of deflate blocks.
7653 If flush is set to `Flush::full`, all output is flushed as with `Flush::sync`, and the compression state is reset so that decompression can restart from this point if previous compressed data has been damaged or if random access is desired. Using `Flush::full` too often can seriously degrade compression.
7654 If `write` returns with `zs.avail_out == 0`, this function must be called again with the same value of the flush parameter and more output space (updated `zs.avail_out`), until the flush is complete (`write` returns with non-zero `zs.avail_out`). In the case of a `Flush::full`or `Flush::sync`, make sure that `zs.avail_out` is greater than six to avoid repeated flush markers due to `zs.avail_out == 0` on return.
7655 If the parameter flush is set to `Flush::finish`, pending input is processed, pending output is flushed and deflate returns the error `error::end_of_stream` if there was enough output space; if deflate returns with no error, this function must be called again with `Flush::finish` and more output space (updated `zs.avail_out`) but no more input data, until it returns the error `error::end_of_stream` or another error. After `write` has returned the `error::end_of_stream` error, the only possible operations on the stream are to reset or destroy.
7656 `Flush::finish` can be used immediately after initialization if all the compression is to be done in a single step. In this case, `zs.avail_out` must be at least value returned by `upper_bound` (see below). Then `write` is guaranteed to return the `error::end_of_stream` error. If not enough output space is provided, deflate will not return `error::end_of_stream`, and it must be called again as described above.
7657 `write` returns no error if some progress has been made (more input processed or more output produced), `error::end_of_stream` if all input has been consumed and all output has been produced (only when flush is set to `Flush::finish`), `error::stream_error` if the stream state was inconsistent (for example if `zs.next_in` or `zs.next_out` was `nullptr`), `error::need_buffers` if no progress is possible (for example `zs.avail_in` or `zs.avail_out` was zero). Note that `error::need_buffers` is not fatal, and `write` can be called again with more input and more output space to continue compressing. [endsect]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__zlib__deflate_upper_bound zlib::deflate_upper_bound]\r[indexterm1 zlib::deflate_upper_bound]\r
7658 Returns the upper limit on the size of a compressed block. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/deflate_stream.hpp]\r\r\r\r```\rstd::size_t\rdeflate_upper_bound(\r    std::size_t bytes);\r\r```\r\r[heading Description]\r
7659 This function makes a conservative estimate of the maximum number of bytes needed to store the result of compressing a block of data.
7660 [heading Parameters]\r[table [[Name][Description]]\r  [[`bytes`][\r    
7661 The size of the uncompressed data.\r  ]]\r]\r
7662 [heading Return Value]
7663 The maximum number of resulting compressed bytes. 
7664 \r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r[section:boost__beast__zlib__error zlib::error]\r[indexterm1 zlib::error]\r
7665 Error codes returned by the deflate codecs. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/error.hpp]\r\r\r```\renum error\r```\r\r[indexterm2 need_buffers..zlib::error]\r[indexterm2 end_of_stream..zlib::error]\r[indexterm2 need_dict..zlib::error]\r[indexterm2 stream_error..zlib::error]\r[indexterm2 invalid_block_type..zlib::error]\r[indexterm2 invalid_stored_length..zlib::error]\r[indexterm2 too_many_symbols..zlib::error]\r[indexterm2 invalid_code_lengths..zlib::error]\r[indexterm2 invalid_code_lenths..zlib::error]\r[indexterm2 invalid_bit_length_repeat..zlib::error]\r[indexterm2 missing_eob..zlib::error]\r[indexterm2 invalid_literal_length..zlib::error]\r[indexterm2 invalid_distance_code..zlib::error]\r[indexterm2 invalid_distance..zlib::error]\r[indexterm2 over_subscribed_length..zlib::error]\r[indexterm2 incomplete_length_set..zlib::error]\r[indexterm2 general..zlib::error]\r[heading Values]\r[table [[Name][Description]]\r  [[[^need_buffers]][Additional buffers are required. \r\rThis error indicates that one or both of the buffers
7666 provided buffers do not have sufficient available bytes
7667 to make forward progress.
7668
7669 This does not always indicate a failure condition.
7670
7671 @note This is the same as `Z_BUF_ERROR` returned by ZLib.
7672  ]]\r  [[[^end_of_stream]][End of stream reached. \r\r@note This is the same as `Z_STREAM_END` returned by ZLib.
7673  ]]\r  [[[^need_dict]][Preset dictionary required. \r\rThis error indicates that a preset dictionary was not provided and is now
7674 needed at this point.
7675
7676 This does not always indicate a failure condition.
7677
7678 @note This is the same as `Z_NEED_DICT` returned by ZLib.
7679  ]]\r  [[[^stream_error]][Invalid stream or parameters. \r\rThis error is returned when invalid parameters are passed,
7680 or the operation being performed is not consistent with the
7681 state of the stream. For example, attempting to write data
7682 when the end of stream is already reached.
7683
7684 @note This is the same as `Z_STREAM_ERROR` returned by ZLib.
7685  ]]\r  [[[^invalid_block_type]][Invalid block type. \r\r]]\r  [[[^invalid_stored_length]][Invalid stored block length. \r\r]]\r  [[[^too_many_symbols]][Too many length or distance symbols. \r\r]]\r  [[[^invalid_code_lengths]][Invalid code lengths. \r\r]]\r  [[[^invalid_code_lenths]][\r\r]]\r  [[[^invalid_bit_length_repeat]][Invalid bit length repeat. \r\r]]\r  [[[^missing_eob]][Missing end of block code. \r\r]]\r  [[[^invalid_literal_length]][Invalid literal/length code. \r\r]]\r  [[[^invalid_distance_code]][Invalid distance code. \r\r]]\r  [[[^invalid_distance]][Invalid distance too far back. \r\r]]\r  [[[^over_subscribed_length]][Over-subscribed length code. \r\r]]\r  [[[^incomplete_length_set]][Incomplete length set. \r\r]]\r  [[[^general]][general error \r\r]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r[section:boost__beast__zlib__inflate_stream zlib::inflate_stream]\r
7686 Raw deflate stream decompressor. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/inflate_stream.hpp]\r\r\r\r```\rclass inflate_stream :\r    private inflate_stream\r```\r[heading Member Functions]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__zlib__inflate_stream.clear [*clear]]]\r    [\r      Put the stream in a newly constructed state. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__inflate_stream.inflate_stream [*inflate_stream]]]\r    [\r      Construct a raw deflate decompression stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__inflate_stream.reset [*reset]]]\r    [\r      Reset the stream. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__inflate_stream.write [*write]]]\r    [\r      Decompress input and produce output. \r    ]\r  ]\r]\r\r[heading Description]\r
7687 This implements a raw deflate stream decompressor. The deflate protocol is a compression protocol described in "DEFLATE Compressed Data Format Specification version 1.3" located here: [@https://tools.ietf.org/html/rfc1951 https://tools.ietf.org/html/rfc1951]
7688 The implementation is a refactored port to C++ of ZLib's "inflate". A more detailed description of ZLib is at [@http://zlib.net/ http://zlib.net/].
7689 Compression can be done in a single step if the buffers are large enough (for example if an input file is memory mapped), or can be done by repeated calls of the compression function. In the latter case, the application must provide more input and/or consume the output (providing more output space) before each call. [section:clear zlib::inflate_stream::clear]\r[indexterm2 clear..zlib::inflate_stream]\r
7690 Put the stream in a newly constructed state. \r[heading Synopsis]\r```\rvoid\rclear();\r```\r\r[heading Description]\r
7691 All dynamically allocated memory is de-allocated. [endsect]\r[section:inflate_stream zlib::inflate_stream::inflate_stream]\r[indexterm2 inflate_stream..zlib::inflate_stream]\r
7692 Construct a raw deflate decompression stream. \r[heading Synopsis]\r```\rinflate_stream();\r```\r\r[heading Description]\r
7693 The window size is set to the default of 15 bits. [endsect]\r[section:reset zlib::inflate_stream::reset]\r[indexterm2 reset..zlib::inflate_stream]\r
7694 Reset the stream. ```\rvoid\r``[link beast.ref.boost__beast__zlib__inflate_stream.reset.overload1 reset]``();\r  ``[''''&raquo;''' [link beast.ref.boost__beast__zlib__inflate_stream.reset.overload1 more...]]``\r\rvoid\r``[link beast.ref.boost__beast__zlib__inflate_stream.reset.overload2 reset]``(\r    int windowBits);\r  ``[''''&raquo;''' [link beast.ref.boost__beast__zlib__inflate_stream.reset.overload2 more...]]``\r```\r[section:overload1 zlib::inflate_stream::reset (1 of 2 overloads)]\r
7695 Reset the stream. \r[heading Synopsis]\r```\rvoid\rreset();\r```\r\r[heading Description]\r
7696 This puts the stream in a newly constructed state with the previously specified window size, but without de-allocating any dynamically created structures. [endsect]\r[section:overload2 zlib::inflate_stream::reset (2 of 2 overloads)]\r
7697 Reset the stream. \r[heading Synopsis]\r```\rvoid\rreset(\r    int windowBits);\r```\r\r[heading Description]\r
7698 This puts the stream in a newly constructed state with the specified window size, but without de-allocating any dynamically created structures. [endsect]\r[endsect]\r\r[section:write zlib::inflate_stream::write]\r[indexterm2 write..zlib::inflate_stream]\r
7699 Decompress input and produce output. \r[heading Synopsis]\r```\rvoid\rwrite(\r    z_params& zs,\r    Flush flush,\r    error_code& ec);\r```\r\r[heading Description]\r
7700 This function decompresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce some output latency (reading input without producing any output) except when forced to flush.
7701 One or both of the following actions are performed:
7702
7703 * Decompress more input starting at `zs.next_in` and update `zs.next_in` and `zs.avail_in` accordingly. If not all input can be processed (because there is not enough room in the output buffer), `zs.next_in` is updated and processing will resume at this point for the next call.
7704
7705
7706 * Provide more output starting at `zs.next_out` and update `zs.next_out` and `zs.avail_out` accordingly. `write` provides as much output as possible, until there is no more input data or no more space in the output buffer (see below about the flush parameter).
7707
7708 Before the call, the application should ensure that at least one of the actions is possible, by providing more input and/or consuming more output, and updating the values in `zs` accordingly. The application can consume the uncompressed output when it wants, for example when the output buffer is full (`zs.avail_out == 0`), or after each call. If `write` returns no error and with zero `zs.avail_out`, it must be called again after making room in the output buffer because there might be more output pending.
7709 The flush parameter may be `Flush::none`, `Flush::sync`, `Flush::finish`, `Flush::block`, or `Flush::trees`. `Flush::sync` requests to flush as much output as possible to the output buffer. `Flush::block` requests to stop if and when it gets to the next deflate block boundary. When decoding the zlib or gzip format, this will cause `write` to return immediately after the header and before the first block. When doing a raw inflate, `write` will go ahead and process the first block, and will return when it gets to the end of that block, or when it runs out of data.
7710 The `Flush::block` option assists in appending to or combining deflate streams. Also to assist in this, on return `write` will set `zs.data_type` to the number of unused bits in the last byte taken from `zs.next_in`, plus 64 if `write` is currently decoding the last block in the deflate stream, plus 128 if `write` returned immediately after decoding an end-of-block code or decoding the complete header up to just before the first byte of the deflate stream. The end-of-block will not be indicated until all of the uncompressed data from that block has been written to `zs.next_out`. The number of unused bits may in general be greater than seven, except when bit 7 of `zs.data_type` is set, in which case the number of unused bits will be less than eight. `zs.data_type` is set as noted here every time `write` returns for all flush options, and so can be used to determine the amount of currently consumed input in bits.
7711 The `Flush::trees` option behaves as `Flush::block` does, but it also returns when the end of each deflate block header is reached, before any actual data in that block is decoded. This allows the caller to determine the length of the deflate block header for later use in random access within a deflate block. 256 is added to the value of `zs.data_type` when `write` returns immediately after reaching the end of the deflate block header.
7712 `write` should normally be called until it returns `error::end_of_stream` or another error. However if all decompression is to be performed in a single step (a single call of `write`), the parameter flush should be set to `Flush::finish`. In this case all pending input is processed and all pending output is flushed; `zs.avail_out` must be large enough to hold all of the uncompressed data for the operation to complete. (The size of the uncompressed data may have been saved by the compressor for this purpose.) The use of `Flush::finish` is not required to perform an inflation in one step. However it may be used to inform inflate that a faster approach can be used for the single call. `Flush::finish` also informs inflate to not maintain a sliding window if the stream completes, which reduces inflate's memory footprint. If the stream does not complete, either because not all of the stream is provided or not enough output space is provided, then a sliding window will be allocated and `write` can be called again to continue the operation as if `Flush::none` had been used.
7713 In this implementation, `write` always flushes as much output as possible to the output buffer, and always uses the faster approach on the first call. So the effects of the flush parameter in this implementation are on the return value of `write` as noted below, when `write` returns early when `Flush::block` or `Flush::trees` is used, and when `write` avoids the allocation of memory for a sliding window when `Flush::finish` is used.
7714 If a preset dictionary is needed after this call, `write` sets `zs.adler` to the Adler-32 checksum of the dictionary chosen by the compressor and returns `error::need_dictionary`; otherwise it sets `zs.adler` to the Adler-32 checksum of all output produced so far (that is, `zs.total_out bytes`) and returns no error, `error::end_of_stream`, or an error code as described below. At the end of the stream, `write` checks that its computed adler32 checksum is equal to that saved by the compressor and returns `error::end_of_stream` only if the checksum is correct.
7715 This function returns no error if some progress has been made (more input processed or more output produced), `error::end_of_stream` if the end of the compressed data has been reached and all uncompressed output has been produced, `error::need_dictionary` if a preset dictionary is needed at this point, `error::invalid_data` if the input data was corrupted (input stream not conforming to the zlib format or incorrect check value), `error::stream_error` if the stream structure was inconsistent (for example if `zs.next_in` or `zs.next_out` was null), `error::need_buffers` if no progress is possible or if there was not enough room in the output buffer when `Flush::finish` is used. Note that `error::need_buffers` is not fatal, and `write` can be called again with more input and more output space to continue decompressing. [endsect]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r\r\r\r[section:boost__beast__zlib__kind zlib::kind]\r[indexterm1 zlib::kind]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/zlib.hpp]\r\r\r```\renum kind\r```\r\r[indexterm2 binary..zlib::kind]\r[indexterm2 text..zlib::kind]\r[indexterm2 unknown..zlib::kind]\r[heading Values]\r[table [[Name][Description]]\r  [[[^binary]][\r\r]]\r  [[[^text]][\r\r]]\r  [[[^unknown]][\r\r]]\r]\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r[section:boost__beast__zlib__uInt zlib::uInt]\r[indexterm1 zlib::uInt]\r\r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/zlib.hpp]\r\r\r\r```\rusing uInt = unsigned int;\r```\r\r[heading Description]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r[section:boost__beast__zlib__z_params zlib::z_params]\r
7716 Deflate codec parameters. \r[heading Synopsis]\r\rDefined in header [include_file boost/beast/zlib/zlib.hpp]\r\r\r\r```\rstruct z_params\r```\r[heading Data Members]\r[table [[Name][Description]]\r  [\r    [[link beast.ref.boost__beast__zlib__z_params.avail_in [*avail_in]]]\r    [\r      The number of bytes of input available at next_in. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__z_params.avail_out [*avail_out]]]\r    [\r      The remaining bytes of space at next_out. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__z_params.data_type [*data_type]]]\r    [\r      \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__z_params.next_in [*next_in]]]\r    [\r      A pointer to the next input byte. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__z_params.next_out [*next_out]]]\r    [\r      A pointer to the next output byte. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__z_params.total_in [*total_in]]]\r    [\r      The total number of input bytes read so far. \r    ]\r  ]\r  [\r    [[link beast.ref.boost__beast__zlib__z_params.total_out [*total_out]]]\r    [\r      The total number of bytes output so far. \r    ]\r  ]\r]\r\r[heading Description]\r
7717 Objects of this type are filled in by callers and provided to the deflate codec to define the input and output areas for the next compress or decompress operation.
7718 The application must update next\_in and avail\_in when avail\_in has dropped to zero. It must update next\_out and avail\_out when avail\_out has dropped to zero. The application must initialize zalloc, zfree and opaque before calling the init function. All other fields are set by the compression library and must not be updated by the application.
7719 The fields total\_in and total\_out can be used for statistics or progress reports. After compression, total\_in holds the total size of the uncompressed data and may be saved for use in the decompressor (particularly if the decompressor wants to decompress everything in a single step). [section:avail_in zlib::z_params::avail_in]\r[indexterm2 avail_in..zlib::z_params]\r
7720 The number of bytes of input available at `next_in`. \r[heading Synopsis]\r```\rstd::size_t avail_in;\r```\r\r[heading Description]\r
7721 If there is no more input, this should be set to zero. [endsect]\r[section:avail_out zlib::z_params::avail_out]\r[indexterm2 avail_out..zlib::z_params]\r
7722 The remaining bytes of space at `next_out`. \r[heading Synopsis]\r```\rstd::size_t avail_out;\r```\r\r[heading Description]\r[endsect]\r[section:data_type zlib::z_params::data_type]\r[indexterm2 data_type..zlib::z_params]\r\r[heading Synopsis]\r```\rint data_type = unknown;\r```\r\r[heading Description]\r[endsect]\r[section:next_in zlib::z_params::next_in]\r[indexterm2 next_in..zlib::z_params]\r
7723 A pointer to the next input byte. \r[heading Synopsis]\r```\rvoid const  * next_in;\r```\r\r[heading Description]\r
7724 If there is no more input, this may be set to `nullptr`. [endsect]\r[section:next_out zlib::z_params::next_out]\r[indexterm2 next_out..zlib::z_params]\r
7725 A pointer to the next output byte. \r[heading Synopsis]\r```\rvoid * next_out;\r```\r\r[heading Description]\r[endsect]\r[section:total_in zlib::z_params::total_in]\r[indexterm2 total_in..zlib::z_params]\r
7726 The total number of input bytes read so far. \r[heading Synopsis]\r```\rstd::size_t total_in = 0;\r```\r\r[heading Description]\r[endsect]\r[section:total_out zlib::z_params::total_out]\r[indexterm2 total_out..zlib::z_params]\r
7727 The total number of bytes output so far. \r[heading Synopsis]\r```\rstd::size_t total_out = 0;\r```\r\r[heading Description]\r[endsect]\r\r\r\rConvenience header [include_file boost/beast/zlib.hpp]\r\r[endsect]\r\r\r\r