A type X meets the AsyncReadStream requirements if it satisfies the requirements listed below.

In the table below, a denotes a value of type X, mb denotes a (possibly const) value of a type satisfying the MutableBufferSequence ([buffer.reqmts.mutablebuffersequence]) requirements, and t is a completion token.

Table 17 — AsyncReadStream requirements

operation | type | semantics, pre/post-conditions |

a.get_executor() | A type satisfying the Executor requirements ([async.reqmts.executor]). | Returns the associated I/O executor. |

a.async_read_some(mb,t) | The return type is determined according to the requirements for an asynchronous operation ([async.reqmts.async]). |
Meets the requirements for a read operation ([buffer.reqmts.read.write]) and an asynchronous operation ([async.reqmts.async]) with completion signature void(error_code ec, size_t n). If buffer_size(mb) > 0, initiates an asynchronous operation to read one or more bytes of data from the stream a into the buffer sequence mb. If successful, ec is set such that !ec is true, and n is the number of bytes read. If an error occurred, ec is set such that !!ec is true, and n is 0. If all data has been read from the stream, and the stream performed an orderly shutdown, ec is stream_errc::eof and n is 0. If buffer_size(mb) == 0, the operation completes immediately. ec is set such that !ec is true, and n is 0. |