[/
 / Copyright (c) 2003-2010 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:ReadHandler Read handler requirements]

A read handler must meet the requirements for a [link
boost_asio.reference.Handler handler]. A value `h` of a read handler class
should work correctly in the expression `h(ec, s)`, where `ec` is an lvalue of
type `const error_code` and `s` is an lvalue of type `const size_t`.

[heading Examples]

A free function as a read handler:

  void read_handler(
      const boost::system::error_code& ec,
      std::size_t bytes_transferred)
  {
    ...
  }

A read handler function object:

  struct read_handler
  {
    ...
    void operator()(
        const boost::system::error_code& ec,
        std::size_t bytes_transferred)
    {
      ...
    }
    ...
  };

A non-static class member function adapted to a read handler using `bind()`:

  void my_class::read_handler(
      const boost::system::error_code& ec,
      std::size_t bytes_transferred)
  {
    ...
  }
  ...
  socket.async_read(...,
      boost::bind(&my_class::read_handler,
        this, boost::asio::placeholders::error,
        boost::asio::placeholders::bytes_transferred));

[endsect]
