A completion condition is a function object that is used with the algorithms read ([buffer.read]), async_read ([buffer.async.read]), write ([buffer.write]), and async_write ([buffer.async.write]) to determine when the algorithm has completed transferring data.
A type X meets the CompletionCondition requirements if it satisfies the requirements of Destructible (C++ 2014 [destructible]) and CopyConstructible (C++ 2014 [copyconstructible]), as well as the additional requirements listed below.
In the table below, x denotes a value of type X, ec denotes a (possibly const) value of type error_code, and n denotes a (possibly const) value of type size_t.
expression | return type | assertion/note pre/post-condition |
x(ec, n) | size_t |
Let n be the total number of bytes transferred by the read or write algorithm so far. Returns the maximum number of bytes to be transferred on the next read_some, async_read_some, write_some, or async_write_some operation performed by the algorithm. Returns 0 to indicate that the algorithm is complete. |