[/
    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
]

[library Boost.Beast
    [id beast]
    [quickbook 1.6]
    [copyright 2016 - 2019 Vinnie Falco]
    [purpose Networking Protocol Library]
    [license
        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])
    ]
    [authors [Falco, Vinnie]]
    [category template]
    [category generic]
]

[template mdash[] '''&mdash; ''']
[template indexterm1[term1] '''<indexterm><primary>'''[term1]'''</primary></indexterm>''']
[template indexterm2[term1 term2] '''<indexterm><primary>'''[term1]'''</primary><secondary>'''[term2]'''</secondary></indexterm>''']

[template path_link[path name] '''<ulink url="../../'''[path]'''">'''[name]'''</ulink>''']
[template include_file[path][^<'''<ulink url="../../../../'''[path]'''">'''[path]'''</ulink>'''>]]
[template issue[n] '''<ulink url="https://github.com/boostorg/beast/issues/'''[n]'''">#'''[n]'''</ulink>''']

[def __N3747__                  [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3747.pdf [*N3747]]]
[def __NetTS__                  [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4771.pdf Networking TS]]
[def __rfc6455__                [@https://tools.ietf.org/html/rfc6455 rfc6455]]
[def __rfc7230__                [@https://tools.ietf.org/html/rfc7230 rfc7230]]
[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`]]
[def __asio_handler_invoke__    [@boost:/doc/html/boost_asio/reference/asio_handler_invoke.html `asio_handler_invoke`]]
[def __basic_stream_socket__    [@boost:/doc/html/boost_asio/reference/basic_stream_socket.html `basic_stream_socket`]]
[def __const_buffer__           [@boost:/doc/html/boost_asio/reference/const_buffer.html `const_buffer`]]
[def __deduced__                [@boost:/doc/html/boost_asio/reference/asynchronous_operations.html#boost_asio.reference.asynchronous_operations.automatic_deduction_of_initiating_function_return_type ['DEDUCED]]]
[def __executor_work_guard__    [@boost:/doc/html/boost_asio/reference/executor_work_guard.html `net::executor_work_guard`]]
[def __get_associated_allocator__   [@boost:/doc/html/boost_asio/reference/get_associated_allocator.html `net::get_associated_allocator`]]
[def __get_associated_executor__    [@boost:/doc/html/boost_asio/reference/get_associated_executor.html `net::get_associated_executor`]]
[def __io_context__             [@boost:/doc/html/boost_asio/reference/io_context.html `net::io_context`]]
[def __mutable_buffer__         [@boost:/doc/html/boost_asio/reference/mutable_buffer.html `mutable_buffer`]]
[def __post__                   [@boost:/doc/html/boost_asio/reference/post.html `net::post`]]
[def __socket__                 [@boost:/doc/html/boost_asio/reference/ip__tcp/socket.html `tcp::socket`]]
[def __strand__                 [@boost:/doc/html/boost_asio/reference/strand.html `net::strand`]]
[def __ssl_context__            [@boost:/doc/html/boost_asio/reference/ssl__context.html `net::ssl::context`]]
[def __ssl_stream__             [@boost:/doc/html/boost_asio/reference/ssl__stream.html `net::ssl::stream`]]
[def __streambuf__              [@boost:/doc/html/boost_asio/reference/streambuf.html `net::streambuf`]]
[def __use_future__             [@boost:/doc/html/boost_asio/reference/use_future_t.html `net::use_future`]]
[def __yield_context__          [@boost:/doc/html/boost_asio/reference/yield_context.html `net::yield_context`]]

[/ Networking Named Requirements]

[def __AsyncReadStream__        [@boost:/doc/html/boost_asio/reference/AsyncReadStream.html ['AsyncReadStream]]]
[def __AsyncWriteStream__       [@boost:/doc/html/boost_asio/reference/AsyncWriteStream.html ['AsyncWriteStream]]]
[def __CompletionCondition__    [@boost:/doc/html/boost_asio/reference/CompletionCondition.html ['CompletionCondition]]]
[def __CompletionHandler__      [@boost:/doc/html/boost_asio/reference/CompletionHandler.html ['CompletionHandler]]]
[def __CompletionToken__        [@boost:/doc/html/boost_asio/reference/asynchronous_operations.html#boost_asio.reference.asynchronous_operations.completion_tokens_and_handlers ['CompletionToken]]]
[def __ConnectCondition__       [@boost:/doc/html/boost_asio/reference/ConnectCondition.html ['ConnectCondition]]]
[def __ConnectHandler__         [@boost:/doc/html/boost_asio/reference/ConnectHandler.html ['ConnectHandler]]]
[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]]]
[def __MutableBufferSequence__  [@boost:/doc/html/boost_asio/reference/MutableBufferSequence.html ['MutableBufferSequence]]]
[def __Protocol__               [@boost:/doc/html/boost_asio/reference/Protocol.html ['Protocol]]]
[def __RangeConnectHandler__    [@boost:/doc/html/boost_asio/reference/RangeConnectHandler.html ['RangeConnectHandler]]]
[def __ReadHandler__            [@boost:/doc/html/boost_asio/reference/ReadHandler.html ['ReadHandler]]]
[def __SyncReadStream__         [@boost:/doc/html/boost_asio/reference/SyncReadStream.html ['SyncReadStream]]]
[def __SyncWriteStream__        [@boost:/doc/html/boost_asio/reference/SyncWriteStream.html ['SyncWriteStream]]]
[def __WriteHandler__           [@boost:/doc/html/boost_asio/reference/WriteHandler.html ['WriteHandler]]]

[/ Beast Named Requirements ]

[def __AsyncStream__            [link beast.concepts.streams.AsyncStream ['AsyncStream]]]
[def __Body__                   [link beast.concepts.Body ['Body]]]
[def __BodyReader__             [link beast.concepts.BodyReader ['BodyReader]]]
[def __BodyWriter__             [link beast.concepts.BodyWriter ['BodyWriter]]]
[def __BufferSequence__         [link beast.concepts.BufferSequence ['BufferSequence]]]
[def __DynamicBuffer__          [link beast.concepts.DynamicBuffer ['DynamicBuffer]]]
[def __Fields__                 [link beast.concepts.Fields ['Fields]]]
[def __FieldsWriter__           [link beast.concepts.FieldsWriter ['FieldsWriter]]]
[def __File__                   [link beast.concepts.File ['File]]]
[def __RatePolicy__             [link beast.concepts.RatePolicy ['RatePolicy]]]
[def __Stream__                 [link beast.concepts.streams ['Stream]]]
[def __SyncStream__             [link beast.concepts.streams.SyncStream ['SyncStream]]]

[/ Beast Identifiers ]

[def __basic_fields__           [link beast.ref.boost__beast__http__basic_fields `basic_fields`]]
[def __basic_multi_buffer__     [link beast.ref.boost__beast__basic_multi_buffer `basic_multi_buffer`]]
[def __basic_parser__           [link beast.ref.boost__beast__http__basic_parser `basic_parser`]]
[def __bind_handler__           [link beast.ref.boost__beast__bind_handler `bind_handler`]]
[def __buffer_body__            [link beast.ref.boost__beast__http__buffer_body `buffer_body`]]
[def __fields__                 [link beast.ref.boost__beast__http__fields `fields`]]
[def __flat_buffer__            [link beast.ref.boost__beast__flat_buffer `flat_buffer`]]
[def __header__                 [link beast.ref.boost__beast__http__header `header`]]
[def __message__                [link beast.ref.boost__beast__http__message `message`]]
[def __multi_buffer__           [link beast.ref.boost__beast__multi_buffer `multi_buffer`]]
[def __parser__                 [link beast.ref.boost__beast__http__parser `parser`]]
[def __serializer__             [link beast.ref.boost__beast__http__serializer `serializer`]]
[def __flat_static_buffer__      [link beast.ref.boost__beast__flat_static_buffer `flat_static_buffer`]]
[def __flat_static_buffer_base__ [link beast.ref.boost__beast__flat_static_buffer_base `flat_static_buffer_base`]]
[def __websocket_stream__       [link beast.ref.boost__beast__websocket__stream `websocket::stream`]]

[/ Dingbat Legend]

[def __new__ [role green \u2605]]
[def __example__ \U0001f4a1]
[def __video__ \U0001f3a6]
[def __report__ \U0001f4cb]
[def __star__ \u2b50]

[/
    VFALCO unfortunately quickbook wants relative paths and we have no
    variables so all of the .cpp and .hpp files are placed here to keep
    the paths close to absolute.
]

[import ../../example/doc/http_examples.hpp]
[import ../../example/echo-op/echo_op.cpp]
[import ../../example/http/client/sync/http_client_sync.cpp]
[import ../../example/websocket/client/sync/websocket_client_sync.cpp]

[import ../../include/boost/beast/http/basic_file_body.hpp]
[import ../../include/boost/beast/websocket/stream_fwd.hpp]

[import ../../test/doc/exemplars.cpp]
[import ../../test/doc/core_snippets.cpp]
[import ../../test/doc/http_snippets.cpp]

[import ../../test/doc/core_1_refresher.cpp]
[import ../../test/doc/core_3_timeouts.cpp]
[import ../../test/doc/core_4_layers.cpp]
[import ../../test/doc/http_10_custom_parser.cpp]
[import ../../test/doc/websocket_common.ipp]
[import ../../test/doc/websocket.cpp]
[import ../../test/doc/websocket_1_connecting.cpp]
[import ../../test/doc/websocket_2_handshaking.cpp]
[import ../../test/doc/websocket_3_decorator.cpp]
[import ../../test/doc/websocket_4_messages.cpp]
[import ../../test/doc/websocket_5_control_frames.cpp]
[import ../../test/doc/websocket_6_timeouts.cpp]
[import ../../test/doc/websocket_7_teardown.cpp]
[import ../../test/doc/websocket_8_notes.cpp]

[import ../../include/boost/beast/core/detect_ssl.hpp]
[import ../../test/beast/core/rate_policy.cpp]

__new__ indicates a new or updated section in this version.

__example__ contains example source code.

__video__ contains video presentation content

[section:quickref Reference]

__new__ indicates an item that was recently added.

[xinclude quickref.xml]
[endsect]
[block'''<reference id="beast_hidden"><title>This Page Intentionally Left Blank 1/2</title>''']
[section:ref This Page Intentionally Left Blank 2/2]
[include reference.qbk]
[endsect]
[block'''</reference>''']

[include release_notes.qbk]

[include 01_intro/_intro.qbk]
[include 02_examples/_examples.qbk]
[include 03_core/_core.qbk]
[include 04_http/_http.qbk]
[include 05_http_examples/_http_examples.qbk]
[include 06_websocket/_websocket.qbk]
[include 07_concepts/_concepts.qbk]
[include 08_design/_design.qbk]

[section:moved1 Release Notes (Moved)]
The Release Notes have been moved to the top of the table of contents.
[endsect]
[section:moved2 Reference (Moved)]
The Reference has been moved to the top of the table of contents.
[endsect]

[xinclude index.xml]
