mirror of
https://github.com/boostorg/beast.git
synced 2025-07-29 20:37:31 +02:00
Tidy up docs
This commit is contained in:
@ -203,6 +203,7 @@
|
||||
<xsl:template name="make-id">
|
||||
<xsl:param name="name"/>
|
||||
<xsl:choose>
|
||||
<!--
|
||||
<xsl:when test="contains($name, 'boost::system::')">
|
||||
<xsl:call-template name="make-id">
|
||||
<xsl:with-param name="name"
|
||||
@ -215,6 +216,7 @@
|
||||
select="concat(substring-before($name, 'boost::asio::error::'), substring-after($name, 'boost::asio::error::'))"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
-->
|
||||
<xsl:when test="contains($name, '::')">
|
||||
<xsl:call-template name="make-id">
|
||||
<xsl:with-param name="name"
|
||||
@ -317,30 +319,27 @@
|
||||
select="concat(substring-before($name, ' '), '_', substring-after($name, ' '))"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="contains($name, 'boost__posix_time__ptime')">
|
||||
<xsl:call-template name="make-id">
|
||||
<xsl:with-param name="name"
|
||||
select="concat(substring-before($name, 'boost__posix_time__ptime'), 'ptime', substring-after($name, 'boost__posix_time__ptime'))"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$name"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!--========== Markup ==========-->
|
||||
<!--=========================================================================-->
|
||||
|
||||
<!-- Markup -->
|
||||
|
||||
<xsl:template match="para" mode="markup">
|
||||
<xsl:value-of select="$newline"/>
|
||||
<xsl:apply-templates mode="markup"/>
|
||||
<xsl:value-of select="$newline"/>
|
||||
<!--<xsl:value-of select="$newline"/>-->
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="para" mode="markup-nested">
|
||||
<xsl:apply-templates mode="markup-nested"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- @par Command -->
|
||||
<xsl:template match="title" mode="markup">
|
||||
<xsl:variable name="title">
|
||||
<xsl:value-of select="."/>
|
||||
@ -360,15 +359,16 @@
|
||||
<xsl:text>]</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Program listings -->
|
||||
<xsl:template match="programlisting" mode="markup">
|
||||
<xsl:value-of select="$newline"/>
|
||||
<xsl:value-of select="$newline"/>
|
||||
<xsl:text>
```
</xsl:text>
|
||||
<xsl:apply-templates mode="codeline"/>
|
||||
<xsl:value-of select="$newline"/>
|
||||
<xsl:value-of select="$newline"/>
|
||||
<xsl:text>```
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="programlisting" mode="markup-nested">
|
||||
<xsl:text>[role red error.programlisting]</xsl:text>
|
||||
<!--
|
||||
<xsl:value-of select="$newline"/>
|
||||
<xsl:text>``</xsl:text>
|
||||
<xsl:value-of select="$newline"/>
|
||||
@ -378,6 +378,7 @@
|
||||
</xsl:if>
|
||||
<xsl:text>``</xsl:text>
|
||||
<xsl:value-of select="$newline"/>
|
||||
-->
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="codeline" mode="codeline">
|
||||
@ -408,19 +409,18 @@
|
||||
<xsl:text>

</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Backtick-quoted string -->
|
||||
<xsl:template match="computeroutput" mode="markup">
|
||||
<xsl:text>`</xsl:text>
|
||||
<xsl:value-of select="."/>
|
||||
<xsl:text>`</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="computeroutput" mode="markup-nested">
|
||||
<xsl:text>`</xsl:text>
|
||||
<xsl:value-of select="."/>
|
||||
<xsl:text>`</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- Ensure the list starts on its own line -->
|
||||
<xsl:template match="orderedlist | itemizedlist" mode="markup">
|
||||
<xsl:value-of select="$newline" />
|
||||
@ -483,7 +483,9 @@
|
||||
<xsl:text> [[`</xsl:text>
|
||||
<xsl:value-of select="parameternamelist"/>
|
||||
<xsl:text>`][
 </xsl:text>
|
||||
<xsl:apply-templates select="parameterdescription" mode="markup-nested"/>
|
||||
<!-- No idea why this was using markup-nested instead of markup -->
|
||||
<xsl:apply-templates select="parameterdescription" mode="markup"/>
|
||||
|
||||
<xsl:text>
 ]]
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
@ -963,8 +965,8 @@
|
||||
</xsl:for-each>
|
||||
<xsl:text>```
</xsl:text>
|
||||
<xsl:call-template name="class-tables">
|
||||
<xsl:with-param name="class-name" select="$class-name"/>
|
||||
<xsl:with-param name="class-id" select="$class-id"/>
|
||||
<xsl:with-param name="class-name" select="$class-name"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text>
[heading Description]
</xsl:text>
|
||||
<xsl:apply-templates select="detaileddescription" mode="markup"/>
|
||||
@ -1250,8 +1252,15 @@
|
||||
</xsl:variable>
|
||||
<xsl:if test="$overload-position = 1">
|
||||
<xsl:text> [
</xsl:text>
|
||||
<xsl:text> [[link </xsl:text><xsl:value-of select="$doc-ref"/>
|
||||
<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
|
||||
<xsl:text> [[link </xsl:text>
|
||||
<xsl:variable name="friend-link">
|
||||
<!-- VFALCO This forms a link to a class member instead of a friend free function -->
|
||||
<xsl:value-of select="$doc-ref"/>
|
||||
<xsl:value-of select="$class-id"/>
|
||||
<xsl:text>.</xsl:text>
|
||||
<xsl:value-of select="$id"/>
|
||||
</xsl:variable>
|
||||
<xsl:value-of select="$friend-link"/>
|
||||
<xsl:text> [*</xsl:text>
|
||||
<xsl:value-of select="$name"/>
|
||||
<xsl:text>]]]
 [
 </xsl:text>
|
||||
@ -1572,7 +1581,9 @@
|
||||
|
||||
<xsl:template name="typedef">
|
||||
<xsl:param name="class-name"/>
|
||||
<xsl:text>```
using </xsl:text>
|
||||
<xsl:text>
```
</xsl:text>
|
||||
<xsl:apply-templates select="templateparamlist" mode="class-detail"/>
|
||||
<xsl:text>using </xsl:text>
|
||||
<xsl:value-of select="name"/>
|
||||
<xsl:text> = </xsl:text>
|
||||
<xsl:variable name="stripped-type">
|
||||
@ -1583,7 +1594,8 @@
|
||||
<xsl:if test="string-length($stripped-type) > 0">
|
||||
<xsl:value-of select="$stripped-type"/>
|
||||
</xsl:if>
|
||||
<xsl:text>;
```
</xsl:text>
|
||||
<xsl:text>;
</xsl:text>
|
||||
<xsl:text>```
</xsl:text>
|
||||
<xsl:if test="count(type/ref) > 0 and not(contains(type, '*'))">
|
||||
<xsl:variable name="class-refid">
|
||||
<xsl:for-each select="type/ref[1]">
|
||||
@ -1701,7 +1713,7 @@
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!-- Template parameter list synopsis -->
|
||||
<xsl:template match="templateparamlist" mode="class-detail">
|
||||
<xsl:text>template<
</xsl:text>
|
||||
<xsl:apply-templates select="param" mode="class-detail-template"/>
|
||||
@ -1712,31 +1724,45 @@
|
||||
|
||||
<xsl:template match="param" mode="class-detail-template">
|
||||
<xsl:text> </xsl:text>
|
||||
<!-- Normalize 'class', 'class...' or NTTP type -->
|
||||
<xsl:choose>
|
||||
<!-- CLASS_DETAIL_TEMPLATE -->
|
||||
<xsl:when test="declname = 'T'">
|
||||
<xsl:value-of select="declname"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'T1'">
|
||||
<xsl:value-of select="declname"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'TN'">
|
||||
<xsl:value-of select="declname"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="count(declname) > 0">
|
||||
<xsl:value-of select="type"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="declname"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="starts-with(type, 'class ')">
|
||||
<xsl:text>class </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="type"/>
|
||||
<!--<xsl:value-of select="concat(' ``[link beast.ref.', declname, ' ', declname, ']``')"/>-->
|
||||
<xsl:text>[role red error.class-detail-template.1]</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- Normalize the <param> -->
|
||||
<xsl:variable name="normal-tparam">
|
||||
<xsl:choose>
|
||||
<xsl:when test="count(declname) > 0">
|
||||
<xsl:value-of select="declname"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="starts-with(type, 'class ')">
|
||||
<xsl:value-of select="substring(type, 7)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>[role red error.class-detail-template.2]</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<!-- CLASS_DETAIL_TEMPLATE -->
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$normal-tparam"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- default template parameter value -->
|
||||
<xsl:if test="count(defval) > 0">
|
||||
<xsl:text> = </xsl:text>
|
||||
<xsl:value-of select="defval"/>
|
||||
</xsl:if>
|
||||
<!-- comma separator -->
|
||||
<xsl:if test="not(position() = last())">
|
||||
<xsl:text>,
</xsl:text>
|
||||
</xsl:if>
|
||||
@ -1909,11 +1935,15 @@
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<!-- Handles using/typedef at namespace scope -->
|
||||
<xsl:when test="@kind='typedef'">
|
||||
<xsl:call-template name="typedef">
|
||||
<xsl:with-param name="class-name" select="$name"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text>
[heading Description]
</xsl:text>
|
||||
<xsl:apply-templates select="detaileddescription" mode="markup"/>
|
||||
</xsl:when>
|
||||
<!-- Everything else at namespace scope-->
|
||||
<xsl:otherwise>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@kind='variable'">
|
||||
|
@ -37,6 +37,10 @@
|
||||
[def __Asio__ [@boost:/libs/asio/index.html Boost.Asio]]
|
||||
[def __async_initfn__ [@boost:/doc/html/boost_asio/reference/asynchronous_operations.html initiating function]]
|
||||
|
||||
[/ C++ Named Requirements ]
|
||||
|
||||
[def __Allocator__ [@https://en.cppreference.com/w/cpp/named_req/Allocator ['Allocator]]]
|
||||
|
||||
[/ Networking Identifiers ]
|
||||
|
||||
[def __asio_handler_allocate__ [@boost:/doc/html/boost_asio/reference/asio_handler_allocate.html `asio_handler_allocate`]]
|
||||
@ -70,6 +74,8 @@
|
||||
[def __ConstBufferSequence__ [@boost:/doc/html/boost_asio/reference/ConstBufferSequence.html ['ConstBufferSequence]]]
|
||||
[def __EndpointSequence__ [@boost:/doc/html/boost_asio/reference/EndpointSequence.html ['EndpointSequence]]]
|
||||
[def __Executor__ [@boost:/doc/html/boost_asio/reference/Executor1.html ['Executor]]]
|
||||
[def __Executor1__ [@boost:/doc/html/boost_asio/reference/Executor1.html ['Executor1]]]
|
||||
[def __Executor2__ [@boost:/doc/html/boost_asio/reference/Executor1.html ['Executor2]]]
|
||||
[def __ExecutionContext__ [@boost:/doc/html/boost_asio/reference/ExecutionContext.html ['ExecutionContext]]]
|
||||
[def __Handler__ [@boost:/doc/html/boost_asio/reference/Handler.html ['Handler]]]
|
||||
[def __IteratorConnectHandler__ [@boost:/doc/html/boost_asio/reference/IteratorConnectHandler.html ['IteratorConnectHandler]]]
|
||||
|
@ -30,22 +30,19 @@
|
||||
<member><link linkend="beast.ref.boost__beast__file_posix">file_posix</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__file_stdio">file_stdio</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__file_win32">file_win32</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__flat_buffer">flat_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__flat_static_buffer">flat_static_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__flat_static_buffer_base">flat_static_buffer_base</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__flat_stream">flat_stream</link> <emphasis role="green">★</emphasis></member>
|
||||
<member><link linkend="beast.ref.boost__beast__handler_ptr">handler_ptr</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__iequal">iequal</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__iless">iless</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__rate_policy_access">rate_policy_access</link> <emphasis role="green">★</emphasis></member>
|
||||
<member><link linkend="beast.ref.boost__beast__saved_handler">saved_handler</link> <emphasis role="green">★</emphasis></member>
|
||||
<member><link linkend="beast.ref.boost__beast__simple_rate_policy">simple_rate_policy</link> <emphasis role="green">★</emphasis></member>
|
||||
</simplelist>
|
||||
</entry>
|
||||
<entry valign="top">
|
||||
<bridgehead renderas="sect3">Classes <emphasis role="normal">(2 of 2)</emphasis></bridgehead>
|
||||
<simplelist type="vert" columns="1">
|
||||
<member><link linkend="beast.ref.boost__beast__span">span</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__simple_rate_policy">simple_rate_policy</link> <emphasis role="green">★</emphasis></member>
|
||||
<member><link linkend="beast.ref.boost__beast__static_string">static_string</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__stable_async_base">stable_async_base</link> <emphasis role="green">★</emphasis></member>
|
||||
<member><link linkend="beast.ref.boost__beast__string_param">string_param</link></member>
|
||||
@ -129,17 +126,20 @@
|
||||
<entry valign="top">
|
||||
<bridgehead renderas="sect3">Classes</bridgehead>
|
||||
<simplelist type="vert" columns="1">
|
||||
<member><link linkend="beast.ref.boost__beast__basic_flat_buffer">basic_flat_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__basic_multi_buffer">basic_multi_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffered_read_stream">buffered_read_stream</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffers_adaptor">buffers_adaptor</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffers_cat_view">buffers_cat_view</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffers_prefix_view">buffers_prefix_view</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffers_suffix">buffers_suffix</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__dynamic_buffer_ref_wrapper">dynamic_buffer_ref_wrapper</link> <emphasis role="green">★</emphasis></member>
|
||||
<member><link linkend="beast.ref.boost__beast__multi_buffer">multi_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__static_buffer">static_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__static_buffer_base">static_buffer_base</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__basic_flat_buffer">basic_flat_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__basic_multi_buffer">basic_multi_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffered_read_stream">buffered_read_stream</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffers_adaptor">buffers_adaptor</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffers_cat_view">buffers_cat_view</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffers_prefix_view">buffers_prefix_view</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__buffers_suffix">buffers_suffix</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__dynamic_buffer_ref_wrapper">dynamic_buffer_ref_wrapper</link> <emphasis role="green">★</emphasis></member>
|
||||
<member><link linkend="beast.ref.boost__beast__flat_buffer">flat_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__flat_static_buffer">flat_static_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__flat_static_buffer_base">flat_static_buffer_base</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__multi_buffer">multi_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__static_buffer">static_buffer</link></member>
|
||||
<member><link linkend="beast.ref.boost__beast__static_buffer_base">static_buffer_base</link></member>
|
||||
</simplelist>
|
||||
</entry><entry valign="top">
|
||||
<bridgehead renderas="sect3">Functions</bridgehead>
|
||||
|
@ -1,6 +1,8 @@
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
#INPUT = $(LIB_DIR)/include/boost/beast/_experimental/http/icy_stream.hpp
|
||||
|
||||
INPUT = \
|
||||
$(LIB_DIR)/include/boost/beast/ \
|
||||
$(LIB_DIR)/include/boost/beast/_experimental/http \
|
||||
@ -11,6 +13,7 @@ INPUT = \
|
||||
$(LIB_DIR)/include/boost/beast/websocket \
|
||||
$(LIB_DIR)/include/boost/beast/zlib
|
||||
|
||||
ALIASES += esafe="@par Exception Safety"
|
||||
|
||||
INPUT_ENCODING = UTF-8
|
||||
FILE_PATTERNS =
|
||||
@ -79,7 +82,6 @@ MULTILINE_CPP_IS_BRIEF = NO
|
||||
INHERIT_DOCS = YES
|
||||
SEPARATE_MEMBER_PAGES = NO
|
||||
TAB_SIZE = 4
|
||||
ALIASES =
|
||||
TCL_SUBST =
|
||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
|
@ -1,87 +1,36 @@
|
||||
<!-- CLASS_DETAIL_TEMPLATE BEGIN -->
|
||||
<xsl:when test="type = 'class AsyncStream'">
|
||||
<xsl:text>class __AsyncStream__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class AsyncReadStream'">
|
||||
<xsl:text>class __AsyncReadStream__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class AsyncWriteStream'">
|
||||
<xsl:text>class __AsyncWriteStream__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class Body'">
|
||||
<xsl:text>class __Body__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class BufferSequence'">
|
||||
<xsl:text>class __BufferSequence__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="(type = 'class' or type = 'class...') and declname = 'BufferSequence'">
|
||||
<xsl:value-of select="type"/>
|
||||
<xsl:text> __BufferSequence__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'CompletionCondition' or type = 'class CompletionCondition'">
|
||||
<xsl:text>class __CompletionCondition__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'CompletionHandler' or type = 'class CompletionHandler'">
|
||||
<xsl:text>class __CompletionHandler__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class ConnectCondition'">
|
||||
<xsl:text>class __ConnectCondition__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class ConnectHandler'">
|
||||
<xsl:text>class __ConnectHandler__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'ConstBufferSequence' or type = 'class ConstBufferSequence'">
|
||||
<xsl:text>class __ConstBufferSequence__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'DynamicBuffer' or type = 'class DynamicBuffer'">
|
||||
<xsl:text>class __DynamicBuffer__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class EndpointSequence'">
|
||||
<xsl:text>class __EndpointSequence__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class ExecutionContext'">
|
||||
<xsl:text>class __ExecutionContext__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class Executor'">
|
||||
<xsl:text>class __Executor__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class Fields' or substring(type, 1, 13) = 'class Fields '">
|
||||
<xsl:text>class __Fields__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'Handler' or type = 'class Handler'">
|
||||
<xsl:text>class __Handler__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class IteratorConnectHandler'">
|
||||
<xsl:text>class __IteratorConnectHandler__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'MutableBufferSequence' or type = 'class MutableBufferSequence'">
|
||||
<xsl:text>class __MutableBufferSequence__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class Protocol'">
|
||||
<xsl:text>class __Protocol__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class RangeConnectHandler'">
|
||||
<xsl:text>class __RangeConnectHandler__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class RatePolicy'">
|
||||
<xsl:text>class __RatePolicy__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'ReadHandler' or type = 'class ReadHandler'">
|
||||
<xsl:text>class __ReadHandler__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'Stream' or type = 'class Stream'">
|
||||
<xsl:text>class __Stream__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="type = 'class SyncStream'">
|
||||
<xsl:text>class __SyncStream__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'SyncReadStream' or type = 'class SyncReadStream'">
|
||||
<xsl:text>class __SyncReadStream__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'SyncWriteStream' or type = 'class SyncWriteStream'">
|
||||
<xsl:text>class __SyncWriteStream__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="declname = 'WriteHandler' or type = 'class WriteHandler'">
|
||||
<xsl:text>class __WriteHandler__</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Allocator'"> <xsl:text>__Allocator__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'AsyncStream'"> <xsl:text>__AsyncStream__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'AsyncReadStream'"> <xsl:text>__AsyncReadStream__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'AsyncWriteStream'"> <xsl:text>__AsyncWriteStream__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Body'"> <xsl:text>__Body__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'BufferSequence'"> <xsl:text>__BufferSequence__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'BufferSequence'"> <xsl:text>__BufferSequence__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'CompletionCondition'"> <xsl:text>__CompletionCondition__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'CompletionHandler'"> <xsl:text>__CompletionHandler__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'CompletionToken'"> <xsl:text>__CompletionToken__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'ConnectCondition'"> <xsl:text>__ConnectCondition__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'ConnectHandler'"> <xsl:text>__ConnectHandler__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'ConstBufferSequence'"> <xsl:text>__ConstBufferSequence__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'DynamicBuffer'"> <xsl:text>__DynamicBuffer__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'EndpointSequence'"> <xsl:text>__EndpointSequence__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'ExecutionContext'"> <xsl:text>__ExecutionContext__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Executor'"> <xsl:text>__Executor__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Executor_'"> <xsl:text>__Executor__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Executor1'"> <xsl:text>__Executor1__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Executor2'"> <xsl:text>__Executor2__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Fields'"> <xsl:text>__Fields__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Handler'"> <xsl:text>__Handler__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Handler_'"> <xsl:text>__Handler__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'IteratorConnectHandler'"> <xsl:text>__IteratorConnectHandler__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'MutableBufferSequence'"> <xsl:text>__MutableBufferSequence__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Protocol'"> <xsl:text>__Protocol__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'RangeConnectHandler'"> <xsl:text>__RangeConnectHandler__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'RatePolicy'"> <xsl:text>__RatePolicy__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'ReadHandler'"> <xsl:text>__ReadHandler__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'Stream'"> <xsl:text>__Stream__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'SyncStream'"> <xsl:text>__SyncStream__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'SyncReadStream'"> <xsl:text>__SyncReadStream__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'SyncWriteStream'"> <xsl:text>__SyncWriteStream__</xsl:text></xsl:when>
|
||||
<xsl:when test="$normal-tparam = 'WriteHandler'"> <xsl:text>__WriteHandler__</xsl:text></xsl:when>
|
||||
<!-- CLASS_DETAIL_TEMPLATE END -->
|
||||
|
@ -61,7 +61,7 @@ async_echo (AsyncStream& stream, DynamicBuffer& buffer, CompletionToken&& token)
|
||||
to provide the implementation with any leftover bytes.
|
||||
|
||||
@param stream The stream to operate on. The type must meet the
|
||||
requirements of @b AsyncReadStream and @AsyncWriteStream
|
||||
requirements of <em>AsyncReadStream</em> and @AsyncWriteStream
|
||||
|
||||
@param buffer A dynamic buffer to hold implementation-defined
|
||||
temporary data. Ownership is not transferred; the caller is
|
||||
|
@ -39,26 +39,23 @@ namespace http {
|
||||
operations are performed within the same implicit or explicit strand.
|
||||
|
||||
@par Example
|
||||
|
||||
To use the @ref icy_stream template with an @ref tcp_stream
|
||||
you would write:
|
||||
|
||||
@code
|
||||
http::icy_stream<tcp_stream> is(ioc);
|
||||
@endcode
|
||||
|
||||
@tparam NextLayer The type representing the next layer, to which
|
||||
data will be read and written during operations. For synchronous
|
||||
operations, the type must support the @b SyncStream concept.
|
||||
operations, the type must support the <em>SyncStream</em> concept.
|
||||
For asynchronous operations, the type must support the
|
||||
@b AsyncStream concept.
|
||||
<em>AsyncStream</em> concept.
|
||||
|
||||
@note A stream object must not be moved or destroyed while there
|
||||
are pending asynchronous operations associated with it.
|
||||
|
||||
@par Concepts
|
||||
@b AsyncStream,
|
||||
@b SyncStream
|
||||
<em>AsyncStream</em>, <em>SyncStream</em>
|
||||
*/
|
||||
template<class NextLayer>
|
||||
class icy_stream
|
||||
@ -208,12 +205,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code void handler(
|
||||
@code
|
||||
void handler(
|
||||
const boost::system::error_code& error, // Result of operation.
|
||||
std::size_t bytes_transferred // Number of bytes read.
|
||||
); @endcode
|
||||
|
||||
);
|
||||
@endcode
|
||||
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
|
||||
@ -288,14 +285,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // Result of operation.
|
||||
std::size_t bytes_transferred // Number of bytes written.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
|
@ -29,7 +29,7 @@ namespace test {
|
||||
not instantiated directly; instances of this class are returned
|
||||
by the helper functions listed below.
|
||||
|
||||
@see @ref success_handler, @ref fail_handler, @ref any_handler
|
||||
@see success_handler, @ref fail_handler, @ref any_handler
|
||||
*/
|
||||
class handler
|
||||
{
|
||||
|
@ -91,10 +91,10 @@ namespace test {
|
||||
operations are performed within the same implicit or explicit strand.
|
||||
|
||||
@par Concepts
|
||||
@li @b SyncReadStream
|
||||
@li @b SyncWriteStream
|
||||
@li @b AsyncReadStream
|
||||
@li @b AsyncWriteStream
|
||||
@li <em>SyncReadStream</em>
|
||||
@li <em>SyncWriteStream</em>
|
||||
@li <em>AsyncReadStream</em>
|
||||
@li <em>AsyncWriteStream</em>
|
||||
*/
|
||||
class stream
|
||||
{
|
||||
@ -412,14 +412,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec, // Result of operation.
|
||||
std::size_t bytes_transferred // Number of bytes read.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -490,14 +488,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec, // Result of operation.
|
||||
std::size_t bytes_transferred // Number of bytes written.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
|
@ -29,7 +29,7 @@
|
||||
namespace boost {
|
||||
namespace beast {
|
||||
|
||||
/** Base class to provide completion handler boilerplate for composed operations.
|
||||
/** Base class to assist writing composed operations.
|
||||
|
||||
A function object submitted to intermediate initiating functions during
|
||||
a composed operation may derive from this type to inherit all of the
|
||||
@ -169,7 +169,7 @@ namespace beast {
|
||||
not default constructible, an instance of the type must be provided
|
||||
upon construction.
|
||||
|
||||
@see @ref stable_async_base
|
||||
@see stable_async_base
|
||||
*/
|
||||
template<
|
||||
class Handler,
|
||||
@ -377,43 +377,10 @@ public:
|
||||
}
|
||||
|
||||
#if ! BOOST_BEAST_DOXYGEN
|
||||
template<
|
||||
class Handler_,
|
||||
class Executor1_,
|
||||
class Allocator_,
|
||||
class Function>
|
||||
friend
|
||||
void asio_handler_invoke(
|
||||
Function&& f,
|
||||
async_base<
|
||||
Handler_, Executor1_, Allocator_>* p);
|
||||
|
||||
friend
|
||||
void* asio_handler_allocate(
|
||||
std::size_t size, async_base* p)
|
||||
Handler*
|
||||
get_legacy_handler_pointer() noexcept
|
||||
{
|
||||
using net::asio_handler_allocate;
|
||||
return asio_handler_allocate(
|
||||
size, std::addressof(p->h_));
|
||||
}
|
||||
|
||||
friend
|
||||
void asio_handler_deallocate(
|
||||
void* mem, std::size_t size,
|
||||
async_base* p)
|
||||
{
|
||||
using net::asio_handler_deallocate;
|
||||
asio_handler_deallocate(mem, size,
|
||||
std::addressof(p->h_));
|
||||
}
|
||||
|
||||
friend
|
||||
bool asio_handler_is_continuation(
|
||||
async_base* p)
|
||||
{
|
||||
using net::asio_handler_is_continuation;
|
||||
return asio_handler_is_continuation(
|
||||
std::addressof(p->h_));
|
||||
return std::addressof(h_);
|
||||
}
|
||||
#endif
|
||||
};
|
||||
@ -701,63 +668,19 @@ public:
|
||||
Args&&... args);
|
||||
};
|
||||
|
||||
#if ! BOOST_BEAST_DOXYGEN
|
||||
template<
|
||||
class Handler,
|
||||
class Executor1,
|
||||
class Allocator,
|
||||
class Function>
|
||||
void asio_handler_invoke(
|
||||
Function&& f,
|
||||
async_base<
|
||||
Handler, Executor1, Allocator>* p)
|
||||
{
|
||||
using net::asio_handler_invoke;
|
||||
asio_handler_invoke(
|
||||
f, std::addressof(p->h_));
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace detail {
|
||||
|
||||
template<class State, class Allocator>
|
||||
struct allocate_stable_state final
|
||||
: stable_base
|
||||
, boost::empty_value<Allocator>
|
||||
{
|
||||
State value;
|
||||
|
||||
template<class... Args>
|
||||
explicit
|
||||
allocate_stable_state(
|
||||
Allocator const& alloc,
|
||||
Args&&... args)
|
||||
: boost::empty_value<Allocator>(
|
||||
boost::empty_init_t{}, alloc)
|
||||
, value{std::forward<Args>(args)...}
|
||||
{
|
||||
}
|
||||
|
||||
void destroy() override
|
||||
{
|
||||
using A = typename allocator_traits<
|
||||
Allocator>::template rebind_alloc<
|
||||
allocate_stable_state>;
|
||||
|
||||
A a(this->get());
|
||||
detail::allocator_traits<A>::destroy(a, this);
|
||||
detail::allocator_traits<A>::deallocate(a, this, 1);
|
||||
}
|
||||
};
|
||||
|
||||
} // detail
|
||||
|
||||
/** Allocate a temporary object to hold stable asynchronous operation state.
|
||||
|
||||
The object will be destroyed just before the completion
|
||||
handler is invoked, or when the base is destroyed.
|
||||
|
||||
@see @ref stable_async_base
|
||||
@tparam State The type of object to allocate.
|
||||
|
||||
@param base The helper to allocate from.
|
||||
|
||||
@param args An optional list of parameters to forward to the
|
||||
constructor of the object being allocated.
|
||||
|
||||
@see stable_async_base
|
||||
*/
|
||||
template<
|
||||
class State,
|
||||
@ -769,43 +692,11 @@ State&
|
||||
allocate_stable(
|
||||
stable_async_base<
|
||||
Handler, Executor1, Allocator>& base,
|
||||
Args&&... args)
|
||||
{
|
||||
using allocator_type = typename stable_async_base<
|
||||
Handler, Executor1, Allocator>::allocator_type;
|
||||
|
||||
using A = typename detail::allocator_traits<
|
||||
allocator_type>::template rebind_alloc<
|
||||
detail::allocate_stable_state<
|
||||
State, allocator_type>>;
|
||||
|
||||
struct deleter
|
||||
{
|
||||
allocator_type alloc;
|
||||
detail::allocate_stable_state<
|
||||
State, allocator_type>* ptr;
|
||||
|
||||
~deleter()
|
||||
{
|
||||
if(ptr)
|
||||
{
|
||||
A a(alloc);
|
||||
detail::allocator_traits<A>::deallocate(a, ptr, 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
A a(base.get_allocator());
|
||||
deleter d{base.get_allocator(), nullptr};
|
||||
d.ptr = detail::allocator_traits<A>::allocate(a, 1);
|
||||
detail::allocator_traits<A>::construct(a, d.ptr,
|
||||
d.alloc, std::forward<Args>(args)...);
|
||||
d.ptr->next_ = base.list_;
|
||||
base.list_ = d.ptr;
|
||||
return boost::exchange(d.ptr, nullptr)->value;
|
||||
}
|
||||
Args&&... args);
|
||||
|
||||
} // beast
|
||||
} // boost
|
||||
|
||||
#include <boost/beast/core/impl/async_base.hpp>
|
||||
|
||||
#endif
|
||||
|
@ -516,7 +516,7 @@ public:
|
||||
|
||||
@throws system_error Thrown on failure.
|
||||
|
||||
@see @ref connect
|
||||
@see connect
|
||||
*/
|
||||
void
|
||||
connect(endpoint_type const& ep)
|
||||
@ -537,7 +537,7 @@ public:
|
||||
|
||||
@param ec Set to indicate what error occurred, if any.
|
||||
|
||||
@see @ref connect
|
||||
@see connect
|
||||
*/
|
||||
void
|
||||
connect(endpoint_type const& ep, error_code& ec)
|
||||
@ -890,19 +890,17 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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`.
|
||||
|
||||
@see @ref async_connect
|
||||
@see async_connect
|
||||
*/
|
||||
template<class ConnectHandler>
|
||||
BOOST_BEAST_ASYNC_RESULT1(ConnectHandler)
|
||||
@ -934,7 +932,6 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
// Result of operation. if the sequence is empty, set to
|
||||
@ -947,7 +944,6 @@ public:
|
||||
typename Protocol::endpoint const& endpoint
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1004,7 +1000,6 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
// Result of operation. if the sequence is empty, set to
|
||||
@ -1017,7 +1012,6 @@ public:
|
||||
typename Protocol::endpoint const& endpoint
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1082,7 +1076,6 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
// Result of operation. if the sequence is empty, set to
|
||||
@ -1095,7 +1088,6 @@ public:
|
||||
Iterator iterator
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1138,7 +1130,6 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
// Result of operation. if the sequence is empty, set to
|
||||
@ -1151,7 +1142,6 @@ public:
|
||||
Iterator iterator
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1262,14 +1252,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code error, // Result of operation.
|
||||
std::size_t bytes_transferred // Number of bytes read.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1381,14 +1369,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code error, // Result of operation.
|
||||
std::size_t bytes_transferred // Number of bytes written.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
|
@ -28,18 +28,16 @@ namespace beast {
|
||||
will be `std::true_type` if each specified type meets the requirements,
|
||||
otherwise, this type alias will be `std::false_type`.
|
||||
|
||||
@tparam TN A list of zero or more types to check. If this list is
|
||||
empty, the resulting type alias will be `std::true_type`.
|
||||
@tparam BufferSequence A list of zero or more types to check. If this
|
||||
list is empty, the resulting type alias will be `std::true_type`.
|
||||
*/
|
||||
template<class... BufferSequence>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class... TN>
|
||||
struct is_const_buffer_sequence : __see_below__ {};
|
||||
//using is_const_buffer_sequence = __see_below__;
|
||||
using is_const_buffer_sequence = __see_below__;
|
||||
#else
|
||||
template<class... TN>
|
||||
using is_const_buffer_sequence = mp11::mp_all<
|
||||
net::is_const_buffer_sequence<
|
||||
typename std::decay<TN>::type>...>;
|
||||
typename std::decay<BufferSequence>::type>...>;
|
||||
#endif
|
||||
|
||||
/** Determine if a list of types satisfy the <em>MutableBufferSequence</em> requirements.
|
||||
@ -49,18 +47,16 @@ using is_const_buffer_sequence = mp11::mp_all<
|
||||
will be `std::true_type` if each specified type meets the requirements,
|
||||
otherwise, this type alias will be `std::false_type`.
|
||||
|
||||
@tparam TN A list of zero or more types to check. If this list is
|
||||
empty, the resulting type alias will be `std::true_type`.
|
||||
@tparam BufferSequence A list of zero or more types to check. If this
|
||||
list is empty, the resulting type alias will be `std::true_type`.
|
||||
*/
|
||||
template<class... BufferSequence>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class... TN>
|
||||
struct is_mutable_buffer_sequence : __see_below__ {};
|
||||
//using is_mutable_buffer_sequence = __see_below__;
|
||||
using is_mutable_buffer_sequence = __see_below__;
|
||||
#else
|
||||
template<class... TN>
|
||||
using is_mutable_buffer_sequence = mp11::mp_all<
|
||||
net::is_mutable_buffer_sequence<
|
||||
typename std::decay<TN>::type>...>;
|
||||
typename std::decay<BufferSequence>::type>...>;
|
||||
#endif
|
||||
|
||||
/** Type alias for the underlying buffer type of a list of buffer sequence types.
|
||||
@ -93,16 +89,15 @@ using is_mutable_buffer_sequence = mp11::mp_all<
|
||||
}
|
||||
@endcode
|
||||
|
||||
@tparam TN A list of zero or more types to check. If this list is
|
||||
empty, the resulting type alias will be `net::mutable_buffer`.
|
||||
@tparam BufferSequence A list of zero or more types to check. If this
|
||||
list is empty, the resulting type alias will be `net::mutable_buffer`.
|
||||
*/
|
||||
template<class... TN>
|
||||
template<class... BufferSequence>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
struct buffers_type : __see_below__ {};
|
||||
//using buffers_type = __see_below__;
|
||||
using buffers_type = __see_below__;
|
||||
#else
|
||||
using buffers_type = typename std::conditional<
|
||||
is_mutable_buffer_sequence<TN...>::value,
|
||||
is_mutable_buffer_sequence<BufferSequence...>::value,
|
||||
net::mutable_buffer, net::const_buffer>::type;
|
||||
#endif
|
||||
|
||||
@ -115,18 +110,17 @@ using buffers_type = typename std::conditional<
|
||||
type alias will be equal to the iterator type used by
|
||||
the buffer sequence.
|
||||
*/
|
||||
template <class T>
|
||||
template <class BufferSequence>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
struct buffers_iterator_type : __see_below__ {};
|
||||
//using buffers_iterator_type = __see_below__;
|
||||
using buffers_iterator_type = __see_below__;
|
||||
#elif BOOST_WORKAROUND(BOOST_MSVC, < 1910)
|
||||
using buffers_iterator_type = typename
|
||||
detail::buffers_iterator_type_helper<
|
||||
typename std::decay<T>::type>::type;
|
||||
typename std::decay<BufferSequence>::type>::type;
|
||||
#else
|
||||
using buffers_iterator_type =
|
||||
decltype(net::buffer_sequence_begin(
|
||||
std::declval<T const&>()));
|
||||
std::declval<BufferSequence const&>()));
|
||||
#endif
|
||||
|
||||
/** Return the total number of bytes in a buffer or buffer sequence
|
||||
@ -152,17 +146,14 @@ using buffers_iterator_type =
|
||||
In addition this handles types which are convertible to
|
||||
`net::const_buffer`; these are not handled by `net::buffer_size`.
|
||||
|
||||
@note It is expected that a future version of Networking will
|
||||
incorporate the features of this function.
|
||||
|
||||
@param buffers The buffer or buffer sequence to calculate the size of.
|
||||
|
||||
@return The total number of bytes in the buffer or sequence.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class Buffers>
|
||||
void
|
||||
buffer_bytes(Buffers const& buffers);
|
||||
template<class BufferSequence>
|
||||
std::size_t
|
||||
buffer_bytes(BufferSequence const& buffers);
|
||||
#else
|
||||
BOOST_BEAST_INLINE_VARIABLE(buffer_bytes, detail::buffer_bytes_impl)
|
||||
#endif
|
||||
|
@ -23,11 +23,11 @@
|
||||
namespace boost {
|
||||
namespace beast {
|
||||
|
||||
/** A @b Stream with attached @b DynamicBuffer to buffer reads.
|
||||
/** A <em>Stream</em> with attached <em>DynamicBuffer</em> to buffer reads.
|
||||
|
||||
This wraps a @b Stream implementation so that calls to write are
|
||||
This wraps a <em>Stream</em> 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 @b DynamicBuffer which
|
||||
first consume the input sequence stored in a <em>DynamicBuffer</em> which
|
||||
is part of the object.
|
||||
|
||||
The use-case for this class is different than that of the
|
||||
@ -250,14 +250,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // number of bytes transferred
|
||||
);
|
||||
@endcode
|
||||
|
||||
@endcode
|
||||
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
|
||||
@ -326,14 +324,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // number of bytes transferred
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
|
@ -170,7 +170,7 @@ public:
|
||||
|
||||
@throws std::length_error if `size() + n` exceeds `max_size()`.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Strong guarantee.
|
||||
*/
|
||||
@ -192,7 +192,7 @@ public:
|
||||
is greater than the number of writable bytes, all
|
||||
writable bytes are appended.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -210,7 +210,7 @@ public:
|
||||
is greater than the number of readable bytes, all
|
||||
readable bytes are removed.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
|
@ -20,7 +20,7 @@ namespace beast {
|
||||
|
||||
/** A buffer sequence representing a concatenation of buffer sequences.
|
||||
|
||||
@see @ref buffers_cat
|
||||
@see buffers_cat
|
||||
*/
|
||||
template<class... Buffers>
|
||||
class buffers_cat_view
|
||||
@ -85,7 +85,7 @@ public:
|
||||
also a <em>MutableBufferSequence</em>; otherwise the returned buffer
|
||||
sequence will be a <em>ConstBufferSequence</em>.
|
||||
|
||||
@see @ref buffers_cat_view
|
||||
@see buffers_cat_view
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class... BufferSequence>
|
||||
|
@ -51,7 +51,7 @@ namespace beast {
|
||||
sequence, the returned object will also meet the requirements of
|
||||
<em>MutableBufferSequence</em>.
|
||||
|
||||
@see @ref buffers_range_ref
|
||||
@see buffers_range_ref
|
||||
*/
|
||||
template<class BufferSequence>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
@ -104,7 +104,7 @@ buffers_range(BufferSequence const& buffers)
|
||||
sequence, the returned object will also meet the requirements of
|
||||
<em>MutableBufferSequence</em>.
|
||||
|
||||
@see @ref buffers_range
|
||||
@see buffers_range
|
||||
*/
|
||||
template<class BufferSequence>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
|
@ -198,7 +198,6 @@ read(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void
|
||||
handler(
|
||||
@ -211,7 +210,6 @@ read(
|
||||
// prior to the error.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
|
@ -22,7 +22,7 @@ namespace beast {
|
||||
/** An implementation of File.
|
||||
|
||||
This alias is set to the best available implementation
|
||||
of @b File given the platform and build settings.
|
||||
of <em>File</em> given the platform and build settings.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
struct file : file_stdio
|
||||
|
@ -35,7 +35,7 @@ append_existing write-only exclusive sequential must exist
|
||||
/** File open modes
|
||||
|
||||
These modes are used when opening files using
|
||||
instances of the @b File concept.
|
||||
instances of the <em>File</em> concept.
|
||||
|
||||
@see file_stdio
|
||||
*/
|
||||
@ -95,7 +95,7 @@ enum class file_mode
|
||||
append_existing
|
||||
};
|
||||
|
||||
/** Determine if `T` meets the requirements of @b File.
|
||||
/** Determine if `T` meets the requirements of <em>File</em>.
|
||||
|
||||
Metafunctions are used to perform compile time checking of template
|
||||
types. This type will be `std::true_type` if `T` meets the requirements,
|
||||
|
@ -37,7 +37,7 @@ namespace beast {
|
||||
|
||||
/** An implementation of File for POSIX systems.
|
||||
|
||||
This class implements a @b File using POSIX interfaces.
|
||||
This class implements a <em>File</em> using POSIX interfaces.
|
||||
*/
|
||||
class file_posix
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ namespace beast {
|
||||
|
||||
/** An implementation of File for Win32.
|
||||
|
||||
This class implements a @b File using Win32 native interfaces.
|
||||
This class implements a <em>File</em> using Win32 native interfaces.
|
||||
*/
|
||||
class file_win32
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ namespace beast {
|
||||
is provided to permit them to be efficiently used with
|
||||
I/O operations.
|
||||
|
||||
Objects of this type meet the requirements of @b DynamicBuffer
|
||||
Objects of this type meet the requirements of <em>DynamicBuffer</em>
|
||||
and have the following additional properties:
|
||||
|
||||
@li A mutable buffer sequence representing the readable
|
||||
@ -129,7 +129,7 @@ public:
|
||||
|
||||
@param alloc The allocator to use for the object.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -145,7 +145,7 @@ public:
|
||||
|
||||
@param alloc The allocator to use for the object.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -166,7 +166,7 @@ public:
|
||||
moved-from object will have zero capacity, zero readable
|
||||
bytes, and zero writable bytes.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -272,7 +272,7 @@ public:
|
||||
the moved-from object will have zero capacity, zero readable
|
||||
bytes, and zero writable bytes.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -326,7 +326,7 @@ public:
|
||||
|
||||
@param n The maximum number of bytes ever allowed for capacity.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -348,7 +348,7 @@ public:
|
||||
If this value is greater than the maximum size, then the
|
||||
maximum size will be adjusted upwards to this value.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Basic guarantee.
|
||||
|
||||
@ -363,7 +363,7 @@ public:
|
||||
Buffer sequences previously obtained using @ref data or
|
||||
@ref prepare become invalid.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Strong guarantee.
|
||||
*/
|
||||
@ -376,7 +376,7 @@ public:
|
||||
Buffer sequences previously obtained using @ref data or
|
||||
@ref prepare become invalid.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -459,7 +459,7 @@ public:
|
||||
@throws std::length_error if `size() + n` exceeds either
|
||||
`max_size()` or the allocator's maximum allocation size.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Strong guarantee.
|
||||
*/
|
||||
@ -480,7 +480,7 @@ public:
|
||||
is greater than the number of writable bytes, all
|
||||
writable bytes are appended.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -501,7 +501,7 @@ public:
|
||||
is greater than the number of readable bytes, all
|
||||
readable bytes are removed.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
|
@ -29,7 +29,7 @@ namespace beast {
|
||||
is provided to permit them to be efficiently used with
|
||||
I/O operations.
|
||||
|
||||
Objects of this type meet the requirements of @b DynamicBuffer
|
||||
Objects of this type meet the requirements of <em>DynamicBuffer</em>
|
||||
and have the following additional properties:
|
||||
|
||||
@li A mutable buffer sequence representing the readable
|
||||
@ -46,7 +46,7 @@ namespace beast {
|
||||
@ref flat_static_buffer; however, to reduce the number of template
|
||||
instantiations, objects should be passed `flat_static_buffer_base&`.
|
||||
|
||||
@see @ref flat_static_buffer
|
||||
@see flat_static_buffer
|
||||
*/
|
||||
class flat_static_buffer_base
|
||||
{
|
||||
@ -84,7 +84,7 @@ public:
|
||||
Buffer sequences previously obtained using @ref data or
|
||||
@ref prepare become invalid.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -175,7 +175,7 @@ public:
|
||||
|
||||
@throws std::length_error if `size() + n` exceeds `max_size()`.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Strong guarantee.
|
||||
*/
|
||||
@ -197,7 +197,7 @@ public:
|
||||
is greater than the number of writable bytes, all
|
||||
writable bytes are appended.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -218,7 +218,7 @@ public:
|
||||
is greater than the number of readable bytes, all
|
||||
readable bytes are removed.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -246,7 +246,7 @@ protected:
|
||||
|
||||
@param n The number of valid bytes pointed to by `p`.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -265,7 +265,7 @@ private:
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/** A @b DynamicBuffer with a fixed size internal buffer.
|
||||
/** A <em>DynamicBuffer</em> with a fixed size internal buffer.
|
||||
|
||||
Buffer sequences returned by @ref data and @ref prepare
|
||||
will always be of length one.
|
||||
@ -277,7 +277,7 @@ private:
|
||||
objects of this type in a deduced context, the signature of the
|
||||
receiving function should use @ref flat_static_buffer_base instead.
|
||||
|
||||
@see @ref flat_static_buffer_base
|
||||
@see flat_static_buffer_base
|
||||
*/
|
||||
template<std::size_t N>
|
||||
class flat_static_buffer : public flat_static_buffer_base
|
||||
|
@ -235,14 +235,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // Result of operation.
|
||||
std::size_t bytes_transferred // Number of bytes read.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -317,14 +315,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec, // Result of operation.
|
||||
std::size_t bytes_transferred // Number of bytes written.
|
||||
);
|
||||
@endcode
|
||||
|
||||
@endcode
|
||||
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
|
||||
|
@ -103,7 +103,7 @@ public:
|
||||
T::T(Handler const&, Args&&...)
|
||||
@endcode
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
Strong guarantee.
|
||||
|
||||
@param handler The handler to associate with the owned object.
|
||||
|
156
include/boost/beast/core/impl/async_base.hpp
Normal file
156
include/boost/beast/core/impl/async_base.hpp
Normal file
@ -0,0 +1,156 @@
|
||||
//
|
||||
// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// Official repository: https://github.com/boostorg/beast
|
||||
//
|
||||
|
||||
#ifndef BOOST_BEAST_CORE_IMPL_ASYNC_BASE_HPP
|
||||
#define BOOST_BEAST_CORE_IMPL_ASYNC_BASE_HPP
|
||||
|
||||
#include <boost/core/exchange.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace beast {
|
||||
|
||||
namespace detail {
|
||||
|
||||
template<class State, class Allocator>
|
||||
struct allocate_stable_state final
|
||||
: stable_base
|
||||
, boost::empty_value<Allocator>
|
||||
{
|
||||
State value;
|
||||
|
||||
template<class... Args>
|
||||
explicit
|
||||
allocate_stable_state(
|
||||
Allocator const& alloc,
|
||||
Args&&... args)
|
||||
: boost::empty_value<Allocator>(
|
||||
boost::empty_init_t{}, alloc)
|
||||
, value{std::forward<Args>(args)...}
|
||||
{
|
||||
}
|
||||
|
||||
void destroy() override
|
||||
{
|
||||
using A = typename allocator_traits<
|
||||
Allocator>::template rebind_alloc<
|
||||
allocate_stable_state>;
|
||||
|
||||
A a(this->get());
|
||||
detail::allocator_traits<A>::destroy(a, this);
|
||||
detail::allocator_traits<A>::deallocate(a, this, 1);
|
||||
}
|
||||
};
|
||||
|
||||
} // detail
|
||||
|
||||
template<
|
||||
class Handler,
|
||||
class Executor1,
|
||||
class Allocator,
|
||||
class Function>
|
||||
void asio_handler_invoke(
|
||||
Function&& f,
|
||||
async_base<Handler, Executor1, Allocator>* p)
|
||||
{
|
||||
using net::asio_handler_invoke;
|
||||
asio_handler_invoke(f,
|
||||
p->get_legacy_handler_pointer());
|
||||
}
|
||||
|
||||
template<
|
||||
class Handler,
|
||||
class Executor1,
|
||||
class Allocator>
|
||||
void*
|
||||
asio_handler_allocate(
|
||||
std::size_t size,
|
||||
async_base<Handler, Executor1, Allocator>* p)
|
||||
{
|
||||
using net::asio_handler_allocate;
|
||||
return asio_handler_allocate(size,
|
||||
p->get_legacy_handler_pointer());
|
||||
}
|
||||
|
||||
template<
|
||||
class Handler,
|
||||
class Executor1,
|
||||
class Allocator>
|
||||
void
|
||||
asio_handler_deallocate(
|
||||
void* mem, std::size_t size,
|
||||
async_base<Handler, Executor1, Allocator>* p)
|
||||
{
|
||||
using net::asio_handler_deallocate;
|
||||
asio_handler_deallocate(mem, size,
|
||||
p->get_legacy_handler_pointer());
|
||||
}
|
||||
|
||||
template<
|
||||
class Handler,
|
||||
class Executor1,
|
||||
class Allocator>
|
||||
bool
|
||||
asio_handler_is_continuation(
|
||||
async_base<Handler, Executor1, Allocator>* p)
|
||||
{
|
||||
using net::asio_handler_is_continuation;
|
||||
return asio_handler_is_continuation(
|
||||
p->get_legacy_handler_pointer());
|
||||
}
|
||||
|
||||
template<
|
||||
class State,
|
||||
class Handler,
|
||||
class Executor1,
|
||||
class Allocator,
|
||||
class... Args>
|
||||
State&
|
||||
allocate_stable(
|
||||
stable_async_base<
|
||||
Handler, Executor1, Allocator>& base,
|
||||
Args&&... args)
|
||||
{
|
||||
using allocator_type = typename stable_async_base<
|
||||
Handler, Executor1, Allocator>::allocator_type;
|
||||
|
||||
using A = typename detail::allocator_traits<
|
||||
allocator_type>::template rebind_alloc<
|
||||
detail::allocate_stable_state<
|
||||
State, allocator_type>>;
|
||||
|
||||
struct deleter
|
||||
{
|
||||
allocator_type alloc;
|
||||
detail::allocate_stable_state<
|
||||
State, allocator_type>* ptr;
|
||||
|
||||
~deleter()
|
||||
{
|
||||
if(ptr)
|
||||
{
|
||||
A a(alloc);
|
||||
detail::allocator_traits<A>::deallocate(a, ptr, 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
A a(base.get_allocator());
|
||||
deleter d{base.get_allocator(), nullptr};
|
||||
d.ptr = detail::allocator_traits<A>::allocate(a, 1);
|
||||
detail::allocator_traits<A>::construct(a, d.ptr,
|
||||
d.alloc, std::forward<Args>(args)...);
|
||||
d.ptr->next_ = base.list_;
|
||||
base.list_ = d.ptr;
|
||||
return boost::exchange(d.ptr, nullptr)->value;
|
||||
}
|
||||
|
||||
} // beast
|
||||
} // boost
|
||||
|
||||
#endif
|
@ -147,7 +147,7 @@ public:
|
||||
|
||||
@param alloc The allocator to use for the object.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -163,7 +163,7 @@ public:
|
||||
|
||||
@param alloc The allocator to use for the object.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -183,7 +183,7 @@ public:
|
||||
moved-from object will have zero capacity, zero readable
|
||||
bytes, and zero writable bytes.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -337,7 +337,7 @@ public:
|
||||
|
||||
@param n The maximum number of bytes ever allowed for capacity.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -363,7 +363,7 @@ public:
|
||||
@throws std::length_error if n is larger than the maximum
|
||||
allocation size of the allocator.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Strong guarantee.
|
||||
*/
|
||||
@ -375,7 +375,7 @@ public:
|
||||
Buffer sequences previously obtained using @ref data or
|
||||
@ref prepare become invalid.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Strong guarantee.
|
||||
*/
|
||||
@ -388,7 +388,7 @@ public:
|
||||
Buffer sequences previously obtained using @ref data or
|
||||
@ref prepare become invalid.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -477,7 +477,7 @@ public:
|
||||
|
||||
@throws std::length_error if `size() + n` exceeds `max_size()`.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Strong guarantee.
|
||||
*/
|
||||
@ -499,7 +499,7 @@ public:
|
||||
is greater than the number of writable bytes, all
|
||||
writable bytes are appended.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -517,7 +517,7 @@ public:
|
||||
is greater than the number of readable bytes, all
|
||||
readable bytes are removed.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
|
@ -23,9 +23,9 @@
|
||||
namespace boost {
|
||||
namespace beast {
|
||||
|
||||
/** Return an output stream that formats values into a @b DynamicBuffer.
|
||||
/** Return an output stream that formats values into a <em>DynamicBuffer</em>.
|
||||
|
||||
This function wraps the caller provided @b DynamicBuffer into
|
||||
This function wraps the caller provided <em>DynamicBuffer</em> into
|
||||
a `std::ostream` derived class, to allow `operator<<` stream style
|
||||
formatting operations.
|
||||
|
||||
@ -37,7 +37,7 @@ namespace beast {
|
||||
@note Calling members of the underlying buffer before the output
|
||||
stream is destroyed results in undefined behavior.
|
||||
|
||||
@param buffer An object meeting the requirements of @b DynamicBuffer
|
||||
@param buffer An object meeting the requirements of <em>DynamicBuffer</em>
|
||||
into which the formatted output will be placed.
|
||||
|
||||
@return An object derived from `std::ostream` which redirects output
|
||||
|
@ -17,7 +17,7 @@
|
||||
namespace boost {
|
||||
namespace beast {
|
||||
|
||||
/** Helper class to assist implementing a RatePolicy.
|
||||
/** Helper class to assist implementing a <em>RatePolicy</em>.
|
||||
|
||||
This class is used by the implementation to gain access to the
|
||||
private members of a user-defined object meeting the requirements
|
||||
@ -36,7 +36,7 @@ namespace beast {
|
||||
|
||||
@li <em>RatePolicy</em>
|
||||
|
||||
@see @ref beast::basic_stream
|
||||
@see beast::basic_stream
|
||||
*/
|
||||
class rate_policy_access
|
||||
{
|
||||
@ -145,7 +145,7 @@ class unlimited_rate_policy
|
||||
|
||||
@li <em>RatePolicy</em>
|
||||
|
||||
@see @ref beast::basic_stream
|
||||
@see beast::basic_stream
|
||||
*/
|
||||
class simple_rate_policy
|
||||
{
|
||||
|
@ -32,7 +32,7 @@ namespace beast {
|
||||
is provided to permit them to be efficiently used with
|
||||
I/O operations.
|
||||
|
||||
Objects of this type meet the requirements of @b DynamicBuffer
|
||||
Objects of this type meet the requirements of <em>DynamicBuffer</em>
|
||||
and have the following additional properties:
|
||||
|
||||
@li A mutable buffer sequence representing the readable
|
||||
@ -51,7 +51,7 @@ namespace beast {
|
||||
@ref static_buffer; however, to reduce the number of template
|
||||
instantiations, objects should be passed `static_buffer_base&`.
|
||||
|
||||
@see @ref static_buffer
|
||||
@see static_buffer
|
||||
*/
|
||||
class static_buffer_base
|
||||
{
|
||||
@ -84,7 +84,7 @@ public:
|
||||
Buffer sequences previously obtained using @ref data or
|
||||
@ref prepare become invalid.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -161,7 +161,7 @@ public:
|
||||
|
||||
@throws std::length_error if `size() + n` exceeds `max_size()`.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
Strong guarantee.
|
||||
*/
|
||||
@ -183,7 +183,7 @@ public:
|
||||
is greater than the number of writable bytes, all
|
||||
writable bytes are appended.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -202,7 +202,7 @@ public:
|
||||
is greater than the number of readable bytes, all
|
||||
readable bytes are removed.
|
||||
|
||||
@par Exception Safety
|
||||
@esafe
|
||||
|
||||
No-throw guarantee.
|
||||
*/
|
||||
@ -223,7 +223,7 @@ public:
|
||||
is provided to permit them to be efficiently used with
|
||||
I/O operations.
|
||||
|
||||
Objects of this type meet the requirements of @b DynamicBuffer
|
||||
Objects of this type meet the requirements of <em>DynamicBuffer</em>
|
||||
and have the following additional properties:
|
||||
|
||||
@li A mutable buffer sequence representing the readable
|
||||
@ -241,7 +241,7 @@ public:
|
||||
objects of this type in a deduced context, the signature of the
|
||||
receiving function should use @ref static_buffer_base instead.
|
||||
|
||||
@see @ref static_buffer_base
|
||||
@see static_buffer_base
|
||||
*/
|
||||
template<std::size_t N>
|
||||
class static_buffer : public static_buffer_base
|
||||
|
@ -35,7 +35,7 @@ namespace beast {
|
||||
|
||||
@note The stored string is always null-terminated.
|
||||
|
||||
@see @ref to_static_string
|
||||
@see to_static_string
|
||||
*/
|
||||
template<
|
||||
std::size_t N,
|
||||
|
@ -79,7 +79,7 @@ using lowest_layer_type = detail::lowest_layer_type<T>;
|
||||
|
||||
@param t The layer in a stack of layered objects for which the lowest layer is returned.
|
||||
|
||||
@see @ref close_socket, @ref lowest_layer_type
|
||||
@see close_socket, lowest_layer_type
|
||||
*/
|
||||
template<class T>
|
||||
lowest_layer_type<T>&
|
||||
@ -163,7 +163,7 @@ using executor_type =
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct has_get_executor : std::integral_constant<bool, ...>{};
|
||||
using has_get_executor = __see_below__;
|
||||
#else
|
||||
template<class T, class = void>
|
||||
struct has_get_executor : std::false_type {};
|
||||
@ -175,16 +175,14 @@ struct has_get_executor<T, boost::void_t<decltype(
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/** Determine if `T` meets the requirements of @b SyncReadStream.
|
||||
/** Determine if at type meets the requirements of <em>SyncReadStream</em>.
|
||||
|
||||
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`.
|
||||
|
||||
@par Example
|
||||
|
||||
Use with `static_assert`:
|
||||
|
||||
@code
|
||||
template<class SyncReadStream>
|
||||
void f(SyncReadStream& stream)
|
||||
@ -195,7 +193,6 @@ struct has_get_executor<T, boost::void_t<decltype(
|
||||
@endcode
|
||||
|
||||
Use with `std::enable_if` (SFINAE):
|
||||
|
||||
@code
|
||||
template<class SyncReadStream>
|
||||
typename std::enable_if<is_sync_read_stream<SyncReadStream>::value>::type
|
||||
@ -204,7 +201,7 @@ struct has_get_executor<T, boost::void_t<decltype(
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_sync_read_stream : std::integral_constant<bool, ...>{};
|
||||
using is_sync_read_stream = __see_below__;
|
||||
#else
|
||||
template<class T, class = void>
|
||||
struct is_sync_read_stream : std::false_type {};
|
||||
@ -219,7 +216,7 @@ struct is_sync_read_stream<T, boost::void_t<decltype(
|
||||
)>> : std::true_type {};
|
||||
#endif
|
||||
|
||||
/** Determine if `T` meets the requirements of @b SyncWriteStream.
|
||||
/** Determine if `T` meets the requirements of <em>SyncWriteStream</em>.
|
||||
|
||||
Metafunctions are used to perform compile time checking of template
|
||||
types. This type will be `std::true_type` if `T` meets the requirements,
|
||||
@ -248,7 +245,7 @@ struct is_sync_read_stream<T, boost::void_t<decltype(
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_sync_write_stream : std::integral_constant<bool, ...>{};
|
||||
using is_sync_write_stream = __see_below__;
|
||||
#else
|
||||
template<class T, class = void>
|
||||
struct is_sync_write_stream : std::false_type {};
|
||||
@ -293,7 +290,7 @@ struct is_sync_write_stream<T, boost::void_t<decltype(
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_sync_stream : std::integral_constant<bool, ...>{};
|
||||
using is_sync_stream = __see_below__;
|
||||
#else
|
||||
template<class T>
|
||||
using is_sync_stream = std::integral_constant<bool,
|
||||
@ -302,7 +299,7 @@ using is_sync_stream = std::integral_constant<bool,
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/** Determine if `T` meets the requirements of @b AsyncReadStream.
|
||||
/** Determine if `T` meets the requirements of <em>AsyncReadStream</em>.
|
||||
|
||||
Metafunctions are used to perform compile time checking of template
|
||||
types. This type will be `std::true_type` if `T` meets the requirements,
|
||||
@ -331,7 +328,7 @@ using is_sync_stream = std::integral_constant<bool,
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_async_read_stream : std::integral_constant<bool, ...>{};
|
||||
using is_async_read_stream = __see_below__;
|
||||
#else
|
||||
template<class T, class = void>
|
||||
struct is_async_read_stream : std::false_type {};
|
||||
@ -346,7 +343,7 @@ struct is_async_read_stream<T, boost::void_t<decltype(
|
||||
> {};
|
||||
#endif
|
||||
|
||||
/** Determine if `T` meets the requirements of @b AsyncWriteStream.
|
||||
/** Determine if `T` meets the requirements of <em>AsyncWriteStream</em>.
|
||||
|
||||
Metafunctions are used to perform compile time checking of template
|
||||
types. This type will be `std::true_type` if `T` meets the requirements,
|
||||
@ -375,7 +372,7 @@ struct is_async_read_stream<T, boost::void_t<decltype(
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_async_write_stream : std::integral_constant<bool, ...>{};
|
||||
using is_async_write_stream = __see_below__;
|
||||
#else
|
||||
template<class T, class = void>
|
||||
struct is_async_write_stream : std::false_type {};
|
||||
@ -419,7 +416,7 @@ struct is_async_write_stream<T, boost::void_t<decltype(
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_async_stream : std::integral_constant<bool, ...>{};
|
||||
using is_async_stream = __see_below__;
|
||||
#else
|
||||
template<class T>
|
||||
using is_async_stream = std::integral_constant<bool,
|
||||
|
@ -23,12 +23,14 @@ BOOST_PRAGMA_MESSAGE("<boost/beast/core/type_traits.hpp> is DEPRECATED and will
|
||||
namespace boost {
|
||||
namespace beast {
|
||||
|
||||
/** Determine if `T` meets the requirements of @b CompletionHandler.
|
||||
/** Determine if `T` meets the requirements of <em>CompletionHandler</em>.
|
||||
|
||||
This trait checks whether a type meets the requirements for a completion
|
||||
handler, and is also callable with the specified signature.
|
||||
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`.
|
||||
|
||||
@par Example
|
||||
Use with `static_assert`:
|
||||
@code
|
||||
@ -42,7 +44,7 @@ namespace beast {
|
||||
*/
|
||||
template<class T, class Signature>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using is_completion_handler = std::integral_constant<bool, ...>;
|
||||
using is_completion_handler = __see_below__
|
||||
#else
|
||||
using is_completion_handler = std::integral_constant<bool,
|
||||
std::is_move_constructible<typename std::decay<T>::type>::value &&
|
||||
|
@ -24,9 +24,9 @@ namespace boost {
|
||||
namespace beast {
|
||||
namespace http {
|
||||
|
||||
/** A @b Body using a @b DynamicBuffer
|
||||
/** A <em>Body</em> using a <em>DynamicBuffer</em>
|
||||
|
||||
This body uses a @b DynamicBuffer as a memory-based container
|
||||
This body uses a <em>DynamicBuffer</em> as a memory-based container
|
||||
for holding message payloads. Messages using this body type
|
||||
may be serialized and parsed.
|
||||
*/
|
||||
@ -59,7 +59,7 @@ struct basic_dynamic_body
|
||||
|
||||
/** The algorithm for parsing the body
|
||||
|
||||
Meets the requirements of @b BodyReader.
|
||||
Meets the requirements of <em>BodyReader</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using reader = __implementation_defined__;
|
||||
@ -117,7 +117,7 @@ struct basic_dynamic_body
|
||||
|
||||
/** The algorithm for serializing the body
|
||||
|
||||
Meets the requirements of @b BodyWriter.
|
||||
Meets the requirements of <em>BodyWriter</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using writer = __implementation_defined__;
|
||||
|
@ -38,7 +38,7 @@ namespace http {
|
||||
content from a directory as part of a web service.
|
||||
|
||||
@tparam File The implementation to use for accessing files.
|
||||
This type must meet the requirements of @b File.
|
||||
This type must meet the requirements of <em>File</em>.
|
||||
*/
|
||||
template<class File>
|
||||
struct basic_file_body
|
||||
|
@ -377,7 +377,7 @@ public:
|
||||
the parser may not be restarted.
|
||||
|
||||
@param buffers An object meeting the requirements of
|
||||
@b ConstBufferSequence that represents the next chunk of
|
||||
<em>ConstBufferSequence</em> 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 @ref beast::basic_flat_buffer is provided as one way to
|
||||
|
@ -23,7 +23,7 @@ namespace boost {
|
||||
namespace beast {
|
||||
namespace http {
|
||||
|
||||
/** A @b Body using a caller provided buffer
|
||||
/** A <em>Body</em> using a caller provided buffer
|
||||
|
||||
Messages using this body type may be serialized and parsed.
|
||||
To use this class, the caller must initialize the members
|
||||
@ -94,7 +94,7 @@ struct buffer_body
|
||||
|
||||
/** The algorithm for parsing the body
|
||||
|
||||
Meets the requirements of @b BodyReader.
|
||||
Meets the requirements of <em>BodyReader</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using reader = __implementation_defined__;
|
||||
@ -150,7 +150,7 @@ struct buffer_body
|
||||
|
||||
/** The algorithm for serializing the body
|
||||
|
||||
Meets the requirements of @b BodyWriter.
|
||||
Meets the requirements of <em>BodyWriter</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using writer = __implementation_defined__;
|
||||
|
@ -25,7 +25,7 @@ namespace http {
|
||||
|
||||
/** A chunked encoding crlf
|
||||
|
||||
This implements a @b ConstBufferSequence holding the CRLF
|
||||
This implements a <em>ConstBufferSequence</em> holding the CRLF
|
||||
(`"\r\n"`) used as a delimiter in a @em chunk.
|
||||
|
||||
To use this class, pass an instance of it to a
|
||||
@ -44,20 +44,20 @@ struct chunk_crlf
|
||||
|
||||
//-----
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using value_type = __implementation_defined__;
|
||||
#else
|
||||
using value_type = net::const_buffer;
|
||||
#endif
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
using const_iterator = value_type const*;
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
chunk_crlf(chunk_crlf const&) = default;
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
const_iterator
|
||||
begin() const
|
||||
{
|
||||
@ -65,7 +65,7 @@ struct chunk_crlf
|
||||
return &cb;
|
||||
}
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
const_iterator
|
||||
end() const
|
||||
{
|
||||
@ -77,7 +77,7 @@ struct chunk_crlf
|
||||
|
||||
/** A @em chunk header
|
||||
|
||||
This implements a @b ConstBufferSequence representing the
|
||||
This implements a <em>ConstBufferSequence</em> representing the
|
||||
header of a @em chunk. The serialized format is as follows:
|
||||
@code
|
||||
chunk-header = 1*HEXDIG chunk-ext CRLF
|
||||
@ -228,31 +228,31 @@ public:
|
||||
|
||||
//-----
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using value_type = __implementation_defined__;
|
||||
#else
|
||||
using value_type = typename view_type::value_type;
|
||||
#endif
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using const_iterator = __implementation_defined__;
|
||||
#else
|
||||
using const_iterator = typename view_type::const_iterator;
|
||||
#endif
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
chunk_header(chunk_header const&) = default;
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
const_iterator
|
||||
begin() const
|
||||
{
|
||||
return view_.begin();
|
||||
}
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
const_iterator
|
||||
end() const
|
||||
{
|
||||
@ -264,7 +264,7 @@ public:
|
||||
|
||||
/** A @em chunk
|
||||
|
||||
This implements a @b ConstBufferSequence representing
|
||||
This implements a <em>ConstBufferSequence</em> representing
|
||||
a @em chunk. The serialized format is as follows:
|
||||
@code
|
||||
chunk = chunk-size [ chunk-ext ] CRLF chunk-data CRLF
|
||||
@ -422,28 +422,28 @@ public:
|
||||
|
||||
//-----
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using value_type = __implementation_defined__;
|
||||
#else
|
||||
using value_type = typename view_type::value_type;
|
||||
#endif
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using const_iterator = __implementation_defined__;
|
||||
#else
|
||||
using const_iterator = typename view_type::const_iterator;
|
||||
#endif
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
const_iterator
|
||||
begin() const
|
||||
{
|
||||
return view_.begin();
|
||||
}
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
const_iterator
|
||||
end() const
|
||||
{
|
||||
@ -524,10 +524,10 @@ public:
|
||||
|
||||
//-----
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
chunk_last(chunk_last const&) = default;
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using value_type = __implementation_defined__;
|
||||
#else
|
||||
@ -535,7 +535,7 @@ public:
|
||||
typename view_type::value_type;
|
||||
#endif
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using const_iterator = __implementation_defined__;
|
||||
#else
|
||||
@ -543,14 +543,14 @@ public:
|
||||
typename view_type::const_iterator;
|
||||
#endif
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
const_iterator
|
||||
begin() const
|
||||
{
|
||||
return view_.begin();
|
||||
}
|
||||
|
||||
/// Required for @b ConstBufferSequence
|
||||
/// Required for <em>ConstBufferSequence</em>
|
||||
const_iterator
|
||||
end() const
|
||||
{
|
||||
|
@ -80,7 +80,7 @@ struct has_value_type<T, beast::detail::void_t<
|
||||
typename T::value_type
|
||||
> > : std::true_type {};
|
||||
|
||||
/** Determine if a @b Body type has a size
|
||||
/** Determine if a <em>Body</em> type has a size
|
||||
|
||||
This metafunction is equivalent to `std::true_type` if
|
||||
Body contains a static member function called `size`.
|
||||
|
@ -19,7 +19,7 @@ namespace http {
|
||||
|
||||
/** A dynamic message body represented by a @ref multi_buffer
|
||||
|
||||
Meets the requirements of @b Body.
|
||||
Meets the requirements of <em>Body</em>.
|
||||
*/
|
||||
using dynamic_body = basic_dynamic_body<multi_buffer>;
|
||||
|
||||
|
@ -19,7 +19,7 @@ namespace boost {
|
||||
namespace beast {
|
||||
namespace http {
|
||||
|
||||
/** An empty @b Body
|
||||
/** An empty <em>Body</em>
|
||||
|
||||
This body is used to represent messages which do not have a
|
||||
message body. If this body is used with a parser, and the
|
||||
@ -54,7 +54,7 @@ struct empty_body
|
||||
|
||||
/** The algorithm for parsing the body
|
||||
|
||||
Meets the requirements of @b BodyReader.
|
||||
Meets the requirements of <em>BodyReader</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using reader = __implementation_defined__;
|
||||
@ -92,7 +92,7 @@ struct empty_body
|
||||
|
||||
/** The algorithm for serializing the body
|
||||
|
||||
Meets the requirements of @b BodyWriter.
|
||||
Meets the requirements of <em>BodyWriter</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using writer = __implementation_defined__;
|
||||
|
@ -51,7 +51,7 @@ enum class error
|
||||
octets into a message container which has the
|
||||
@ref empty_body body type.
|
||||
|
||||
@see @ref empty_body
|
||||
@see empty_body
|
||||
*/
|
||||
unexpected_body,
|
||||
|
||||
|
@ -45,10 +45,9 @@ namespace http {
|
||||
is iterated the fields are presented in the order of insertion, with
|
||||
fields having the same name following each other consecutively.
|
||||
|
||||
Meets the requirements of @b Fields
|
||||
Meets the requirements of <em>Fields</em>
|
||||
|
||||
@tparam Allocator The allocator to use. This must meet the
|
||||
requirements of @b Allocator.
|
||||
@tparam Allocator The allocator to use.
|
||||
*/
|
||||
template<class Allocator>
|
||||
class basic_fields
|
||||
|
@ -129,7 +129,7 @@ public:
|
||||
|
||||
@note This function is only available when `isRequest == true`.
|
||||
|
||||
@see @ref method_string
|
||||
@see method_string
|
||||
*/
|
||||
verb
|
||||
method() const;
|
||||
@ -152,7 +152,7 @@ public:
|
||||
|
||||
@note This function is only available when `isRequest == true`.
|
||||
|
||||
@see @ref method
|
||||
@see method
|
||||
*/
|
||||
string_view
|
||||
method_string() const;
|
||||
@ -824,7 +824,7 @@ public:
|
||||
|
||||
/** Returns the payload size of the body in octets if possible.
|
||||
|
||||
This function invokes the @b Body algorithm to measure
|
||||
This function invokes the <em>Body</em> 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`
|
||||
|
@ -35,7 +35,7 @@ namespace http {
|
||||
will be parsed.
|
||||
|
||||
@tparam Body The type used to represent the body. This must
|
||||
meet the requirements of @b Body.
|
||||
meet the requirements of <em>Body</em>.
|
||||
|
||||
@tparam Allocator The type of allocator used with the
|
||||
@ref basic_fields container.
|
||||
@ -120,7 +120,7 @@ public:
|
||||
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 @b BodyReader, otherwise an exception is generated.
|
||||
initialized <em>BodyReader</em>, otherwise an exception is generated.
|
||||
|
||||
@par Example
|
||||
@code
|
||||
|
@ -185,14 +185,12 @@ read_some(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the total number of bytes transferred from the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -378,14 +376,12 @@ read_header(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the total number of bytes transferred from the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -573,14 +569,12 @@ read(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the total number of bytes transferred from the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -777,14 +771,12 @@ read(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the total number of bytes transferred from the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
|
@ -65,7 +65,7 @@ public:
|
||||
/** The type of message this serializer uses
|
||||
|
||||
This may be const or non-const depending on the
|
||||
implementation of the corresponding @b BodyWriter.
|
||||
implementation of the corresponding <em>BodyWriter</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using value_type = __implementation_defined__;
|
||||
@ -294,7 +294,7 @@ public:
|
||||
/** Returns the next set of buffers in the serialization.
|
||||
|
||||
This function will attempt to call the `visit` function
|
||||
object with a @b ConstBufferSequence of unspecified type
|
||||
object with a <em>ConstBufferSequence</em> of unspecified type
|
||||
representing the next set of buffers in the serialization
|
||||
of the message represented by this object.
|
||||
|
||||
@ -336,7 +336,7 @@ public:
|
||||
void
|
||||
consume(std::size_t n);
|
||||
|
||||
/** Provides low-level access to the associated @b BodyWriter
|
||||
/** Provides low-level access to the associated <em>BodyWriter</em>
|
||||
|
||||
This function provides access to the instance of the writer
|
||||
associated with the body and created by the serializer
|
||||
|
@ -21,7 +21,7 @@ namespace boost {
|
||||
namespace beast {
|
||||
namespace http {
|
||||
|
||||
/** A @b Body using @ref span
|
||||
/** A <em>Body</em> using @ref span
|
||||
|
||||
This body uses @ref span as a memory-based container for
|
||||
holding message payloads. The container represents a
|
||||
@ -62,7 +62,7 @@ public:
|
||||
|
||||
/** The algorithm for parsing the body
|
||||
|
||||
Meets the requirements of @b BodyReader.
|
||||
Meets the requirements of <em>BodyReader</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using reader = __implementation_defined__;
|
||||
@ -121,7 +121,7 @@ public:
|
||||
|
||||
/** The algorithm for serializing the body
|
||||
|
||||
Meets the requirements of @b BodyWriter.
|
||||
Meets the requirements of <em>BodyWriter</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using writer = __implementation_defined__;
|
||||
|
@ -30,7 +30,7 @@ namespace boost {
|
||||
namespace beast {
|
||||
namespace http {
|
||||
|
||||
/** A @b Body using `std::basic_string`
|
||||
/** A <em>Body</em> using `std::basic_string`
|
||||
|
||||
This body uses `std::basic_string` as a memory-based container
|
||||
for holding message payloads. Messages using this body type
|
||||
@ -72,7 +72,7 @@ public:
|
||||
|
||||
/** The algorithm for parsing the body
|
||||
|
||||
Meets the requirements of @b BodyReader.
|
||||
Meets the requirements of <em>BodyReader</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using reader = __implementation_defined__;
|
||||
@ -140,7 +140,7 @@ public:
|
||||
|
||||
/** The algorithm for serializing the body
|
||||
|
||||
Meets the requirements of @b BodyWriter.
|
||||
Meets the requirements of <em>BodyWriter</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using writer = __implementation_defined__;
|
||||
@ -177,7 +177,7 @@ public:
|
||||
#endif
|
||||
};
|
||||
|
||||
/// A @b Body using `std::string`
|
||||
/// A <em>Body</em> using `std::string`
|
||||
using string_body = basic_string_body<char>;
|
||||
|
||||
} // http
|
||||
|
@ -26,12 +26,12 @@ namespace http {
|
||||
template<bool, class, class>
|
||||
class message;
|
||||
|
||||
/** Determine if `T` meets the requirements of @b Body.
|
||||
/** Determine if a type meets the <em>Body</em> named requirements.
|
||||
|
||||
This metafunction is equivalent to `std::true_type`
|
||||
if `T` has a nested type named `value_type`.
|
||||
This alias template is `std::true_type` if `T` meets
|
||||
the requirements, otherwise it is `std::false_type`.
|
||||
|
||||
@tparam T The body type to test.
|
||||
@tparam T The type to test.
|
||||
|
||||
@par Example
|
||||
@code
|
||||
@ -45,18 +45,18 @@ class message;
|
||||
*/
|
||||
template<class T>
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
struct is_body : std::integral_constant<bool, ...>{};
|
||||
using is_body = __see_below__;
|
||||
#else
|
||||
using is_body = detail::has_value_type<T>;
|
||||
#endif
|
||||
|
||||
/** Determine if a @b Body type has a reader.
|
||||
/** Determine if a type has a nested <em>BodyWriter</em>.
|
||||
|
||||
This metafunction is equivalent to `std::true_type` if:
|
||||
This alias template is `std::true_type` when:
|
||||
|
||||
@li `T` has a nested type named `reader`
|
||||
@li `T` has a nested type named `writer`
|
||||
|
||||
@li The nested type meets the requirements of @b BodyWriter.
|
||||
@li `writer` meets the requirements of <em>BodyWriter</em>.
|
||||
|
||||
@tparam T The body type to test.
|
||||
|
||||
@ -72,7 +72,7 @@ using is_body = detail::has_value_type<T>;
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_body_writer : std::integral_constant<bool, ...> {};
|
||||
using is_body_writer = __see_below__;
|
||||
#else
|
||||
template<class T, class = void>
|
||||
struct is_body_writer : std::false_type {};
|
||||
@ -99,11 +99,19 @@ struct is_body_writer<T, beast::detail::void_t<
|
||||
> {};
|
||||
#endif
|
||||
|
||||
/** Returns true if the writer for a @b Body mutates the body container.
|
||||
/** Determine if a type has a nested <em>BodyWriter</em>.
|
||||
|
||||
This alias template is `std::true_type` when:
|
||||
|
||||
@li `T` has a nested type named `writer`
|
||||
|
||||
@li `writer` meets the requirements of <em>BodyWriter</em>.
|
||||
|
||||
@tparam T The body type to test.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_mutable_body_writer : std::integral_constant<bool, ...> {};
|
||||
using is_mutable_body_writer = __see_below__;
|
||||
#else
|
||||
template<class T, class = void>
|
||||
struct is_mutable_body_writer : std::false_type {};
|
||||
@ -136,13 +144,13 @@ struct is_mutable_body_writer<T, beast::detail::void_t<
|
||||
>{};
|
||||
#endif
|
||||
|
||||
/** Determine if a @b Body type has a reader.
|
||||
/** Determine if a type has a nested <em>BodyReader</em>.
|
||||
|
||||
This metafunction is equivalent to `std::true_type` if:
|
||||
This alias template is `std::true_type` when:
|
||||
|
||||
@li `T` has a nested type named `reader`
|
||||
|
||||
@li The nested type meets the requirements of @b BodyReader.
|
||||
@li `reader` meets the requirements of <em>BodyReader</em>.
|
||||
|
||||
@tparam T The body type to test.
|
||||
|
||||
@ -158,7 +166,7 @@ struct is_mutable_body_writer<T, beast::detail::void_t<
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_body_reader : std::integral_constant<bool, ...> {};
|
||||
using is_body_reader = __see_below__;
|
||||
#else
|
||||
template<class T, class = void>
|
||||
struct is_body_reader : std::false_type {};
|
||||
@ -186,14 +194,15 @@ struct is_body_reader<T, beast::detail::void_t<decltype(
|
||||
};
|
||||
#endif
|
||||
|
||||
/** Determine if `T` meets the requirements of @b Fields
|
||||
/** Determine if a type meets the <em>Fields</em> named requirements.
|
||||
|
||||
@tparam T The body type to test.
|
||||
This alias template is `std::true_type` if `T` meets
|
||||
the requirements, otherwise it is `std::false_type`.
|
||||
|
||||
@tparam T The type to test.
|
||||
|
||||
@par Example
|
||||
|
||||
Use with `static_assert`:
|
||||
|
||||
@code
|
||||
template<bool isRequest, class Body, class Fields>
|
||||
void f(message<isRequest, Body, Fields> const&)
|
||||
@ -204,7 +213,6 @@ struct is_body_reader<T, beast::detail::void_t<decltype(
|
||||
@endcode
|
||||
|
||||
Use with `std::enable_if` (SFINAE):
|
||||
|
||||
@code
|
||||
template<bool isRequest, class Body, class Fields>
|
||||
typename std::enable_if<is_fields<Fields>::value>::type
|
||||
@ -213,7 +221,7 @@ struct is_body_reader<T, beast::detail::void_t<decltype(
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
template<class T>
|
||||
struct is_fields : std::integral_constant<bool, ...> {};
|
||||
using is_fields = __see_below__;
|
||||
#else
|
||||
template<class T>
|
||||
using is_fields = typename detail::is_fields_helper<T>::type;
|
||||
|
@ -29,7 +29,7 @@ namespace boost {
|
||||
namespace beast {
|
||||
namespace http {
|
||||
|
||||
/** A @b Body using `std::vector`
|
||||
/** A <em>Body</em> using `std::vector`
|
||||
|
||||
This body uses `std::vector` as a memory-based container
|
||||
for holding message payloads. Messages using this body type
|
||||
@ -66,7 +66,7 @@ public:
|
||||
|
||||
/** The algorithm for parsing the body
|
||||
|
||||
Meets the requirements of @b BodyReader.
|
||||
Meets the requirements of <em>BodyReader</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using reader = __implementation_defined__;
|
||||
@ -128,7 +128,7 @@ public:
|
||||
|
||||
/** The algorithm for serializing the body
|
||||
|
||||
Meets the requirements of @b BodyWriter.
|
||||
Meets the requirements of <em>BodyWriter</em>.
|
||||
*/
|
||||
#if BOOST_BEAST_DOXYGEN
|
||||
using writer = __implementation_defined__;
|
||||
|
@ -55,7 +55,7 @@ namespace http {
|
||||
stream.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
|
||||
@ -97,7 +97,7 @@ write_some(
|
||||
stream.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
|
||||
@ -105,7 +105,7 @@ write_some(
|
||||
|
||||
@return The number of bytes written to the stream.
|
||||
|
||||
@see @ref async_write_some, @ref serializer
|
||||
@see async_write_some, serializer
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -143,7 +143,7 @@ write_some(
|
||||
stream.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b AsyncWriteStream concept.
|
||||
The type must support the <em>AsyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
The object must remain valid at least until the
|
||||
@ -153,20 +153,18 @@ write_some(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the number of bytes written to the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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`.
|
||||
|
||||
@see @ref serializer
|
||||
@see serializer
|
||||
*/
|
||||
template<
|
||||
class AsyncWriteStream,
|
||||
@ -194,7 +192,7 @@ async_write_some(
|
||||
to the stream's `write_some` function.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
|
||||
@ -205,7 +203,7 @@ async_write_some(
|
||||
@note The implementation will call @ref serializer::split with
|
||||
the value `true` on the serializer passed in.
|
||||
|
||||
@see @ref serializer
|
||||
@see serializer
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -229,7 +227,7 @@ write_header(
|
||||
to the stream's `write_some` function.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
|
||||
@ -240,7 +238,7 @@ write_header(
|
||||
@note The implementation will call @ref serializer::split with
|
||||
the value `true` on the serializer passed in.
|
||||
|
||||
@see @ref serializer
|
||||
@see serializer
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -268,7 +266,7 @@ write_header(
|
||||
until this operation completes.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b AsyncWriteStream concept.
|
||||
The type must support the <em>AsyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
The object must remain valid at least until the
|
||||
@ -278,14 +276,12 @@ write_header(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the number of bytes written to the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -294,7 +290,7 @@ write_header(
|
||||
@note The implementation will call @ref serializer::split with
|
||||
the value `true` on the serializer passed in.
|
||||
|
||||
@see @ref serializer
|
||||
@see serializer
|
||||
*/
|
||||
template<
|
||||
class AsyncWriteStream,
|
||||
@ -322,7 +318,7 @@ async_write_header(
|
||||
to the stream's `write_some` function.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
|
||||
@ -330,7 +326,7 @@ async_write_header(
|
||||
|
||||
@throws system_error Thrown on failure.
|
||||
|
||||
@see @ref serializer
|
||||
@see serializer
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -354,7 +350,7 @@ write(
|
||||
to the stream's `write_some` function.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
|
||||
@ -362,7 +358,7 @@ write(
|
||||
|
||||
@return The number of bytes written to the stream.
|
||||
|
||||
@see @ref serializer
|
||||
@see serializer
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -390,7 +386,7 @@ write(
|
||||
until this operation completes.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b AsyncWriteStream concept.
|
||||
The type must support the <em>AsyncWriteStream</em> concept.
|
||||
|
||||
@param sr The serializer to use.
|
||||
The object must remain valid at least until the
|
||||
@ -400,20 +396,18 @@ write(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the number of bytes written to the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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`.
|
||||
|
||||
@see @ref serializer
|
||||
@see serializer
|
||||
*/
|
||||
template<
|
||||
class AsyncWriteStream,
|
||||
@ -441,10 +435,10 @@ async_write(
|
||||
with an empty chunk decorator to produce buffers.
|
||||
|
||||
@note This function only participates in overload resolution
|
||||
if @ref is_mutable_body_writer for @b Body returns `true`.
|
||||
if @ref is_mutable_body_writer for <em>Body</em> returns `true`.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param msg The message to write.
|
||||
|
||||
@ -452,7 +446,7 @@ async_write(
|
||||
|
||||
@throws system_error Thrown on failure.
|
||||
|
||||
@see @ref message
|
||||
@see message
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -482,10 +476,10 @@ write(
|
||||
with an empty chunk decorator to produce buffers.
|
||||
|
||||
@note This function only participates in overload resolution
|
||||
if @ref is_mutable_body_writer for @b Body returns `false`.
|
||||
if @ref is_mutable_body_writer for <em>Body</em> returns `false`.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param msg The message to write.
|
||||
|
||||
@ -493,7 +487,7 @@ write(
|
||||
|
||||
@throws system_error Thrown on failure.
|
||||
|
||||
@see @ref message
|
||||
@see message
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -523,10 +517,10 @@ write(
|
||||
with an empty chunk decorator to produce buffers.
|
||||
|
||||
@note This function only participates in overload resolution
|
||||
if @ref is_mutable_body_writer for @b Body returns `true`.
|
||||
if @ref is_mutable_body_writer for <em>Body</em> returns `true`.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param msg The message to write.
|
||||
|
||||
@ -534,7 +528,7 @@ write(
|
||||
|
||||
@return The number of bytes written to the stream.
|
||||
|
||||
@see @ref message
|
||||
@see message
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -565,10 +559,10 @@ write(
|
||||
with an empty chunk decorator to produce buffers.
|
||||
|
||||
@note This function only participates in overload resolution
|
||||
if @ref is_mutable_body_writer for @b Body returns `false`.
|
||||
if @ref is_mutable_body_writer for <em>Body</em> returns `false`.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b SyncWriteStream concept.
|
||||
The type must support the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param msg The message to write.
|
||||
|
||||
@ -576,7 +570,7 @@ write(
|
||||
|
||||
@return The number of bytes written to the stream.
|
||||
|
||||
@see @ref message
|
||||
@see message
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
@ -610,10 +604,10 @@ write(
|
||||
@ref serializer with an empty chunk decorator to produce buffers.
|
||||
|
||||
@note This function only participates in overload resolution
|
||||
if @ref is_mutable_body_writer for @b Body returns `true`.
|
||||
if @ref is_mutable_body_writer for <em>Body</em> returns `true`.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b AsyncWriteStream concept.
|
||||
The type must support the <em>AsyncWriteStream</em> concept.
|
||||
|
||||
@param msg The message to write.
|
||||
The object must remain valid at least until the
|
||||
@ -623,20 +617,18 @@ write(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the number of bytes written to the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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`.
|
||||
|
||||
@see @ref message
|
||||
@see message
|
||||
*/
|
||||
template<
|
||||
class AsyncWriteStream,
|
||||
@ -671,10 +663,10 @@ async_write(
|
||||
@ref serializer with an empty chunk decorator to produce buffers.
|
||||
|
||||
@note This function only participates in overload resolution
|
||||
if @ref is_mutable_body_writer for @b Body returns `false`.
|
||||
if @ref is_mutable_body_writer for <em>Body</em> returns `false`.
|
||||
|
||||
@param stream The stream to which the data is to be written.
|
||||
The type must support the @b AsyncWriteStream concept.
|
||||
The type must support the <em>AsyncWriteStream</em> concept.
|
||||
|
||||
@param msg The message to write.
|
||||
The object must remain valid at least until the
|
||||
@ -684,20 +676,18 @@ async_write(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error, // result of operation
|
||||
std::size_t bytes_transferred // the number of bytes written to the stream
|
||||
);
|
||||
@endcode
|
||||
|
||||
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`.
|
||||
|
||||
@see @ref message
|
||||
@see message
|
||||
*/
|
||||
template<
|
||||
class AsyncWriteStream,
|
||||
|
@ -401,8 +401,7 @@ public:
|
||||
); @endcode
|
||||
*/
|
||||
template<class HandshakeHandler>
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(HandshakeHandler,
|
||||
void(boost::system::error_code))
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(HandshakeHandler, void(boost::system::error_code))
|
||||
async_handshake(handshake_type type,
|
||||
BOOST_ASIO_MOVE_ARG(HandshakeHandler) handler)
|
||||
{
|
||||
@ -432,8 +431,7 @@ public:
|
||||
); @endcode
|
||||
*/
|
||||
template<class ConstBufferSequence, class BufferedHandshakeHandler>
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(BufferedHandshakeHandler,
|
||||
void(boost::system::error_code, std::size_t))
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(BufferedHandshakeHandler, void(boost::system::error_code, std::size_t))
|
||||
async_handshake(handshake_type type, ConstBufferSequence const& buffers,
|
||||
BOOST_ASIO_MOVE_ARG(BufferedHandshakeHandler) handler)
|
||||
{
|
||||
@ -480,8 +478,7 @@ public:
|
||||
); @endcode
|
||||
*/
|
||||
template<class ShutdownHandler>
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(ShutdownHandler,
|
||||
void(boost::system::error_code))
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(ShutdownHandler, void(boost::system::error_code))
|
||||
async_shutdown(BOOST_ASIO_MOVE_ARG(ShutdownHandler) handler)
|
||||
{
|
||||
return p_->next_layer().async_shutdown(
|
||||
@ -559,8 +556,7 @@ public:
|
||||
completes.
|
||||
*/
|
||||
template<class ConstBufferSequence, class WriteHandler>
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,
|
||||
void(boost::system::error_code, std::size_t))
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, void(boost::system::error_code, std::size_t))
|
||||
async_write_some(ConstBufferSequence const& buffers,
|
||||
BOOST_ASIO_MOVE_ARG(WriteHandler) handler)
|
||||
{
|
||||
@ -641,8 +637,7 @@ public:
|
||||
the asynchronous operation completes.
|
||||
*/
|
||||
template<class MutableBufferSequence, class ReadHandler>
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
|
||||
void(boost::system::error_code, std::size_t))
|
||||
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, void(boost::system::error_code, std::size_t))
|
||||
async_read_some(MutableBufferSequence const& buffers,
|
||||
BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
|
||||
{
|
||||
|
@ -58,13 +58,11 @@ teardown(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error // result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
|
@ -91,9 +91,9 @@ class frame_test;
|
||||
|
||||
@tparam NextLayer The type representing the next layer, to which
|
||||
data will be read and written during operations. For synchronous
|
||||
operations, the type must support the @b SyncStream concept.
|
||||
operations, the type must support the <em>SyncStream</em> concept.
|
||||
For asynchronous operations, the type must support the
|
||||
@b AsyncStream concept.
|
||||
<em>AsyncStream</em> concept.
|
||||
|
||||
@tparam deflateSupported A `bool` indicating whether or not the
|
||||
stream will be capable of negotiating the permessage-deflate websocket
|
||||
@ -105,9 +105,9 @@ class frame_test;
|
||||
are pending asynchronous operations associated with it.
|
||||
|
||||
@par Concepts
|
||||
@b AsyncStream,
|
||||
@b DynamicBuffer,
|
||||
@b SyncStream
|
||||
@li <em>AsyncStream</em>
|
||||
@li <em>DynamicBuffer</em>
|
||||
@li <em>SyncStream</em>
|
||||
|
||||
@see
|
||||
@li <a href="https://tools.ietf.org/html/rfc6455#section-4.1">Websocket Opening Handshake Client Requirements (RFC6455)</a>
|
||||
@ -848,13 +848,11 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -927,13 +925,11 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1265,13 +1261,11 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1328,13 +1322,11 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1391,13 +1383,11 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1525,13 +1515,11 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1625,13 +1613,11 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1728,13 +1714,11 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec // Result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -1883,14 +1867,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec, // Result of operation
|
||||
std::size_t bytes_written // Number of bytes appended to buffer
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -2058,14 +2040,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec, // Result of operation
|
||||
std::size_t bytes_written // Number of bytes appended to buffer
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -2229,14 +2209,12 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec, // Result of operation
|
||||
std::size_t bytes_written // Number of bytes written to the buffers
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -2346,7 +2324,6 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec, // Result of operation
|
||||
@ -2355,7 +2332,6 @@ public:
|
||||
// this will be less than the buffer_size.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -2467,7 +2443,6 @@ public:
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& ec, // Result of operation
|
||||
@ -2476,7 +2451,6 @@ public:
|
||||
// this will be less than the buffer_size.
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
|
@ -57,8 +57,14 @@ struct stream_base
|
||||
friend class stream;
|
||||
|
||||
public:
|
||||
// Move Constructor
|
||||
decorator(decorator&&) = default;
|
||||
|
||||
/** Construct a decorator option.
|
||||
|
||||
@param f An invocable function object. Ownership of
|
||||
the function object is transferred by decay-copy.
|
||||
*/
|
||||
template<class Decorator>
|
||||
decorator(Decorator&& f)
|
||||
: d_(std::forward<Decorator>(f))
|
||||
|
@ -73,13 +73,11 @@ teardown(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error // result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
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
|
||||
@ -155,13 +153,11 @@ teardown(
|
||||
completes. The implementation takes ownership of the handler by
|
||||
performing a decay-copy. The equivalent function signature of
|
||||
the handler must be:
|
||||
|
||||
@code
|
||||
void handler(
|
||||
error_code const& error // result of operation
|
||||
);
|
||||
@endcode
|
||||
|
||||
@endcode
|
||||
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
|
||||
|
@ -87,7 +87,7 @@ public:
|
||||
body, no more buffers are present.
|
||||
|
||||
@li If the optional contains a value, the first element of the
|
||||
pair represents a @b ConstBufferSequence containing one or
|
||||
pair represents a <em>ConstBufferSequence</em> containing one or
|
||||
more octets of the body data. The second element indicates
|
||||
whether or not there are additional octets of body data.
|
||||
A value of `true` means there is more data, and that the
|
||||
|
@ -296,10 +296,10 @@ void fxx() {
|
||||
/** Send a message to a stream synchronously.
|
||||
|
||||
@param stream The stream to write to. This type must support
|
||||
the @b SyncWriteStream concept.
|
||||
the <em>SyncWriteStream</em> concept.
|
||||
|
||||
@param m The message to send. The Body type must support
|
||||
the @b BodyWriter concept.
|
||||
the <em>BodyWriter</em> concept.
|
||||
*/
|
||||
template<
|
||||
class SyncWriteStream,
|
||||
|
Reference in New Issue
Block a user