[boost-doc-zh] r436 committed - libs/asio/doc升级到boost_1_47_0. 从boost_1_47_0复制该目录. 该目录是qbk源文件, 已检查确认都是待...

  • From: boost-doc-zh@xxxxxxxxxxxxxx
  • To: boost-doc-zh-notify@xxxxxxxxxxxxx
  • Date: Wed, 24 Aug 2011 03:25:11 +0000

Revision: 436
Author:   jinq0123@xxxxxxx
Date:     Tue Aug 23 20:21:16 2011
Log: libs/asio/doc升级到boost_1_47_0. 从boost_1_47_0复制该目录. 该目录 是qbk源文件, 已检查确认都是待译状态.
http://code.google.com/p/boost-doc-zh/source/detail?r=436

Added:
 /trunk/libs/asio/doc/overview/cpp2011.qbk
 /trunk/libs/asio/doc/overview/handler_tracking.qbk
 /trunk/libs/asio/doc/overview/signals.qbk
 /trunk/libs/asio/doc/requirements/ComposedConnectHandler.qbk
 /trunk/libs/asio/doc/requirements/HandshakeHandler.qbk
 /trunk/libs/asio/doc/requirements/SeqPacketSocketService.qbk
 /trunk/libs/asio/doc/requirements/ShutdownHandler.qbk
 /trunk/libs/asio/doc/requirements/SignalHandler.qbk
 /trunk/libs/asio/doc/requirements/SignalSetService.qbk
Modified:
 /trunk/libs/asio/doc/Jamfile.v2
 /trunk/libs/asio/doc/asio.qbk
 /trunk/libs/asio/doc/doxy2qbk.pl
 /trunk/libs/asio/doc/examples.qbk
 /trunk/libs/asio/doc/history.qbk
 /trunk/libs/asio/doc/index.xml
 /trunk/libs/asio/doc/noncopyable_dox.txt
 /trunk/libs/asio/doc/overview/allocation.qbk
 /trunk/libs/asio/doc/overview/async.qbk
 /trunk/libs/asio/doc/overview/basics.qbk
 /trunk/libs/asio/doc/overview/bsd_sockets.qbk
 /trunk/libs/asio/doc/overview/buffers.qbk
 /trunk/libs/asio/doc/overview/implementation.qbk
 /trunk/libs/asio/doc/overview/iostreams.qbk
 /trunk/libs/asio/doc/overview/line_based.qbk
 /trunk/libs/asio/doc/overview/posix.qbk
 /trunk/libs/asio/doc/overview/protocols.qbk
 /trunk/libs/asio/doc/overview/rationale.qbk
 /trunk/libs/asio/doc/overview/reactor.qbk
 /trunk/libs/asio/doc/overview/serial_ports.qbk
 /trunk/libs/asio/doc/overview/ssl.qbk
 /trunk/libs/asio/doc/overview/strands.qbk
 /trunk/libs/asio/doc/overview/streams.qbk
 /trunk/libs/asio/doc/overview/threads.qbk
 /trunk/libs/asio/doc/overview/timers.qbk
 /trunk/libs/asio/doc/overview/windows.qbk
 /trunk/libs/asio/doc/overview.qbk
 /trunk/libs/asio/doc/quickref.xml
 /trunk/libs/asio/doc/reference.qbk
 /trunk/libs/asio/doc/reference.xsl
 /trunk/libs/asio/doc/requirements/AcceptHandler.qbk
 /trunk/libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk
 /trunk/libs/asio/doc/requirements/AsyncRandomAccessWriteDevice.qbk
 /trunk/libs/asio/doc/requirements/AsyncReadStream.qbk
 /trunk/libs/asio/doc/requirements/AsyncWriteStream.qbk
 /trunk/libs/asio/doc/requirements/CompletionHandler.qbk
 /trunk/libs/asio/doc/requirements/ConnectHandler.qbk
 /trunk/libs/asio/doc/requirements/ConstBufferSequence.qbk
 /trunk/libs/asio/doc/requirements/ConvertibleToConstBuffer.qbk
 /trunk/libs/asio/doc/requirements/ConvertibleToMutableBuffer.qbk
 /trunk/libs/asio/doc/requirements/DatagramSocketService.qbk
 /trunk/libs/asio/doc/requirements/DescriptorService.qbk
 /trunk/libs/asio/doc/requirements/Endpoint.qbk
 /trunk/libs/asio/doc/requirements/GettableSerialPortOption.qbk
 /trunk/libs/asio/doc/requirements/GettableSocketOption.qbk
 /trunk/libs/asio/doc/requirements/HandleService.qbk
 /trunk/libs/asio/doc/requirements/Handler.qbk
 /trunk/libs/asio/doc/requirements/InternetProtocol.qbk
 /trunk/libs/asio/doc/requirements/IoControlCommand.qbk
 /trunk/libs/asio/doc/requirements/IoObjectService.qbk
 /trunk/libs/asio/doc/requirements/MutableBufferSequence.qbk
 /trunk/libs/asio/doc/requirements/Protocol.qbk
 /trunk/libs/asio/doc/requirements/RandomAccessHandleService.qbk
 /trunk/libs/asio/doc/requirements/RawSocketService.qbk
 /trunk/libs/asio/doc/requirements/ReadHandler.qbk
 /trunk/libs/asio/doc/requirements/ResolveHandler.qbk
 /trunk/libs/asio/doc/requirements/ResolverService.qbk
 /trunk/libs/asio/doc/requirements/SerialPortService.qbk
 /trunk/libs/asio/doc/requirements/Service.qbk
 /trunk/libs/asio/doc/requirements/SettableSerialPortOption.qbk
 /trunk/libs/asio/doc/requirements/SettableSocketOption.qbk
 /trunk/libs/asio/doc/requirements/SocketAcceptorService.qbk
 /trunk/libs/asio/doc/requirements/SocketService.qbk
 /trunk/libs/asio/doc/requirements/StreamDescriptorService.qbk
 /trunk/libs/asio/doc/requirements/StreamHandleService.qbk
 /trunk/libs/asio/doc/requirements/StreamSocketService.qbk
 /trunk/libs/asio/doc/requirements/SyncRandomAccessReadDevice.qbk
 /trunk/libs/asio/doc/requirements/SyncRandomAccessWriteDevice.qbk
 /trunk/libs/asio/doc/requirements/SyncReadStream.qbk
 /trunk/libs/asio/doc/requirements/SyncWriteStream.qbk
 /trunk/libs/asio/doc/requirements/TimeTraits.qbk
 /trunk/libs/asio/doc/requirements/TimerService.qbk
 /trunk/libs/asio/doc/requirements/WaitHandler.qbk
 /trunk/libs/asio/doc/requirements/WriteHandler.qbk
 /trunk/libs/asio/doc/requirements/asynchronous_operations.qbk
 /trunk/libs/asio/doc/requirements.qbk
 /trunk/libs/asio/doc/std_exception_dox.txt
 /trunk/libs/asio/doc/tutorial.qbk
 /trunk/libs/asio/doc/tutorial.xsl
 /trunk/libs/asio/doc/using.qbk

=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/overview/cpp2011.qbk   Tue Aug 23 20:21:16 2011
@@ -0,0 +1,194 @@
+[/
+ / Copyright (c) 2003-2011 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:cpp2011 C++ 2011 Support]
+
+
+[link boost_asio.overview.cpp2011.move_objects Movable I/O Objects]
+
+[link boost_asio.overview.cpp2011.move_handlers Movable Handlers]
+
+[link boost_asio.overview.cpp2011.variadic Variadic Templates]
+
+[link boost_asio.overview.cpp2011.array Array Container]
+
+[link boost_asio.overview.cpp2011.atomic Atomics]
+
+[link boost_asio.overview.cpp2011.shared_ptr Shared Pointers]
+
+
+[section:move_objects Movable I/O Objects]
+
+When move support is available (via rvalue references), Boost.Asio allows move
+construction and assignment of sockets, serial ports, POSIX descriptors and
+Windows handles.
+
+Move support allows you to write code like:
+
+  tcp::socket make_socket(io_service& i)
+  {
+    tcp::socket s(i);
+    ...
+    std::move(s);
+  }
+
+or:
+
+  class connection : public enable_shared_from_this<connection>
+  {
+  private:
+    tcp::socket socket_;
+    ...
+  public:
+    connection(tcp::socket&& s) : socket_(std::move(s)) {}
+    ...
+  };
+
+  ...
+
+  class server
+  {
+  private:
+    tcp::acceptor acceptor_;
+    tcp::socket socket_;
+    ...
+    void handle_accept(error_code ec)
+    {
+      if (!ec)
+        std::make_shared<connection>(std::move(socket_))->go();
+      acceptor_.async_accept(socket_, ...);
+    }
+    ...
+  };
+
+as well as:
+
+  std::vector<tcp::socket> sockets;
+  sockets.push_back(tcp::socket(...));
+
+A word of warning: There is nothing stopping you from moving these objects
+while there are pending asynchronous operations, but it is unlikely to be a
+good idea to do so. In particular, composed operations like [link
+boost_asio.reference.async_read async_read()] store a reference to the stream object.
+Moving during the composed operation means that the composed operation may
+attempt to access a moved-from object.
+
+Move support is automatically enabled for [^g++] 4.5 and later, when the
+[^-std=c++0x] or [^-std=gnu++0x] compiler options are used. It may be disabled +by defining `BOOST_ASIO_DISABLE_MOVE`, or explicitly enabled for other compilers by +defining `BOOST_ASIO_HAS_MOVE`. Note that these macros also affect the availability
+of [link boost_asio.overview.cpp2011.move_handlers movable handlers].
+
+[endsect]
+
+[section:move_handlers Movable Handlers]
+
+As an optimisation, user-defined completion handlers may provide move
+constructors, and Boost.Asio's implementation will use a handler's move constructor +in preference to its copy constructor. In certain circumstances, Boost.Asio may be +able to eliminate all calls to a handler's copy constructor. However, handler
+types are still required to be copy constructible.
+
+When move support is enabled, asynchronous that are documented as follows:
+
+  template <typename Handler>
+  void async_XYZ(..., Handler handler);
+
+are actually declared as:
+
+  template <typename Handler>
+  void async_XYZ(..., Handler&& handler);
+
+The handler argument is perfectly forwarded and the move construction occurs
+within the body of `async_XYZ()`. This ensures that all other function
+arguments are evaluated prior to the move. This is critical when the other
+arguments to `async_XYZ()` are members of the handler. For example:
+
+  struct my_operation
+  {
+    shared_ptr<tcp::socket> socket;
+    shared_ptr<vector<char>> buffer;
+    ...
+    void operator(error_code ec, size_t length)
+    {
+      ...
+ socket->async_read_some(boost::asio::buffer(*buffer), std::move(*this));
+      ...
+    }
+  };
+
+Move support is automatically enabled for [^g++] 4.5 and later, when the
+[^-std=c++0x] or [^-std=gnu++0x] compiler options are used. It may be disabled +by defining `BOOST_ASIO_DISABLE_MOVE`, or explicitly enabled for other compilers by +defining `BOOST_ASIO_HAS_MOVE`. Note that these macros also affect the availability
+of [link boost_asio.overview.cpp2011.move_objects movable I/O objects].
+
+[endsect]
+
+[section:variadic Variadic Templates]
+
+When supported by a compiler, Boost.Asio can use variadic templates to implement the
+[link boost_asio.reference.basic_socket_streambuf.connect
+basic_socket_streambuf::connect()] and [link
+boost_asio.reference.basic_socket_iostream.connect basic_socket_iostream::connect()]
+functions.
+
+Support for variadic templates is automatically enabled for [^g++] 4.3 and
+later, when the [^-std=c++0x] or [^-std=gnu++0x] compiler options are used. It +may be disabled by defining `BOOST_ASIO_DISABLE_VARIADIC_TEMPLATES`, or explicitly +enabled for other compilers by defining `BOOST_ASIO_HAS_VARIADIC_TEMPLATES`.
+
+[endsect]
+
+[section:array Array Container]
+
+Where the standard library provides `std::array<>`, Boost.Asio:
+
+* Provides overloads for the [link boost_asio.reference.buffer buffer()] function.
+
+* Uses it in preference to `boost::array<>` for the
+ [link boost_asio.reference.ip__address_v4.bytes_type ip::address_v4::bytes_type] and + [link boost_asio.reference.ip__address_v6.bytes_type ip::address_v6::bytes_type]
+  types.
+
+* Uses it in preference to `boost::array<>` where a fixed size array type is
+  needed in the implementation.
+
+Support for `std::array<>` is automatically enabled for [^g++] 4.3 and later, +when the [^-std=c++0x] or [^-std=gnu++0x] compiler options are used, as well as
+for Microsoft Visual C++ 10. It may be disabled by defining
+`BOOST_ASIO_DISABLE_STD_ARRAY`, or explicitly enabled for other compilers by
+defining `BOOST_ASIO_HAS_STD_ARRAY`.
+
+[endsect]
+
+[section:atomic Atomics]
+
+Boost.Asio's implementation can use `std::atomic<>` in preference to
+`boost::detail::atomic_count`.
+
+Support for the standard atomic integer template is automatically enabled for
+[^g++] 4.5 and later, when the [^-std=c++0x] or [^-std=gnu++0x] compiler
+options are used. It may be disabled by defining `BOOST_ASIO_DISABLE_STD_ATOMIC`, or +explicitly enabled for other compilers by defining `BOOST_ASIO_HAS_STD_ATOMIC`.
+
+[endsect]
+
+[section:shared_ptr Shared Pointers]
+
+Boost.Asio's implementation can use `std::shared_ptr<>` and `std::weak_ptr<>` in
+preference to the Boost equivalents.
+
+Support for the standard smart pointers is automatically enabled for [^g++] 4.3 +and later, when the [^-std=c++0x] or [^-std=gnu++0x] compiler options are used,
+as well as for Microsoft Visual C++ 10. It may be disabled by defining
+`BOOST_ASIO_DISABLE_STD_SHARED_PTR`, or explicitly enabled for other compilers by
+defining `BOOST_ASIO_HAS_STD_SHARED_PTR`.
+
+[endsect]
+
+[endsect]
=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/overview/handler_tracking.qbk Tue Aug 23 20:21:16 2011
@@ -0,0 +1,102 @@
+[/
+ / Copyright (c) 2003-2011 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:handler_tracking Handler Tracking]
+
+To aid in debugging asynchronous programs, Boost.Asio provides support for handler +tracking. When enabled by defining `BOOST_ASIO_ENABLE_HANDLER_TRACKING`, Boost.Asio
+writes debugging output to the standard error stream. The output records
+asynchronous operations and the relationships between their handlers.
+
+[teletype]
+This feature is useful when debugging and you need to know how your
+asynchronous operations are chained together, or what the pending asynchronous +operations are. As an illustration, here is the output when you run the HTTP
+Server example, handle a single request, then shut down via Ctrl+C:
+
+  @asio|1298160085.070638|0*1|signal_set@xxxxxxxxxxxxxxxxxxxxxxxxx
+  @asio|1298160085.070888|0*2|socket@xxxxxxxxxxxxxxxxxxxxxxxxxxx
+  @asio|1298160085.070913|0|resolver@xxxxxxxxxxxxxxxxxxxxx
+  @asio|1298160118.075438|>2|ec=asio.system:0
+  @asio|1298160118.075472|2*3|socket@xxxxxxxxxxxxxxxxxxxxxx
+  @asio|1298160118.075507|2*4|socket@xxxxxxxxxxxxxxxxxxxxxxxxxxx
+  @asio|1298160118.075527|<2|
+  @asio|1298160118.075540|>3|ec=asio.system:0,bytes_transferred=122
+  @asio|1298160118.075731|3*5|socket@xxxxxxxxxxxxxxxxxxx
+  @asio|1298160118.075778|<3|
+  @asio|1298160118.075793|>5|ec=asio.system:0,bytes_transferred=156
+  @asio|1298160118.075831|5|socket@xxxxxxxxxxxxxx
+  @asio|1298160118.075855|<5|
+  @asio|1298160122.827317|>1|ec=asio.system:0,signal_number=2
+  @asio|1298160122.827333|1|socket@xxxxxxxxxxxxxxxxxxxx
+  @asio|1298160122.827359|<1|
+  @asio|1298160122.827370|>4|ec=asio.system:125
+  @asio|1298160122.827378|<4|
+  @asio|1298160122.827394|0|signal_set@xxxxxxxxxxxxxxxxxxxxx
+
+Each line is of the form:
+
+  <tag>|<timestamp>|<action>|<description>
+
+The `<tag>` is always `@asio`, and is used to identify and extract the handler
+tracking messages from the program output.
+
+The `<timestamp>` is seconds and microseconds from 1 Jan 1970 UTC.
+
+The `<action>` takes one of the following forms:
+
+[variablelist
+  [
+    [>n]
+ [The program entered the handler number `n`. The `<description>` shows the
+    arguments to the handler.]
+  ]
+  [
+    [<n]
+    [The program left handler number `n`.]
+  ]
+  [
+    [!n]
+    [The program left handler number n due to an exception.]
+  ]
+  [
+    [~n]
+ [The handler number `n` was destroyed without having been invoked. This is
+    usually the case for any unfinished asynchronous operations when the
+    `io_service` is destroyed.]
+  ]
+  [
+    [n*m]
+ [The handler number `n` created a new asynchronous operation with completion + handler number `m`. The `<description>` shows what asynchronous operation
+    was started.]
+  ]
+  [
+    [n]
+ [The handler number n performed some other operation. The `<description>`
+    shows what function was called. Currently only `close()` and `cancel()`
+    operations are logged, as these may affect the state of pending
+    asynchronous operations.]
+  ]
+]
+
+Where the `<description>` shows a synchronous or asynchronous operation, the +format is `<object-type>@<pointer>.<operation>`. For handler entry, it shows a
+comma-separated list of arguments and their values.
+
+As shown above, Each handler is assigned a numeric identifier. Where the
+handler tracking output shows a handler number of 0, it means that the action
+was performed outside of any handler.
+
+[heading Visual Representations]
+
+The handler tracking output may be post-processed using the included
+[^handlerviz.pl] tool to create a visual representation of the handlers
+(requires the GraphViz tool [^dot]).
+[c++]
+
+[endsect]
=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/overview/signals.qbk   Tue Aug 23 20:21:16 2011
@@ -0,0 +1,43 @@
+[/
+ / Copyright (c) 2003-2011 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:signals Signal Handling]
+
+Boost.Asio supports signal handling using a class called [link
+boost_asio.reference.signal_set signal_set]. Programs may add one or more signals to +the set, and then perform an `async_wait()` operation. The specified handler +will be called when one of the signals occurs. The same signal number may be +registered with multiple [link boost_asio.reference.signal_set signal_set] objects,
+however the signal number must be used only with Boost.Asio.
+
+  void handler(
+      const boost::system::error_code& error,
+      int signal_number)
+  {
+    if (!error)
+    {
+      // A signal occurred.
+    }
+  }
+
+  ...
+
+  // Construct a signal set registered for process termination.
+  boost::asio::signal_set signals(io_service, SIGINT, SIGTERM);
+
+  // Start an asynchronous wait for one of the signals to occur.
+  signals.async_wait(handler);
+
+Signal handling also works on Windows, as the Microsoft Visual C++ runtime
+library maps console events like Ctrl+C to the equivalent signal.
+
+[heading See Also]
+
+[link boost_asio.reference.signal_set signal_set],
+[link boost_asio.examples.http_server HTTP server example].
+
+[endsect]
=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/requirements/ComposedConnectHandler.qbk Tue Aug 23 20:21:16 2011
@@ -0,0 +1,56 @@
+[/
+ / Copyright (c) 2003-2011 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:ComposedConnectHandler Composed connect handler requirements]
+
+A composed connect handler must meet the requirements for a [link
+boost_asio.reference.Handler handler]. A value `h` of a composed connect handler
+class should work correctly in the expression `h(ec, i)`, where `ec` is an
+lvalue of type `const error_code` and `i` is an lvalue of the type `Iterator`
+used in the corresponding `connect()` or async_connect()` function.
+
+[heading Examples]
+
+A free function as a composed connect handler:
+
+  void connect_handler(
+      const boost::system::error_code& ec,
+      boost::asio::ip::tcp::resolver::iterator iterator)
+  {
+    ...
+  }
+
+A composed connect handler function object:
+
+  struct connect_handler
+  {
+    ...
+    template <typename Iterator>
+    void operator()(
+        const boost::system::error_code& ec,
+        Iterator iterator)
+    {
+      ...
+    }
+    ...
+  };
+
+A non-static class member function adapted to a composed connect handler using `bind()`:
+
+  void my_class::connect_handler(
+      const boost::system::error_code& ec,
+      boost::asio::ip::tcp::resolver::iterator iterator)
+  {
+    ...
+  }
+  ...
+  boost::asio::async_connect(...,
+      boost::bind(&my_class::connect_handler,
+        this, boost::asio::placeholders::error,
+        boost::asio::placeholders::iterator));
+
+[endsect]
=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/requirements/HandshakeHandler.qbk Tue Aug 23 20:21:16 2011
@@ -0,0 +1,50 @@
+[/
+ / Copyright (c) 2003-2011 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:HandshakeHandler SSL handshake handler requirements]
+
+A handshake handler must meet the requirements for a [link
+boost_asio.reference.Handler handler]. A value `h` of a handshake handler
+class should work correctly in the expression `h(ec)`, where `ec` is an lvalue
+of type `const error_code`.
+
+[heading Examples]
+
+A free function as a handshake handler:
+
+  void handshake_handler(
+      const boost::system::error_code& ec)
+  {
+    ...
+  }
+
+A handshake handler function object:
+
+  struct handshake_handler
+  {
+    ...
+    void operator()(
+        const boost::system::error_code& ec)
+    {
+      ...
+    }
+    ...
+  };
+
+A non-static class member function adapted to a handshake handler using `bind()`:
+
+  void my_class::handshake_handler(
+      const boost::system::error_code& ec)
+  {
+    ...
+  }
+  ...
+  ssl_stream.async_handshake(...,
+      boost::bind(&my_class::handshake_handler,
+        this, boost::asio::placeholders::error));
+
+[endsect]
=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/requirements/SeqPacketSocketService.qbk Tue Aug 23 20:21:16 2011
@@ -0,0 +1,127 @@
+[/
+ / Copyright (c) 2003-2011 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:SeqPacketSocketService Sequenced packet socket service requirements]
+
+A sequenced packet socket service must meet the requirements for a [link
+boost_asio.reference.SocketService socket service], as well as the additional
+requirements listed below.
+
+In the table below, `X` denotes a stream socket service class, `a` denotes a +value of type `X`, `b` denotes a value of type `X::implementation_type`, `ec`
+denotes a value of type `error_code`, `f` denotes a value of type
+`socket_base::message_flags`, `g` denotes an lvalue of type
+`socket_base::message_flags`, `mb` denotes a value satisfying [link
+boost_asio.reference.MutableBufferSequence mutable buffer sequence] requirements, +`rh` denotes a value meeting [link boost_asio.reference.ReadHandler `ReadHandler`]
+requirements, `cb` denotes a value satisfying [link
+boost_asio.reference.ConstBufferSequence constant buffer sequence] requirements, and +`wh` denotes a value meeting [link boost_asio.reference.WriteHandler `WriteHandler`]
+requirements.
+
+[table StreamSocketService requirements
+  [[expression] [return type] [assertion/note\npre/post-condition]]
+  [
+    [`a.receive(b, mb, f, g, ec);`]
+    [`size_t`]
+    [
+      pre: `a.is_open(b)`.\n
+      \n
+      Reads one or more bytes of data from a connected socket `b`.\n
+      \n
+ The mutable buffer sequence `mb` specifies memory where the data should
+      be placed. The operation shall always fill a buffer in the sequence
+      completely before proceeding to the next.\n
+      \n
+ If successful, sets `g` to the flags associated with the received data,
+      and returns the number of bytes read. Otherwise, sets `g` to `0` and
+      returns `0`.
+    ]
+  ]
+  [
+    [`a.async_receive(b, mb, f, g, rh);`]
+    [`void`]
+    [
+      pre: `a.is_open(b)`.\n
+      \n
+      Initiates an asynchronous operation to read one or more bytes of data
+      from a connected socket `b`. The operation is performed via the
+ `io_service` object `a.get_io_service()` and behaves according to [link
+      boost_asio.reference.asynchronous_operations asynchronous operation]
+      requirements.\n
+      \n
+ The mutable buffer sequence `mb` specifies memory where the data should
+      be placed. The operation shall always fill a buffer in the sequence
+      completely before proceeding to the next.\n
+      \n
+ The implementation shall maintain one or more copies of `mb` until such
+      time as the read operation no longer requires access to the memory
+      specified by the buffers in the sequence. The program must ensure the
+      memory is valid until:\n
+      \n
+      [mdash] the last copy of `mb` is destroyed, or\n
+      \n
+      [mdash] the handler for the asynchronous operation is invoked,\n
+      \n
+      whichever comes first.\n
+      \n
+ If the operation completes successfully, sets `g` to the flags associated + with the received data, then invokes the `ReadHandler` object `rh` with + the number of bytes transferred. Otherwise, sets `g` to `0` and invokes
+      `rh` with `0` bytes transferred.
+    ]
+  ]
+  [
+    [`a.send(b, cb, f, ec);`]
+    [`size_t`]
+    [
+      pre: `a.is_open(b)`.\n
+      \n
+      Writes one or more bytes of data to a connected socket `b`.\n
+      \n
+ The constant buffer sequence `cb` specifies memory where the data to be
+      written is located. The operation shall always write a buffer in the
+      sequence completely before proceeding to the next.\n
+      \n
+ If successful, returns the number of bytes written. Otherwise returns `0`.
+    ]
+  ]
+  [
+    [`a.async_send(b, cb, f, wh);`]
+    [`void`]
+    [
+      pre: `a.is_open(b)`.\n
+      \n
+ Initiates an asynchronous operation to write one or more bytes of data to + a connected socket `b`. The operation is performed via the `io_service`
+      object `a.get_io_service()` and behaves according to [link
+      boost_asio.reference.asynchronous_operations asynchronous operation]
+      requirements.\n
+      \n
+ The constant buffer sequence `cb` specifies memory where the data to be
+      written is located. The operation shall always write a buffer in the
+      sequence completely before proceeding to the next.\n
+      \n
+ The implementation shall maintain one or more copies of `cb` until such
+      time as the write operation no longer requires access to the memory
+      specified by the buffers in the sequence. The program must ensure the
+      memory is valid until:\n
+      \n
+      [mdash] the last copy of `cb` is destroyed, or\n
+      \n
+      [mdash] the handler for the asynchronous operation is invoked,\n
+      \n
+      whichever comes first.\n
+      \n
+ If the operation completes successfully, the `WriteHandler` object `wh` + is invoked with the number of bytes transferred. Otherwise it is invoked
+      with `0`.
+    ]
+  ]
+]
+
+[endsect]
=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/requirements/ShutdownHandler.qbk Tue Aug 23 20:21:16 2011
@@ -0,0 +1,50 @@
+[/
+ / Copyright (c) 2003-2011 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:ShutdownHandler SSL shutdown handler requirements]
+
+A shutdown handler must meet the requirements for a [link
+boost_asio.reference.Handler handler]. A value `h` of a shutdown handler
+class should work correctly in the expression `h(ec)`, where `ec` is an lvalue
+of type `const error_code`.
+
+[heading Examples]
+
+A free function as a shutdown handler:
+
+  void shutdown_handler(
+      const boost::system::error_code& ec)
+  {
+    ...
+  }
+
+A shutdown handler function object:
+
+  struct shutdown_handler
+  {
+    ...
+    void operator()(
+        const boost::system::error_code& ec)
+    {
+      ...
+    }
+    ...
+  };
+
+A non-static class member function adapted to a shutdown handler using `bind()`:
+
+  void my_class::shutdown_handler(
+      const boost::system::error_code& ec)
+  {
+    ...
+  }
+  ...
+  ssl_stream.async_shutdown(
+      boost::bind(&my_class::shutdown_handler,
+        this, boost::asio::placeholders::error));
+
+[endsect]
=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/requirements/SignalHandler.qbk Tue Aug 23 20:21:16 2011
@@ -0,0 +1,54 @@
+[/
+ / Copyright (c) 2003-2011 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:SignalHandler Signal handler requirements]
+
+A signal handler must meet the requirements for a [link
+boost_asio.reference.Handler handler]. A value `h` of a signal handler class +should work correctly in the expression `h(ec, n)`, where `ec` is an lvalue of
+type `const error_code` and `n` is an lvalue of type `const int`.
+
+[heading Examples]
+
+A free function as a signal handler:
+
+  void signal_handler(
+      const boost::system::error_code& ec,
+      int signal_number)
+  {
+    ...
+  }
+
+A signal handler function object:
+
+  struct signal_handler
+  {
+    ...
+    void operator()(
+        const boost::system::error_code& ec,
+        int signal_number)
+    {
+      ...
+    }
+    ...
+  };
+
+A non-static class member function adapted to a signal handler using `bind()`:
+
+  void my_class::signal_handler(
+      const boost::system::error_code& ec,
+      int signal_number)
+  {
+    ...
+  }
+  ...
+  my_signal_set.async_wait(
+      boost::bind(&my_class::signal_handler,
+        this, boost::asio::placeholders::error,
+        boost::asio::placeholders::signal_number));
+
+[endsect]
=======================================
--- /dev/null
+++ /trunk/libs/asio/doc/requirements/SignalSetService.qbk Tue Aug 23 20:21:16 2011
@@ -0,0 +1,91 @@
+[/
+ / Copyright (c) 2003-2011 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:SignalSetService Signal set service requirements]
+
+A signal set service must meet the requirements for an [link
+boost_asio.reference.IoObjectService I/O object service], as well as the
+additional requirements listed below.
+
+In the table below, `X` denotes a signal set service class, `a` denotes a value +of type `X`, `b` denotes a value of type `X::implementation_type`, `ec` denotes
+a value of type `error_code`, `n` denotes a value of type `int`, and `sh`
+denotes a value meeting [link boost_asio.reference.SignalHandler `SignalHandler`]
+requirements.
+
+[table SignalSetService requirements
+  [[expression] [return type] [assertion/note\npre/post-condition]]
+  [
+    [`a.construct(b);`]
+    []
+    [
+      From [link boost_asio.reference.IoObjectService IoObjectService]
+      requirements.\n
+    ]
+  ]
+  [
+    [`a.destroy(b);`]
+    []
+    [
+      From [link boost_asio.reference.IoObjectService IoObjectService]
+ requirements. Implicitly clears the registered signals as if by calling
+      `a.clear(b, ec)`, then implicitly cancels outstanding asynchronous
+      operations as if by calling `a.cancel(b, ec)`.
+    ]
+  ]
+  [
+    [``
+      a.add(b, n, ec);
+    ``]
+    [`error_code`]
+    [
+    ]
+  ]
+  [
+    [``
+      a.remove(b, n, ec);
+    ``]
+    [`error_code`]
+    [
+    ]
+  ]
+  [
+    [``
+      a.clear(b, ec);
+    ``]
+    [`error_code`]
+    [
+    ]
+  ]
+  [
+    [``
+      a.cancel(b, ec);
+    ``]
+    [`error_code`]
+    [
+    ]
+  ]
+  [
+    [`a.async_wait(b, sh);`]
+    [`void`]
+    [
+      pre: `a.is_open(b)`.\n
+      \n
+ Initiates an asynchronous operation to wait for the delivery of one of the + signals registered for the signal set `b`. The operation is performed via
+      the `io_service` object `a.get_io_service()` and behaves according to
+ [link boost_asio.reference.asynchronous_operations asynchronous operation]
+      requirements.\n
+      \n
+      If the operation completes successfully, the `SignalHandler` object
+ `sh` is invoked with the number identifying the delivered signal. Otherwise
+      it is invoked with `0`.
+    ]
+  ]
+]
+
+[endsect]
=======================================
--- /trunk/libs/asio/doc/Jamfile.v2     Wed Aug 18 08:21:10 2010
+++ /trunk/libs/asio/doc/Jamfile.v2     Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
-#
-# Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+#
+# Copyright (c) 2003-2011 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)
@@ -25,7 +25,7 @@
     <location>html/boost_asio
   ;

-local example-names = allocation buffers chat echo http/client http/server
+local example-names = allocation buffers chat echo fork http/client http/server
   http/server2 http/server3 http/server4 icmp invocation iostreams local
multicast nonblocking porthopper serialization services socks4 ssl timeouts
   timers windows ;
@@ -97,9 +97,12 @@
     <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 ;
+
+
=======================================
--- /trunk/libs/asio/doc/asio.qbk       Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/asio.qbk       Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -7,7 +7,7 @@

 [library Boost.Asio
     [quickbook 1.4]
-    [copyright 2003 - 2010 Christopher M. Kohlhoff]
+    [copyright 2003 - 2011 Christopher M. Kohlhoff]
     [purpose Networking library]
     [license
         Distributed under the Boost Software License, Version 1.0.
@@ -37,9 +37,9 @@

[/=============================================================================]

-Boost.Asio is a cross-platform C++ library for network and low-level I/O
-programming that provides developers with a consistent asynchronous model using
-a modern C++ approach.
+Boost.Asio is a cross-platform C++ library for network and low-level I/O programming +that provides developers with a consistent asynchronous model using a modern
+C++ approach.

 [variablelist
   [
@@ -74,8 +74,7 @@
       [link boost_asio.examples Examples]
     ]
     [
-      Examples that illustrate the use of Boost.Asio in more complex
-      applications.
+ Examples that illustrate the use of Boost.Asio in more complex applications.
     ]
   ]
   [
=======================================
--- /trunk/libs/asio/doc/doxy2qbk.pl    Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/doxy2qbk.pl    Tue Aug 23 20:21:16 2011
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -w

-# Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +# Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/examples.qbk   Wed Aug 18 08:21:10 2010
+++ /trunk/libs/asio/doc/examples.qbk   Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -34,8 +34,8 @@
 * [@boost_asio/example/chat/chat_server.cpp]

 The following POSIX-specific chat client demonstrates how to use the
-[link boost_asio.reference.posix__stream_descriptor posix::stream_descriptor]
-class to perform console input and output.
+[link boost_asio.reference.posix__stream_descriptor posix::stream_descriptor] class to
+perform console input and output.

 * [@boost_asio/example/chat/posix_chat_client.cpp]

@@ -53,6 +53,20 @@
 * [@boost_asio/example/echo/blocking_udp_echo_server.cpp]


+[heading Fork]
+
+These POSIX-specific examples show how to use Boost.Asio in conjunction with the +`fork()` system call. The first example illustrates the steps required to start
+a daemon process:
+
+* [@boost_asio/example/fork/daemon.cpp]
+
+The second example demonstrates how it is possible to fork a process from
+within a completion handler.
+
+* [@boost_asio/example/fork/process_per_connection.cpp]
+
+
 [heading HTTP Client]

Example programs implementing simple HTTP 1.0 clients. These examples show how
@@ -74,9 +88,9 @@
 * [@boost_asio/example/http/server/connection_manager.cpp]
 * [@boost_asio/example/http/server/connection_manager.hpp]
 * [@boost_asio/example/http/server/header.hpp]
+* [@boost_asio/example/http/server/main.cpp]
 * [@boost_asio/example/http/server/mime_types.cpp]
 * [@boost_asio/example/http/server/mime_types.hpp]
-* [@boost_asio/example/http/server/posix_main.cpp]
 * [@boost_asio/example/http/server/reply.cpp]
 * [@boost_asio/example/http/server/reply.hpp]
 * [@boost_asio/example/http/server/request.hpp]
@@ -86,7 +100,6 @@
 * [@boost_asio/example/http/server/request_parser.hpp]
 * [@boost_asio/example/http/server/server.cpp]
 * [@boost_asio/example/http/server/server.hpp]
-* [@boost_asio/example/http/server/win_main.cpp]


 [heading HTTP Server 2]
@@ -98,9 +111,9 @@
 * [@boost_asio/example/http/server2/header.hpp]
 * [@boost_asio/example/http/server2/io_service_pool.cpp]
 * [@boost_asio/example/http/server2/io_service_pool.hpp]
+* [@boost_asio/example/http/server2/main.cpp]
 * [@boost_asio/example/http/server2/mime_types.cpp]
 * [@boost_asio/example/http/server2/mime_types.hpp]
-* [@boost_asio/example/http/server2/posix_main.cpp]
 * [@boost_asio/example/http/server2/reply.cpp]
 * [@boost_asio/example/http/server2/reply.hpp]
 * [@boost_asio/example/http/server2/request.hpp]
@@ -110,7 +123,6 @@
 * [@boost_asio/example/http/server2/request_parser.hpp]
 * [@boost_asio/example/http/server2/server.cpp]
 * [@boost_asio/example/http/server2/server.hpp]
-* [@boost_asio/example/http/server2/win_main.cpp]


 [heading HTTP Server 3]
@@ -120,9 +132,9 @@
 * [@boost_asio/example/http/server3/connection.cpp]
 * [@boost_asio/example/http/server3/connection.hpp]
 * [@boost_asio/example/http/server3/header.hpp]
+* [@boost_asio/example/http/server3/main.cpp]
 * [@boost_asio/example/http/server3/mime_types.cpp]
 * [@boost_asio/example/http/server3/mime_types.hpp]
-* [@boost_asio/example/http/server3/posix_main.cpp]
 * [@boost_asio/example/http/server3/reply.cpp]
 * [@boost_asio/example/http/server3/reply.hpp]
 * [@boost_asio/example/http/server3/request.hpp]
@@ -132,7 +144,6 @@
 * [@boost_asio/example/http/server3/request_parser.hpp]
 * [@boost_asio/example/http/server3/server.cpp]
 * [@boost_asio/example/http/server3/server.hpp]
-* [@boost_asio/example/http/server3/win_main.cpp]


 [heading HTTP Server 4]
@@ -143,9 +154,9 @@
 * [@boost_asio/example/http/server4/file_handler.cpp]
 * [@boost_asio/example/http/server4/file_handler.hpp]
 * [@boost_asio/example/http/server4/header.hpp]
+* [@boost_asio/example/http/server4/main.cpp]
 * [@boost_asio/example/http/server4/mime_types.cpp]
 * [@boost_asio/example/http/server4/mime_types.hpp]
-* [@boost_asio/example/http/server4/posix_main.cpp]
 * [@boost_asio/example/http/server4/reply.cpp]
 * [@boost_asio/example/http/server4/reply.hpp]
 * [@boost_asio/example/http/server4/request.hpp]
@@ -154,7 +165,6 @@
 * [@boost_asio/example/http/server4/server.cpp]
 * [@boost_asio/example/http/server4/server.hpp]
 * [@boost_asio/example/http/server4/unyield.hpp]
-* [@boost_asio/example/http/server4/win_main.cpp]
 * [@boost_asio/example/http/server4/yield.hpp]


@@ -182,6 +192,7 @@

 * [@boost_asio/example/iostreams/daytime_client.cpp]
 * [@boost_asio/example/iostreams/daytime_server.cpp]
+* [@boost_asio/example/iostreams/http_client.cpp]


 [heading Multicast]
@@ -231,8 +242,7 @@
 [heading SSL]

 Example client and server programs showing the use of the [link
-boost_asio.reference.ssl__stream ssl::stream<>] template with asynchronous
-operations.
+boost_asio.reference.ssl__stream ssl::stream<>] template with asynchronous operations.

 * [@boost_asio/example/ssl/client.cpp]
 * [@boost_asio/example/ssl/server.cpp]
=======================================
--- /trunk/libs/asio/doc/history.qbk    Wed Aug 18 08:21:10 2010
+++ /trunk/libs/asio/doc/history.qbk    Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -7,6 +7,214 @@

 [section:history Revision History]

+[heading Asio 1.6.0 / Boost 1.47]
+
+* Added support for signal handling, using a new class called `signal_set`.
+  Programs may add one or more signals to the set, and then perform an
+ `async_wait()` operation. The specified handler will be called when one of + the signals occurs. The same signal number may be registered with multiple + `signal_set` objects, however the signal number must be used only with Asio.
+  Addresses [@https://svn.boost.org/trac/boost/ticket/2879 #2879].
+* Added handler tracking, a new debugging aid. When enabled by defining
+  `BOOST_ASIO_ENABLE_HANDLER_TRACKING`, Asio writes debugging output to the
+  standard error stream. The output records asynchronous operations and the
+  relationships between their handlers. It may be post-processed using the
+  included [^handlerviz.pl] tool to create a visual representation of the
+  handlers (requires GraphViz).
+* Added support for timeouts on socket iostreams, such as `ip::tcp::iostream`.
+  A timeout is set by calling `expires_at()` or `expires_from_now()` to
+  establish a deadline. Any socket operations which occur past the deadline
+  will put the iostream into a bad state.
+* Added a new `error()` member function to socket iostreams, for retrieving the
+  error code from the most recent system call.
+* Added a new `basic_deadline_timer::cancel_one()` function. This function lets
+  you cancel a single waiting handler on a timer. Handlers are cancelled in
+  FIFO order.
+* Added a new `transfer_exactly()` completion condition. This can be used to
+  send or receive a specified number of bytes even if the total size of the
+  buffer (or buffer sequence) is larger.
+* Added new free functions `connect()` and `async_connect()`. These operations + try each endpoint in a list until the socket is successfully connected, and
+  are useful for creating TCP clients that work with both IPv4 and IPv6.
+* Extended the `buffer_size()` function so that it works for buffer sequences
+  in addition to individual buffers.
+* Added a new `buffer_copy()` function that can be used to copy the raw bytes
+  between individual buffers and buffer sequences.
+* Added new non-throwing overloads of `read()`, `read_at()`, `write()` and
+  `write_at()` that do not require a completion condition.
+* Added friendlier compiler errors for when a completion handler does not meet + the necessary type requirements. When C++0x is available (currently supported
+  for [^g++] 4.5 or later, and MSVC 10), `static_assert` is also used to
+  generate an informative error message. This checking may be disabled by
+  defining `BOOST_ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS`.
+* Added a new, completely rewritten SSL implementation. The new implementation
+  compiles faster, shows substantially improved performance, and supports
+ custom memory allocation and handler invocation. It includes new API features + such as certificate verification callbacks and has improved error reporting.
+  The new implementation is source-compatible with the old for most uses.
+ However, if necessary, the old implementation may still be used by defining
+  `BOOST_ASIO_ENABLE_OLD_SSL`.
+  Addresses [@https://svn.boost.org/trac/boost/ticket/3702 #3702],
+  [@https://svn.boost.org/trac/boost/ticket/3958 #3958].
+* Changed the separate compilation support such that, to use Asio's SSL
+ capabilities, you should also include `boost/asio/ssl/impl/src.hpp` in one
+  source file in your program.
+* Changed the SSL implementation to support build environments where SSL v2 is + explicitly disabled ([@https://svn.boost.org/trac/boost/ticket/5453 #5453]). +* Made the `is_loopback()`, `is_unspecified()` and `is_multicast()` functions
+  consistently available across the `ip::address`, `ip::address_v4` and
+  `ip::address_v6` classes
+  ([@https://svn.boost.org/trac/boost/ticket/3939 #3939]).
+* Added new `non_blocking()` functions for managing the non-blocking behaviour + of a socket or descriptor. The `io_control()` commands named `non_blocking_io`
+  are now deprecated in favour of these new functions.
+* Added new `native_non_blocking()` functions for managing the non-blocking
+ mode of the underlying socket or descriptor. These functions are intended to
+  allow the encapsulation of arbitrary non-blocking system calls as
+  asynchronous operations, in a way that is transparent to the user of the
+  socket object. The functions have no effect on the behaviour of the
+  synchronous operations of the socket or descriptor.
+* Added the `io_control()` member function for socket acceptors
+  ([@https://svn.boost.org/trac/boost/ticket/3297 #3297]).
+* Added a `release()` member function to posix descriptors. This function
+  releases ownership of the underlying native descriptor to the caller.
+  Addresses [@https://svn.boost.org/trac/boost/ticket/3900 #3900].
+* Added support for sequenced packet sockets (`SOCK_SEQPACKET`).
+* Added a new `io_service::stopped()` function that can be used to determine + whether the `io_service` has stopped (i.e. a `reset()` call is needed prior
+  to any further calls to `run()`, `run_one()`, `poll()` or `poll_one()`).
+* For consistency with the C++0x standard library, deprecated the `native_type`
+  typedefs in favour of `native_handle_type`, and the `native()` member
+  functions in favour of `native_handle()`.
+* Added support for C++0x move construction and assignment to sockets, serial
+  ports, POSIX descriptors and Windows handles.
+* Reduced the copying of handler function objects.
+* Added support for C++0x move construction to further reduce (and in some
+  cases eliminate) copying of handler objects.
+* Added support for the `fork()` system call. Programs that use `fork()` must + call `io_service.notify_fork()` at the appropriate times. Two new examples
+  have been added showing how to use this feature. Addresses
+  [@https://svn.boost.org/trac/boost/ticket/3238 #3238],
+  [@https://svn.boost.org/trac/boost/ticket/4162 #4162].
+* Cleaned up the handling of errors reported by the `close()` system call. In + particular, assume that most operating systems won't have `close()` fail with + `EWOULDBLOCK`, but if it does then set the blocking mode and restart the call.
+  If any other error occurs, assume the descriptor is closed. Addresses
+  [@https://svn.boost.org/trac/boost/ticket/3307 #3307].
+* Added new `asio::buffer()` overloads for `std::array`, when available.
+* Changed the implementation to use the C++0x standard library templates
+  `array`, `shared_ptr`, `weak_ptr` and `atomic` when they are available,
+  rather than the Boost equivalents.
+* Use C++0x variadic templates when available, rather than generating function
+  overloads using Boost.Preprocessor.
+* Changed exception reporting to include the function name in exception `what()`
+  messages.
+* Fixed insufficient initialisers warning with MinGW.
+* Changed the `shutdown_service()` member functions to be private.
+* Added archetypes for testing socket option functions.
+* Changed the Boost.Asio examples so that they don't use Boost.Thread's
+  convenience header. Use the header file that is specifically for the
+  boost::thread class instead.
+* Removed the dependency on OS-provided macros for the well-known IPv4 and IPv6 + addresses. This should eliminate annoying "missing braces around initializer"
+  warnings ([@https://svn.boost.org/trac/boost/ticket/3741 #3741]).
+* Reduced the size of `ip::basic_endpoint<>` objects (such as
+  `ip::tcp::endpoint` and `ip::udp::endpoint`).
+* Changed the reactor backends to assume that any descriptors or sockets added
+  using `assign()` may have been `dup()`-ed, and so require explicit
+  deregistration from the reactor
+  ([@https://svn.boost.org/trac/boost/ticket/4971 #4971]).
+* Removed the deprecated member functions named `io_service()`. The
+  `get_io_service()` member functions should be used instead.
+* Removed the deprecated typedefs `resolver_query` and `resolver_iterator` from
+  the `ip::tcp`, `ip::udp` and `ip::icmp` classes.
+* Modified the `buffers_iterator<>` and `ip::basic_resolver_iterator` classes
+  so that the value_type typedefs are non-const byte types.
+* Fixed warnings reported by g++'s [^-Wshadow] compiler option
+  ([@https://svn.boost.org/trac/boost/ticket/3905 #3905]).
+* Added an explicit cast to convert the `FIONBIO` constant to int, to suppress
+  a compiler warning on some platforms
+  ([@https://svn.boost.org/trac/boost/ticket/5128 #5128]).
+* Changed most examples to treat a failure by an accept operation as non-fatal
+  ([@https://svn.boost.org/trac/boost/ticket/5124 #5124]).
+* Fixed an error in the [^tick_count_timer] example by making the duration type + signed. Previously, a wait on an already-passed deadline would not return for
+  a very long time ([@https://svn.boost.org/trac/boost/ticket/5418 #5418]).
+
+[heading Asio 1.4.9 / Boost 1.46.1]
+
+* `EV_ONESHOT` seems to cause problems on some versions of Mac OS X, with the
+  `io_service` destructor getting stuck inside the `close()` system call.
+  Changed the kqueue backend to use `EV_CLEAR` instead
+  ([@https://svn.boost.org/trac/boost/ticket/5021 #5021]).
+* Fixed compile failures with some versions of [^g++] due to the use of
+  anonymous enums ([@https://svn.boost.org/trac/boost/ticket/4883 #4883]).
+* Fixed a bug on kqueue-based platforms, where some system calls that
+  repeatedly fail with `EWOULDBLOCK` are not correctly re-registered with
+  kqueue.
+* Changed `asio::streambuf` to ensure that its internal pointers are updated
+  correctly after the data has been modified using `std::streambuf` member
+  functions.
+* Fixed a bug that prevented the linger socket option from working on platforms
+  other than Windows.
+
+[heading Asio 1.4.8 / Boost 1.46]
+
+* Fixed an integer overflow problem that occurs when
+  `ip::address_v4::broadcast()` is used on 64-bit platforms.
+* Fixed a problem on older Linux kernels (where epoll is used without timerfd + support) that prevents timely delivery of deadline_timer handlers, after the
+  program has been running for some time
+  ([@https://svn.boost.org/trac/boost/ticket/5045 #5045]).
+
+[heading Asio 1.4.7 / Boost 1.45]
+
+* Fixed a problem on kqueue-based platforms where a `deadline_timer` may
+  never fire if the `io_service` is running in a background thread
+  ([@https://svn.boost.org/trac/boost/ticket/4568 #4568]).
+* Fixed a const-correctness issue that prevented valid uses of
+  `has_service<>` from compiling
+  ([@https://svn.boost.org/trac/boost/ticket/4638 #4638]).
+* Fixed MinGW cross-compilation
+  ([@https://svn.boost.org/trac/boost/ticket/4491 #4491]).
+* Removed dependency on deprecated Boost.System functions
+  ([@https://svn.boost.org/trac/boost/ticket/4672 #4672]).
+* Ensured `close()`\/`closesocket()` failures are correctly propagated
+  ([@https://svn.boost.org/trac/boost/ticket/4573 #4573]).
+* Added a check for errors returned by `InitializeCriticalSectionAndSpinCount`
+  ([@https://svn.boost.org/trac/boost/ticket/4574 #4574]).
+* Added support for hardware flow control on QNX
+  ([@https://svn.boost.org/trac/boost/ticket/4625 #4625]).
+* Always use `pselect()` on HP-UX, if it is available
+  ([@https://svn.boost.org/trac/boost/ticket/4578 #4578]).
+* Ensured handler arguments are passed as lvalues
+  ([@https://svn.boost.org/trac/boost/ticket/4744 #4744]).
+* Fixed Windows build when thread support is disabled
+  ([@https://svn.boost.org/trac/boost/ticket/4680 #4680]).
+* Fixed a Windows-specific problem where `deadline_timer` objects with expiry
+  times set more than 5 minutes in the future may never expire
+  ([@https://svn.boost.org/trac/boost/ticket/4745 #4745]).
+* Fixed the `resolver` backend on BSD platforms so that an empty service name
+  resolves to port number `0`, as per the documentation
+  ([@https://svn.boost.org/trac/boost/ticket/4690 #4690]).
+* Fixed read operations so that they do not accept buffer sequences of type
+ `const_buffers_1` ([@https://svn.boost.org/trac/boost/ticket/4746 #4746]). +* Redefined `Protocol` and `id` to avoid clashing with Objective-C++ keywords
+  ([@https://svn.boost.org/trac/boost/ticket/4191 #4191]).
+* Fixed a `vector` reallocation performance issue that can occur when there are
+  many active `deadline_timer` objects
+  ([@https://svn.boost.org/trac/boost/ticket/4780 #4780]).
+* Fixed the kqueue backend so that it compiles on NetBSD
+  ([@https://svn.boost.org/trac/boost/ticket/4662 #4662]).
+* Fixed the socket `io_control()` implementation on 64-bit Mac OS X and BSD
+  platforms ([@https://svn.boost.org/trac/boost/ticket/4782 #4782]).
+* Fixed a Windows-specific problem where failures from `accept()` are
+  incorrectly treated as successes
+  ([@https://svn.boost.org/trac/boost/ticket/4859 #4859]).
+* Deprecated the separate compilation header `<boost/asio/impl/src.cpp>` in
+  favour of `<boost/asio/impl/src.hpp>`
+  ([@https://svn.boost.org/trac/boost/ticket/4560 #4560]).
+
 [heading Asio 1.4.6 / Boost 1.44]

* Reduced compile times. (Note that some programs may need to add additional
=======================================
--- /trunk/libs/asio/doc/index.xml      Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/index.xml      Tue Aug 23 20:21:16 2011
@@ -2,7 +2,7 @@
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "../../../tools/boostbook/dtd/boostbook.dtd">

 <!--
- Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/noncopyable_dox.txt    Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/noncopyable_dox.txt    Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/allocation.qbk        Fri May 28 00:05:44 2010
+++ /trunk/libs/asio/doc/overview/allocation.qbk        Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -48,11 +48,6 @@
memory visibility should allocation functions need to be called from different
 threads.

-Custom memory allocation support is currently implemented for all asynchronous
-operations with the following exceptions:
-
-* Asynchronous SSL operations.
-
 [heading See Also]

 [link boost_asio.reference.asio_handler_allocate asio_handler_allocate],
=======================================
--- /trunk/libs/asio/doc/overview/async.qbk     Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/async.qbk     Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/basics.qbk    Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/basics.qbk    Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -43,13 +43,13 @@
 4. The [*operating system] returns the result of the operation to the
 [*io_service].

-5. The [*io_service] translates any error resulting from the operation into a
-`boost::system::error_code`. An `error_code` may be compared with specific
-values, or tested as a boolean (where a `false` result means that no error
-occurred). The result is then forwarded back up to the [*I/O object].
-
-6. The [*I/O object] throws an exception of type `boost::system::system_error` -if the operation failed. If the code to initiate the operation had instead been +5. The [*io_service] translates any error resulting from the operation into an +object of type `boost::system::error_code`. An `error_code` may be compared with +specific values, or tested as a boolean (where a `false` result means that no
+error occurred). The result is then forwarded back up to the [*I/O object].
+
+6. The [*I/O object] throws an exception of type `boost::system::system_error` if the
+operation failed. If the code to initiate the operation had instead been
 written as:

   boost::system::error_code ec;
=======================================
--- /trunk/libs/asio/doc/overview/bsd_sockets.qbk       Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/bsd_sockets.qbk       Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/buffers.qbk   Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/buffers.qbk   Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/implementation.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/overview/implementation.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -241,6 +241,10 @@
 `io_service::run()`, `io_service::run_one()`, `io_service::poll()` or
 `io_service::poll_one()`.

+* An additional thread per `io_service` is used to trigger timers. This thread
+is created on construction of the first `deadline_timer` or
+`deadline_timer_service` objects.
+
 * An additional thread per `io_service` is used for the `select`
demultiplexing. This thread is created on the first call to `async_connect()`.

=======================================
--- /trunk/libs/asio/doc/overview/iostreams.qbk Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/iostreams.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -31,6 +31,32 @@
     acceptor.accept(*stream.rdbuf());
     ...
   }
+
+Timeouts may be set by calling `expires_at()` or `expires_from_now()` to
+establish a deadline. Any socket operations that occur past the deadline will
+put the iostream into a "bad" state.
+
+For example, a simple client program like this:
+
+  ip::tcp::iostream stream;
+  stream.expires_from_now(boost::posix_time::seconds(60));
+  stream.connect("www.boost.org", "http");
+  stream << "GET /LICENSE_1_0.txt HTTP/1.0\r\n";
+  stream << "Host: www.boost.org\r\n";
+  stream << "Accept: */*\r\n";
+  stream << "Connection: close\r\n\r\n";
+  stream.flush();
+  std::cout << stream.rdbuf();
+
+will fail if all the socket operations combined take longer than 60 seconds.
+
+If an error does occur, the iostream's `error()` member function may be used to
+retrieve the error code from the most recent system call:
+
+  if (!stream)
+  {
+    std::cout << "Error: " << stream.error().message() << "\n";
+  }

 [heading See Also]

=======================================
--- /trunk/libs/asio/doc/overview/line_based.qbk        Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/line_based.qbk        Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/posix.qbk     Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/posix.qbk     Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -11,6 +11,8 @@

[link boost_asio.overview.posix.stream_descriptor Stream-Oriented File Descriptors]

+[link boost_asio.overview.posix.fork Fork]
+
 [section:local UNIX Domain Sockets]

Boost.Asio provides basic support UNIX domain sockets (also known as local sockets).
@@ -101,6 +103,43 @@
 target operating system. A program may test for the macro
`BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR` to determine whether they are supported.

+[endsect]
+
+[section:fork Fork]
+
+Boost.Asio supports programs that utilise the `fork()` system call. Provided the +program calls `io_service.notify_fork()` at the appropriate times, Boost.Asio will
+recreate any internal file descriptors (such as the "self-pipe trick"
+descriptor used for waking up a reactor). The notification is usually performed
+as follows:
+
+  io_service_.notify_fork(boost::asio::io_service::fork_prepare);
+  if (fork() == 0)
+  {
+    io_service_.notify_fork(boost::asio::io_service::fork_child);
+    ...
+  }
+  else
+  {
+    io_service_.notify_fork(boost::asio::io_service::fork_parent);
+    ...
+  }
+
+User-defined services can also be made fork-aware by overriding the
+`io_service::service::fork_service()` virtual function.
+
+Note that any file descriptors accessible via Boost.Asio's public API (e.g. the +descriptors underlying `basic_socket<>`, `posix::stream_descriptor`, etc.) are +not altered during a fork. It is the program's responsibility to manage these
+as required.
+
+[heading See Also]
+
+[link boost_asio.reference.io_service.notify_fork io_service::notify_fork()],
+[link boost_asio.reference.io_service.fork_event io_service::fork_event],
+[link boost_asio.reference.io_service__service.fork_service io_service::service::fork_service()],
+[link boost_asio.examples.fork Fork examples].
+
 [endsect]

 [endsect]
=======================================
--- /trunk/libs/asio/doc/overview/protocols.qbk Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/protocols.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -26,10 +26,40 @@
   }

The list of endpoints obtained above could contain both IPv4 and IPv6 endpoints, -so a program may try each of them until it finds one that works. This keeps the +so a program should try each of them until it finds one that works. This keeps the
 client program independent of a specific IP version.

-When an endpoint is available, a socket can be created and connected:
+To simplify the development of protocol-independent programs, TCP clients may +establish connections using the free functions [link boost_asio.reference.connect +connect()] and [link boost_asio.reference.async_connect async_connect()]. These
+operations try each endpoint in a list until the socket is successfully
+connected. For example, a single call:
+
+  ip::tcp::socket socket(my_io_service);
+  boost::asio::connect(socket, resolver.resolve(query));
+
+will synchronously try all endpoints until one is successfully connected.
+Similarly, an asynchronous connect may be performed by writing:
+
+  boost::asio::async_connect(socket_, iter,
+      boost::bind(&client::handle_connect, this,
+        boost::asio::placeholders::error));
+
+  // ...
+
+  void handle_connect(const error_code& error)
+  {
+    if (!error)
+    {
+      // Start read or write operations.
+    }
+    else
+    {
+      // Handle error.
+    }
+  }
+
+When a specific endpoint is available, a socket can be created and connected:

   ip::tcp::socket socket(my_io_service);
   socket.connect(endpoint);
=======================================
--- /trunk/libs/asio/doc/overview/rationale.qbk Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/rationale.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/reactor.qbk   Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/reactor.qbk   Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -18,8 +18,7 @@

   ip::tcp::socket socket(my_io_service);
   ...
-  ip::tcp::socket::non_blocking nb(true);
-  socket.io_control(nb);
+  socket.non_blocking(true);
   ...
   socket.async_read_some(null_buffers(), read_handler);
   ...
@@ -38,6 +37,8 @@
 [heading See Also]

 [link boost_asio.reference.null_buffers null_buffers],
+[link boost_asio.reference.basic_socket.non_blocking basic_socket::non_blocking()], +[link boost_asio.reference.basic_socket.native_non_blocking basic_socket::native_non_blocking()],
 [link boost_asio.examples.nonblocking nonblocking example].

 [endsect]
=======================================
--- /trunk/libs/asio/doc/overview/serial_ports.qbk      Fri May 28 00:05:44 2010
+++ /trunk/libs/asio/doc/overview/serial_ports.qbk      Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -15,12 +15,11 @@
where name is something like `"COM1"` on Windows, and `"/dev/ttyS0"` on POSIX
 platforms.

-Once opened, the serial port may be used as a [link
-boost_asio.overview.core.streams stream]. This means the objects can be used
-with any of the [link boost_asio.reference.read read()], [link
-boost_asio.reference.async_read async_read()], [link boost_asio.reference.write
-write()], [link boost_asio.reference.async_write async_write()], [link
-boost_asio.reference.read_until read_until()] or [link
+Once opened, the serial port may be used as a [link boost_asio.overview.core.streams
+stream]. This means the objects can be used with any of the [link
+boost_asio.reference.read read()], [link boost_asio.reference.async_read async_read()], +[link boost_asio.reference.write write()], [link boost_asio.reference.async_write +async_write()], [link boost_asio.reference.read_until read_until()] or [link
 boost_asio.reference.async_read_until async_read_until()] free functions.

The serial port implementation also includes option classes for configuring the
=======================================
--- /trunk/libs/asio/doc/overview/ssl.qbk       Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/ssl.qbk       Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -16,8 +16,8 @@
 mode, certificate files, and so on. As an illustration, client-side
 initialisation may look something like:

-  ssl::context ctx(my_io_service, ssl::context::sslv23);
-  ctx.set_verify_mode(ssl::context::verify_peer);
+  ssl::context ctx(ssl::context::sslv23);
+  ctx.set_verify_mode(ssl::verify_peer);
   ctx.load_verify_file("ca.pem");

 To use SSL with a TCP socket, one may write:
@@ -41,9 +41,8 @@

SSL handshaking must be performed prior to transmitting or receiving data over
 an encrypted connection. This is accomplished using the `ssl::stream`
-template's [link boost_asio.reference.ssl__stream.handshake handshake()] or
-[link boost_asio.reference.ssl__stream.async_handshake async_handshake()] member
-functions.
+template's [link boost_asio.reference.ssl__stream.handshake handshake()] or [link +boost_asio.reference.ssl__stream.async_handshake async_handshake()] member functions.

Once connected, SSL stream objects are used as synchronous or asynchronous read
 and write streams. This means the objects can be used with any of the [link
@@ -52,15 +51,65 @@
async_write()], [link boost_asio.reference.read_until read_until()] or [link
 boost_asio.reference.async_read_until async_read_until()] free functions.

+[heading Certificate Verification]
+
+Boost.Asio provides various methods for configuring the way SSL certificates are
+verified:
+
+* [link boost_asio.reference.ssl__context.set_default_verify_paths ssl::context::set_default_verify_paths()] +* [link boost_asio.reference.ssl__context.set_verify_mode ssl::context::set_verify_mode()] +* [link boost_asio.reference.ssl__context.set_verify_callback ssl::context::set_verify_callback()] +* [link boost_asio.reference.ssl__context.load_verify_file ssl::context::load_verify_file()] +* [link boost_asio.reference.ssl__stream.set_verify_mode ssl::stream::set_verify_mode()] +* [link boost_asio.reference.ssl__stream.set_verify_callback ssl::stream::set_verify_callback()]
+
+To simplify use cases where certificates are verified according to the rules in +RFC 2818 (certificate verification for HTTPS), Boost.Asio provides a reusable
+verification callback as a function object:
+
+* [link boost_asio.reference.ssl__rfc2818_verification ssl::rfc2818_verification]
+
+The following example shows verification of a remote host's certificate
+according to the rules used by HTTPS:
+
+  using boost::asio::ip::tcp;
+  namespace ssl = boost::asio::ssl;
+  typedef ssl::stream<tcp::socket> ssl_socket;
+
+  // Create a context that uses the default paths for
+  // finding CA certificates.
+  ssl::context ctx(ssl::context::sslv23);
+  ctx.set_default_verify_paths();
+
+  // Open a socket and connect it to the remote host.
+  boost::asio::io_service io_service;
+  ssl_socket sock(io_service, ctx);
+  tcp::resolver resolver(io_service);
+  tcp::resolver::query query("host.name", "https");
+  boost::asio::connect(sock.lowest_layer(), resolver.resolve(query));
+  sock.lowest_layer().set_option(tcp::no_delay(true));
+
+  // Perform SSL handshake and verify the remote host's
+  // certificate.
+  sock.set_verify_mode(ssl::verify_peer);
+  sock.set_verify_callback(ssl::rfc2818_verification("host.name"));
+  sock.handshake(ssl_socket::client);
+
+  // ... read and write as normal ...
+
+[heading SSL and Threads]
+
+SSL stream objects perform no locking of their own. Therefore, it is essential +that all asynchronous SSL operations are performed in an implicit or explicit +[link boost_asio.overview.core.strands strand]. Note that this means that no +synchronisation is required (and so no locking overhead is incurred) in single
+threaded programs.
+
 [heading See Also]

-[link boost_asio.reference.ssl__basic_context ssl::basic_context],
 [link boost_asio.reference.ssl__context ssl::context],
-[link boost_asio.reference.ssl__context_base ssl::context_base],
-[link boost_asio.reference.ssl__context_service ssl::context_service],
+[link boost_asio.reference.ssl__rfc2818_verification ssl::rfc2818_verification],
 [link boost_asio.reference.ssl__stream ssl::stream],
-[link boost_asio.reference.ssl__stream_base ssl::stream_base],
-[link boost_asio.reference.ssl__stream_service ssl::stream_service],
 [link boost_asio.examples.ssl SSL example].

 [heading Notes]
@@ -68,7 +117,7 @@
[@http://www.openssl.org OpenSSL] is required to make use of Boost.Asio's SSL
 support. When an application needs to use OpenSSL functionality that is not
wrapped by Boost.Asio, the underlying OpenSSL types may be obtained by calling [link -boost_asio.reference.ssl__basic_context.impl `ssl::context::impl()`] or [link
-boost_asio.reference.ssl__stream.impl `ssl::stream::impl()`].
+boost_asio.reference.ssl__context.native_handle `ssl::context::native_handle()`] or +[link boost_asio.reference.ssl__stream.native_handle `ssl::stream::native_handle()`].

 [endsect]
=======================================
--- /trunk/libs/asio/doc/overview/strands.qbk   Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/strands.qbk   Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/streams.qbk   Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/streams.qbk   Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/threads.qbk   Fri May 28 00:05:44 2010
+++ /trunk/libs/asio/doc/overview/threads.qbk   Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview/timers.qbk    Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/timers.qbk    Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -33,7 +33,7 @@
   ...
   i.run();

-The deadline associated with a timer may be also be obtained as a relative time: +The deadline associated with a timer may also be obtained as a relative time:

   boost::posix_time::time_duration time_until_expiry
     = t.expires_from_now();
=======================================
--- /trunk/libs/asio/doc/overview/windows.qbk   Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview/windows.qbk   Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/overview.qbk   Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/overview.qbk   Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -18,19 +18,29 @@
   * [link boost_asio.overview.core.reactor Reactor-Style Operations]
   * [link boost_asio.overview.core.line_based Line-Based Operations]
   * [link boost_asio.overview.core.allocation Custom Memory Allocation]
+  * [link boost_asio.overview.core.handler_tracking Handler Tracking]
 * [link boost_asio.overview.networking Networking]
   * [link boost_asio.overview.networking.protocols TCP, UDP and ICMP]
   * [link boost_asio.overview.networking.iostreams Socket Iostreams]
* [link boost_asio.overview.networking.bsd_sockets The BSD Socket API and Boost.Asio]
 * [link boost_asio.overview.timers Timers]
 * [link boost_asio.overview.serial_ports Serial Ports]
+* [link boost_asio.overview.signals Signal Handling]
 * [link boost_asio.overview.posix POSIX-Specific Functionality]
   * [link boost_asio.overview.posix.local UNIX Domain Sockets]
* [link boost_asio.overview.posix.stream_descriptor Stream-Oriented File Descriptors]
+  * [link boost_asio.overview.posix.fork Fork]
 * [link boost_asio.overview.windows Windows-Specific Functionality]
* [link boost_asio.overview.windows.stream_handle Stream-Oriented HANDLEs] * [link boost_asio.overview.windows.random_access_handle Random-Access HANDLEs]
 * [link boost_asio.overview.ssl SSL]
+* [link boost_asio.overview.cpp2011 C++ 2011 Support]
+  * [link boost_asio.overview.cpp2011.move_objects Movable I/O Objects]
+  * [link boost_asio.overview.cpp2011.move_handlers Movable Handlers]
+  * [link boost_asio.overview.cpp2011.variadic Variadic Templates]
+  * [link boost_asio.overview.cpp2011.array Array Container]
+  * [link boost_asio.overview.cpp2011.atomic Atomics]
+  * [link boost_asio.overview.cpp2011.shared_ptr Shared Pointers]
* [link boost_asio.overview.implementation Platform-Specific Implementation Notes]

 [include overview/rationale.qbk]
@@ -46,6 +56,7 @@
 * [link boost_asio.overview.core.reactor Reactor-Style Operations]
 * [link boost_asio.overview.core.line_based Line-Based Operations]
 * [link boost_asio.overview.core.allocation Custom Memory Allocation]
+* [link boost_asio.overview.core.handler_tracking Handler Tracking]

 [include overview/basics.qbk]
 [include overview/async.qbk]
@@ -56,6 +67,7 @@
 [include overview/reactor.qbk]
 [include overview/line_based.qbk]
 [include overview/allocation.qbk]
+[include overview/handler_tracking.qbk]

 [endsect]

@@ -73,9 +85,11 @@

 [include overview/timers.qbk]
 [include overview/serial_ports.qbk]
+[include overview/signals.qbk]
 [include overview/posix.qbk]
 [include overview/windows.qbk]
 [include overview/ssl.qbk]
+[include overview/cpp2011.qbk]
 [include overview/implementation.qbk]

 [endsect]
=======================================
--- /trunk/libs/asio/doc/quickref.xml   Sun Feb  7 18:57:55 2010
+++ /trunk/libs/asio/doc/quickref.xml   Tue Aug 23 20:21:16 2011
@@ -2,7 +2,7 @@
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "../../../tools/boostbook/dtd/boostbook.dtd">

 <!--
- Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/reference.qbk  Wed Aug 18 08:21:10 2010
+++ /trunk/libs/asio/doc/reference.qbk  Tue Aug 23 20:21:16 2011
File is too large to display a diff.
=======================================
--- /trunk/libs/asio/doc/reference.xsl  Wed Aug 18 08:21:10 2010
+++ /trunk/libs/asio/doc/reference.xsl  Tue Aug 23 20:21:16 2011
@@ -2,7 +2,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

 <!--
- Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + Copyright (c) 2003-2011 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)
@@ -26,7 +26,7 @@
 -->
 <xsl:template match="/doxygen">
 <xsl:text>[/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -43,6 +43,7 @@
 [include requirements/AsyncReadStream.qbk]
 [include requirements/AsyncWriteStream.qbk]
 [include requirements/CompletionHandler.qbk]
+[include requirements/ComposedConnectHandler.qbk]
 [include requirements/ConnectHandler.qbk]
 [include requirements/ConstBufferSequence.qbk]
 [include requirements/ConvertibleToConstBuffer.qbk]
@@ -54,6 +55,7 @@
 [include requirements/GettableSocketOption.qbk]
 [include requirements/Handler.qbk]
 [include requirements/HandleService.qbk]
+[include requirements/HandshakeHandler.qbk]
 [include requirements/InternetProtocol.qbk]
 [include requirements/IoControlCommand.qbk]
 [include requirements/IoObjectService.qbk]
@@ -64,10 +66,14 @@
 [include requirements/ReadHandler.qbk]
 [include requirements/ResolveHandler.qbk]
 [include requirements/ResolverService.qbk]
+[include requirements/SeqPacketSocketService.qbk]
 [include requirements/SerialPortService.qbk]
 [include requirements/Service.qbk]
 [include requirements/SettableSerialPortOption.qbk]
 [include requirements/SettableSocketOption.qbk]
+[include requirements/ShutdownHandler.qbk]
+[include requirements/SignalHandler.qbk]
+[include requirements/SignalSetService.qbk]
 [include requirements/SocketAcceptorService.qbk]
 [include requirements/SocketService.qbk]
 [include requirements/StreamDescriptorService.qbk]
@@ -245,6 +251,18 @@
select="concat(substring-before($name, ']'), '_rb_', substring-after($name, ']'))"/>
       </xsl:call-template>
     </xsl:when>
+    <xsl:when test="contains($name, '(')">
+      <xsl:call-template name="make-id">
+        <xsl:with-param name="name"
+ select="concat(substring-before($name, '('), '_lp_', substring-after($name, '('))"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:when test="contains($name, ')')">
+      <xsl:call-template name="make-id">
+        <xsl:with-param name="name"
+ select="concat(substring-before($name, ')'), '_rp_', substring-after($name, ')'))"/>
+      </xsl:call-template>
+    </xsl:when>
     <xsl:when test="contains($name, '+')">
       <xsl:call-template name="make-id">
         <xsl:with-param name="name"
@@ -633,16 +651,66 @@


 <xsl:template match="ref[@kindref='member']" mode="markup">
-  <xsl:text>`</xsl:text>
-  <xsl:value-of select="."/>
-  <xsl:text>`</xsl:text>
+  <xsl:variable name="dox-ref-id" select="@refid"/>
+ <xsl:variable name="memberdefs" select="/doxygen//compounddef/sectiondef/memberdef[@id=$dox-ref-id]"/>
+  <xsl:choose>
+ <xsl:when test="contains(@refid, 'namespaceboost_1_1asio') and count($memberdefs) &gt; 0"> + <xsl:variable name="dox-compound-name" select="($memberdefs)[1]/../../compoundname"/>
+      <xsl:variable name="dox-name" select="($memberdefs)[1]/name"/>
+      <xsl:variable name="ref-name">
+        <xsl:call-template name="strip-asio-ns">
+ <xsl:with-param name="name" select="concat($dox-compound-name,'::',$dox-name)"/>
+        </xsl:call-template>
+      </xsl:variable>
+      <xsl:variable name="ref-id">
+        <xsl:call-template name="make-id">
+          <xsl:with-param name="name" select="$ref-name"/>
+        </xsl:call-template>
+      </xsl:variable>
+      <xsl:text>[link boost_asio.reference.</xsl:text>
+      <xsl:value-of select="$ref-id"/>
+      <xsl:text> `</xsl:text>
+      <xsl:value-of name="text" select="$ref-name"/>
+      <xsl:text>`]</xsl:text>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>`</xsl:text>
+      <xsl:value-of select="."/>
+      <xsl:text>`</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>


 <xsl:template match="ref[@kindref='member']" mode="markup-nested">
-  <xsl:text>`</xsl:text>
-  <xsl:value-of select="."/>
-  <xsl:text>`</xsl:text>
+  <xsl:variable name="dox-ref-id" select="@refid"/>
+ <xsl:variable name="memberdefs" select="/doxygen//compounddef/sectiondef/memberdef[@id=$dox-ref-id]"/>
+  <xsl:choose>
+ <xsl:when test="contains(@refid, 'namespaceboost_1_1asio') and count($memberdefs) &gt; 0"> + <xsl:variable name="dox-compound-name" select="($memberdefs)[1]/../../compoundname"/>
+      <xsl:variable name="dox-name" select="($memberdefs)[1]/name"/>
+      <xsl:variable name="ref-name">
+        <xsl:call-template name="strip-asio-ns">
+ <xsl:with-param name="name" select="concat($dox-compound-name,'::',$dox-name)"/>
+        </xsl:call-template>
+      </xsl:variable>
+      <xsl:variable name="ref-id">
+        <xsl:call-template name="make-id">
+          <xsl:with-param name="name" select="$ref-name"/>
+        </xsl:call-template>
+      </xsl:variable>
+      <xsl:text>[link boost_asio.reference.</xsl:text>
+      <xsl:value-of select="$ref-id"/>
+      <xsl:text> `</xsl:text>
+      <xsl:value-of name="text" select="$ref-name"/>
+      <xsl:text>`]</xsl:text>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>`</xsl:text>
+      <xsl:value-of select="."/>
+      <xsl:text>`</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>


@@ -876,6 +944,56 @@
 ]
 </xsl:if>

+<xsl:if test="$class-name = 'io_service::service'">
+<xsl:if test="count(sectiondef[@kind='private-func']) > 0">
+[heading Private Member Functions]
+[table
+  [[Name][Description]]
+<xsl:for-each select="sectiondef[@kind='private-func']/memberdef" mode="class-table">
+  <xsl:sort select="name"/>
+  <xsl:variable name="name">
+    <xsl:value-of select="name"/>
+  </xsl:variable>
+  <xsl:variable name="id">
+    <xsl:call-template name="make-id">
+      <xsl:with-param name="name" select="$name"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:variable name="doxygen-id">
+    <xsl:value-of select="@id"/>
+  </xsl:variable>
+  <xsl:variable name="overload-count">
+    <xsl:value-of select="count(../memberdef[name = $name])"/>
+  </xsl:variable>
+  <xsl:variable name="overload-position">
+    <xsl:for-each select="../memberdef[name = $name]">
+      <xsl:if test="@id = $doxygen-id">
+        <xsl:value-of select="position()"/>
+      </xsl:if>
+    </xsl:for-each>
+  </xsl:variable>
+  <xsl:if test="$overload-position = 1">
+  [
+ [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
+      <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
+    [</xsl:text><xsl:value-of select="briefdescription"/>
+  </xsl:if>
+ <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
+    <xsl:value-of select="$newline"/>
+    <xsl:value-of select="$newline"/>
+    <xsl:text>     </xsl:text>
+    <xsl:value-of select="briefdescription"/>
+  </xsl:if>
+  <xsl:if test="$overload-position = $overload-count">
+  <xsl:text>]
+  ]
+  </xsl:text>
+  </xsl:if>
+</xsl:for-each>
+]
+</xsl:if>
+</xsl:if>
+
<xsl:if test="count(sectiondef[@kind='public-attrib' or @kind='public-static-attrib']) > 0">
 [heading Data Members]
 [table
@@ -1015,6 +1133,14 @@
   <xsl:with-param name="class-id" select="$class-id"/>
   <xsl:with-param name="class-file" select="$class-file"/>
 </xsl:apply-templates>
+<xsl:if test="$class-name = 'io_service::service'">
+ <xsl:apply-templates select="sectiondef[@kind='private-func']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-detail">
+    <xsl:sort select="name"/>
+    <xsl:with-param name="class-name" select="$class-name"/>
+    <xsl:with-param name="class-id" select="$class-id"/>
+    <xsl:with-param name="class-file" select="$class-file"/>
+  </xsl:apply-templates>
+</xsl:if>
 </xsl:template>


@@ -1281,6 +1407,9 @@
         <xsl:when test="declname = 'CompletionCondition'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+        <xsl:when test="declname = 'ConnectCondition'">
+          <xsl:value-of select="declname"/>
+        </xsl:when>
         <xsl:when test="declname = 'Context_Service'">
           <xsl:value-of select="declname"/>
         </xsl:when>
@@ -1293,7 +1422,7 @@
         <xsl:when test="declname = 'Function'">
           <xsl:value-of select="declname"/>
         </xsl:when>
-        <xsl:when test="declname = 'HandshakeHandler'">
+        <xsl:when test="declname = 'Iterator'">
           <xsl:value-of select="declname"/>
         </xsl:when>
         <xsl:when test="declname = 'MatchCondition'">
@@ -1311,9 +1440,6 @@
         <xsl:when test="declname = 'PointerToPodType'">
           <xsl:value-of select="declname"/>
         </xsl:when>
-        <xsl:when test="declname = 'ShutdownHandler'">
-          <xsl:value-of select="declname"/>
-        </xsl:when>
<xsl:when test="declname = 'SocketService1' or declname = 'SocketService2'"> <xsl:value-of select="concat('``[link boost_asio.reference.SocketService ', declname, ']``')"/>
         </xsl:when>
@@ -1338,6 +1464,9 @@
         <xsl:when test="declname = 'Traits'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+        <xsl:when test="declname = 'VerifyCallback'">
+          <xsl:value-of select="declname"/>
+        </xsl:when>
         <xsl:when test="count(declname) = 0">
         </xsl:when>
         <xsl:otherwise>
=======================================
--- /trunk/libs/asio/doc/requirements/AcceptHandler.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/AcceptHandler.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/requirements/AsyncRandomAccessWriteDevice.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/AsyncRandomAccessWriteDevice.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/requirements/AsyncReadStream.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/AsyncReadStream.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -16,7 +16,7 @@
 [table Buffer-oriented asynchronous read stream requirements
   [[operation] [type] [semantics, pre/post-conditions]]
   [
-    [`a.io_service();`]
+    [`a.get_io_service();`]
     [`io_service&`]
     [Returns the `io_service` object through which the `async_read_some`
     handler `h` will be invoked.]
@@ -27,7 +27,7 @@
     [
       Initiates an asynchronous operation to read one or more bytes of data
       from the stream `a`. The operation is performed via the `io_service`
-      object `a.io_service()` and behaves according to [link
+      object `a.get_io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n
       \n
=======================================
--- /trunk/libs/asio/doc/requirements/AsyncWriteStream.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/AsyncWriteStream.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -15,7 +15,7 @@
 [table Buffer-oriented asynchronous write stream requirements
   [[operation] [type] [semantics, pre/post-conditions]]
   [
-    [`a.io_service();`]
+    [`a.get_io_service();`]
     [`io_service&`]
     [Returns the `io_service` object through which the `async_write_some`
     handler `h` will be invoked.]
@@ -26,7 +26,7 @@
     [
Initiates an asynchronous operation to write one or more bytes of data to the stream `a`. The operation is performed via the `io_service` object
-      `a.io_service()` and behaves according to [link
+      `a.get_io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n
       \n
=======================================
--- /trunk/libs/asio/doc/requirements/CompletionHandler.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/CompletionHandler.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/requirements/ConnectHandler.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/ConnectHandler.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/requirements/ConstBufferSequence.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/ConstBufferSequence.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/requirements/ConvertibleToConstBuffer.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/ConvertibleToConstBuffer.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/requirements/ConvertibleToMutableBuffer.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/ConvertibleToMutableBuffer.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
=======================================
--- /trunk/libs/asio/doc/requirements/DatagramSocketService.qbk Sun Feb 7 18:57:55 2010 +++ /trunk/libs/asio/doc/requirements/DatagramSocketService.qbk Tue Aug 23 20:21:16 2011
@@ -1,5 +1,5 @@
 [/
- / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / Copyright (c) 2003-2011 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)
@@ -48,7 +48,7 @@
       \n
       Initiates an asynchronous operation to read one or more bytes of data
       from a connected socket `b`. The operation is performed via the
-      `io_service` object `a.io_service()` and behaves according to [link
+ `io_service` object `a.get_io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n
       \n
@@ -95,7 +95,7 @@
       \n
       Initiates an asynchronous operation to read one or more bytes of data
       from an unconnected socket `b`. The operation is performed via the
-      `io_service` object `a.io_service()` and behaves according to [link
+ `io_service` object `a.get_io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n
       \n
@@ -145,7 +145,7 @@
       \n
Initiates an asynchronous operation to write one or more bytes of data to a connected socket `b`. The operation is performed via the `io_service`
-      object `a.io_service()` and behaves according to [link
+      object `a.get_io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n
       \n
@@ -198,7 +198,7 @@
       \n
Initiates an asynchronous operation to write one or more bytes of data to an unconnected socket `b`. The operation is performed via the `io_service`
-      object `a.io_service()` and behaves according to [link
+      object `a.get_io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n
       \n
=======================================
***Additional files exist in this changeset.***

Other related posts:

  • » [boost-doc-zh] r436 committed - libs/asio/doc升级到boost_1_47_0. 从boost_1_47_0复制该目录. 该目录是qbk源文件, 已检查确认都是待... - boost-doc-zh