2
0
mirror of https://github.com/boostorg/asio.git synced 2026-02-22 13:42:08 +00:00
Files
asio/doc/Jamfile.v2
Christopher Kohlhoff 64448e6a19 Add any_completion_handler<>.
The any_completion_handler<> template can be used to type-erase
completion handlers. A typical use case is to enable separate
compilation of asynchronous operation implementations. For example:

  // Header file:

  void async_sleep_impl(
      boost::asio::any_completion_handler<void(boost::system::error_code)> handler,
      boost::asio::any_io_executor ex, std::chrono::nanoseconds duration);

  template <typename CompletionToken>
  inline auto async_sleep(boost::asio::any_io_executor ex,
      std::chrono::nanoseconds duration, CompletionToken&& token)
  {
    return boost::asio::async_initiate<CompletionToken, void(boost::system::error_code)>(
        async_sleep_impl, token, std::move(ex), duration);
  }

  // Separately compiled source file:

  void async_sleep_impl(
      boost::asio::any_completion_handler<void(boost::system::error_code)> handler,
      boost::asio::any_io_executor ex, std::chrono::nanoseconds duration)
  {
    auto timer = std::make_shared<boost::asio::steady_timer>(ex, duration);
    timer->async_wait(boost::asio::consign(std::move(handler), timer));
  }
2022-11-01 11:00:16 +11:00

143 lines
4.4 KiB
Plaintext

#
# Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff 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)
#
using quickbook ;
########################################################################
# Standalone HTML documentation
xml standalone_doc
:
asio.qbk
;
install images
:
overview/proactor.png
overview/sync_op.png
overview/async_op1.png
overview/async_op2.png
overview/model/async_agent_chain.png
overview/model/async_agent_model.png
overview/model/async_child_agent_chain.png
overview/model/async_op_init_complete.png
overview/model/async_op_model.png
overview/model/async_op_phases.png
overview/model/async_op_trivial_chain.png
overview/model/completion_token_model.png
overview/model/completion_token_transform.png
overview/model/higher_level_model.png
:
<location>html/boost_asio
;
local example-names = cpp03/allocation cpp03/buffers cpp03/chat cpp03/echo
cpp03/fork cpp03/http/client cpp03/http/server cpp03/http/server2
cpp03/http/server3 cpp03/http/server4 cpp03/icmp cpp03/invocation
cpp03/iostreams cpp03/local cpp03/multicast cpp03/nonblocking
cpp03/porthopper cpp03/serialization cpp03/services cpp03/socks4 cpp03/spawn
cpp03/ssl cpp03/timeouts cpp03/timers cpp03/windows cpp11/allocation
cpp11/buffers cpp11/chat cpp11/deferred cpp11/echo cpp11/executors cpp11/fork
cpp11/futures cpp11/handler_tracking cpp11/http/server cpp11/invocation
cpp11/local cpp11/multicast cpp11/nonblocking cpp11/operations
cpp11/parallel_group cpp11/socks4 cpp11/ssl cpp11/timeouts cpp11/timers
cpp11/spawn cpp11/type_erasure cpp14/deferred cpp14/echo cpp14/executors
cpp14/iostreams cpp14/operations cpp14/parallel_group cpp17/coroutines_ts
cpp20/channels cpp20/coroutines cpp20/operations cpp20/type_erasure ;
for local l in $(example-names)
{
install ex_$(l) : [ glob ../example/$(l)/*.*pp ] : <location>html/boost_asio/example/$(l) ;
}
boostbook standalone
:
standalone_doc
:
<xsl:param>boost.root=../../../..
<xsl:param>chapter.autolabel=0
<xsl:param>chunk.section.depth=8
<xsl:param>chunk.first.sections=1
<xsl:param>toc.section.depth=2
<xsl:param>toc.max.depth=1
<xsl:param>generate.section.toc.level=1
<xsl:param>generate.toc="chapter nop section nop"
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/asio/doc/html
;
########################################################################
# HTML documentation for $(BOOST_ROOT)/doc/html
xml asio_doc
:
asio.qbk
;
explicit asio_doc ;
install asio_doc_images
:
overview/proactor.png
overview/sync_op.png
overview/async_op1.png
overview/async_op2.png
overview/model/async_agent_chain.png
overview/model/async_agent_model.png
overview/model/async_child_agent_chain.png
overview/model/async_op_init_complete.png
overview/model/async_op_model.png
overview/model/async_op_phases.png
overview/model/async_op_trivial_chain.png
overview/model/completion_token_model.png
overview/model/completion_token_transform.png
overview/model/higher_level_model.png
:
<location>$(BOOST_ROOT)/doc/html/boost_asio
;
explicit asio_doc_images ;
for local l in $(example-names)
{
install asio_ex_$(l) : [ glob ../example/$(l)/*.*pp ] : <location>$(BOOST_ROOT)/doc/html/boost_asio/example/$(l) ;
explicit asio_ex_$(l) ;
}
alias asio_examples : asio_ex_$(example-names) ;
explicit asio_examples ;
path-constant images_location : ../../../doc/html ;
boostbook asio
:
asio_doc
:
<name>../../../doc/html
<xsl:param>chapter.autolabel=0
<xsl:param>chunk.section.depth=8
<xsl:param>chunk.first.sections=1
<xsl:param>toc.section.depth=2
<xsl:param>toc.max.depth=1
<xsl:param>generate.section.toc.level=1
<xsl:param>generate.toc="chapter nop section nop"
<xsl:param>root.filename=boost_asio
<format>pdf:<xsl:param>img.src.path=$(images_location)/
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/asio/doc/html
:
<dependency>asio_doc_images
<dependency>asio_examples
;
explicit asio ;
###############################################################################
alias boostdoc ;
explicit boostdoc ;
alias boostrelease : asio ;
explicit boostrelease ;