[/
 / Copyright (c) 2003-2008 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)
 /]

[section:design Design Notes]

[variablelist
  [
    [
      [link boost_asio.design.rationale Rationale]
    ]
    [
      Design rationale for the Boost.Asio library.
    ]
  ]
  [
    [
      [link boost_asio.design.async Asynchronous operations]
    ]
    [
      Support for asynchronous operations in the Boost.Asio library is based on
      the Proactor pattern. This design note outlines the advantages and
      disadvantages of this approach.
    ]
  ]
  [
    [
      [link boost_asio.design.allocation Custom memory allocation]
    ]
    [
      Describes the custom memory allocation support in Boost.Asio.
    ]
  ]
  [
    [
      [link boost_asio.design.buffers Buffers]
    ]
    [
      Examines the buffer abstraction used by asio in order to support
      scatter-gather operations.
    ]
  ]
  [
    [
      [link boost_asio.design.eof Why EOF is an error]
    ]
    [
      Discusses why the end-of-file condition should be an error code.
    ]
  ]
  [
    [
      [link boost_asio.design.line_based Line-based protocols]
    ]
    [
      Outlines Boost.Asio's support for line-based protocols.
    ]
  ]
  [
    [
      [link boost_asio.design.threads Threads]
    ]
    [
      An implementation of Boost.Asio for a particular platform may make use of
      one or more additional threads to emulate asynchronicity. This design
      note discusses design rules applied to the use of threads in this way.
    ]
  ]
  [
    [
      [link boost_asio.design.strands Strands]
    ]
    [
      Describes the "strand" abstraction provided by Boost.Asio to ease
      concurrent programming and provide scalability across multiple
      processors.
    ]
  ]
  [
    [
      [link boost_asio.design.implementation Platform-specific implementation]
    ]
    [
      This design note lists platform-specific implementation details, such as
      the default demultiplexing mechanism, the number of threads created
      internally, and when threads are created.
    ]
  ]
]

[include design/rationale.qbk]
[include design/async.qbk]
[include design/allocation.qbk]
[include design/buffers.qbk]
[include design/eof.qbk]
[include design/line_based.qbk]
[include design/threads.qbk]
[include design/strands.qbk]
[include design/implementation.qbk]

[endsect]
