Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / asio / doc / requirements / BufferedHandshakeHandler.qbk
1 [/
2  / Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
3  /
4  / Distributed under the Boost Software License, Version 1.0. (See accompanying
5  / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6  /]
7
8 [section:BufferedHandshakeHandler Buffered handshake handler requirements]
9
10 A buffered handshake handler must meet the requirements for a [link
11 boost_asio.reference.Handler handler]. A value `h` of a buffered handshake handler
12 class should work correctly in the expression `h(ec, s)`, where `ec` is an
13 lvalue of type `const error_code` and `s` is an lvalue of type `const size_t`.
14
15 [heading Examples]
16
17 A free function as a buffered handshake handler:
18
19   void handshake_handler(
20       const boost::system::error_code& ec,
21       std::size_t bytes_transferred)
22   {
23     ...
24   }
25
26 A buffered handshake handler function object:
27
28   struct handshake_handler
29   {
30     ...
31     void operator()(
32         const boost::system::error_code& ec,
33         std::size_t bytes_transferred)
34     {
35       ...
36     }
37     ...
38   };
39
40 A non-static class member function adapted to a buffered handshake handler using `bind()`:
41
42   void my_class::handshake_handler(
43       const boost::system::error_code& ec,
44       std::size_t bytes_transferred)
45   {
46     ...
47   }
48   ...
49   socket.async_handshake(...,
50       boost::bind(&my_class::handshake_handler,
51         this, boost::asio::placeholders::error,
52         boost::asio::placeholders::bytes_transferred));
53
54 [endsect]