17 Buffer-oriented streams [buffer.stream]

17.1 Requirements [buffer.stream.reqmts]

17.1.2 Buffer-oriented asynchronous read stream requirements [buffer.stream.reqmts.asyncreadstream]

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
operationtypesemantics, 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.