1[/
2 / Copyright (c) 2003-2021 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:WaitHandler Wait handler requirements]
9
10A wait handler must meet the requirements for a [link
11boost_asio.reference.Handler handler]. A value `h` of a wait handler class
12should work correctly in the expression `h(ec)`, where `ec` is an lvalue of
13type `const error_code`.
14
15[heading Examples]
16
17A free function as a wait handler:
18
19  void wait_handler(
20      const boost::system::error_code& ec)
21  {
22    ...
23  }
24
25A wait handler function object:
26
27  struct wait_handler
28  {
29    ...
30    void operator()(
31        const boost::system::error_code& ec)
32    {
33      ...
34    }
35    ...
36  };
37
38A lambda as a wait handler:
39
40  socket.async_wait(...,
41      [](const boost::system::error_code& ec)
42      {
43        ...
44      });
45
46A non-static class member function adapted to a wait handler using
47`std::bind()`:
48
49  void my_class::wait_handler(
50      const boost::system::error_code& ec)
51  {
52    ...
53  }
54  ...
55  socket.async_wait(...,
56      std::bind(&my_class::wait_handler,
57        this, std::placeholders::_1));
58
59A non-static class member function adapted to a wait handler using
60`boost::bind()`:
61
62  void my_class::wait_handler(
63      const boost::system::error_code& ec)
64  {
65    ...
66  }
67  ...
68  socket.async_wait(...,
69      boost::bind(&my_class::wait_handler,
70        this, boost::asio::placeholders::error));
71
72[endsect]
73