17 Buffer-oriented streams [buffer.stream]

17.1 Requirements [buffer.stream.reqmts]

17.1.1 Buffer-oriented synchronous read stream requirements [buffer.stream.reqmts.syncreadstream]

A type X meets the SyncReadStream requirements if it satisfies the requirements listed in Table [tab:buffer.stream.reqmts.syncreadstream.requirements].

An orderly shutdown is the procedure for shutting down a stream after all work in progress has been completed, without loss of data.

In Table [tab:buffer.stream.reqmts.syncreadstream.requirements], a denotes a value of type X, mb denotes a (possibly const) value of a type satisfying the MutableBufferSequence ([buffer.reqmts.mutablebuffersequence]) requirements, and ec denotes an object of type error_code.

Table 16 — SyncReadStream requirements
operationtypesemantics, pre/post-conditions
a.read_some(mb) a.read_some(mb,ec) size_t Meets the requirements for a read operation ([buffer.reqmts.read.write]).
If buffer_size(mb) > 0, reads one or more bytes of data from the stream a into the buffer sequence mb. If successful, sets ec such that !ec is true, and returns the number of bytes read. If an error occurred, sets ec such that !!ec is true, and returns 0. If all data has been read from the stream, and the stream performed an orderly shutdown, sets ec to stream_errc::eof and returns 0. If buffer_size(mb) == 0, the operation shall not block. Sets ec such that !ec is true, and returns 0.