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:CompletionCondition Completion condition requirements]
9
10A ['completion condition] is a function object that is used with the algorithms
11[link boost_asio.reference.read `read`], [link boost_asio.reference.async_read
12`async_read`], [link boost_asio.reference.write `write`], and [link
13boost_asio.reference.async_write `async_write`] to determine when the algorithm has
14completed transferring data.
15
16A type `X` meets the `CompletionCondition` requirements if it satisfies the
17requirements of `Destructible` (C++Std [destructible]) and
18`MoveConstructible` (C++Std [moveconstructible]), as well as the additional
19requirements listed below.
20
21In the table below, `x` denotes a value of type `X`, `ec` denotes a (possibly
22const) value of type `error_code`, and `n` denotes a (possibly const) value of
23type `size_t`.
24
25[table CompletionCondition requirements
26  [[expression] [return type] [assertion/note[br]pre/post-condition]]
27  [
28    [`x(ec, n)`]
29    [`size_t`]
30    [
31      Let `n` be the total number of bytes transferred by the read or write
32      algorithm so far.[br]
33      [br]
34      Returns the maximum number of bytes to be transferred on the next
35      `read_some`, `async_read_some`, `write_some`, or `async_write_some`
36      operation performed by the algorithm. Returns `0` to indicate that the
37      algorithm is complete.
38    ]
39  ]
40]
41
42[endsect]
43