尝试从流中读取指定数量的数据,然后返回。
template< typename SyncReadStream, typename Allocator, typename CompletionCondition> std::size_t read( SyncReadStream & s, basic_streambuf< Allocator > & b, CompletionCondition completion_condition, boost::system::error_code & ec, constraint_t< is_completion_condition< CompletionCondition >::value > = 0);
此函数用于从流中读取指定数量的字节数据。调用将阻塞,直到满足以下任一条件:
此操作通过零次或多次调用流的 read_some 函数来实现。
要从中读取数据的流。类型必须支持 SyncReadStream 概念。
用于读取数据的 basic_streambuf
对象。
用于确定读取操作是否完成的函数对象。函数对象的签名必须是:
std::size_t completion_condition( // Result of latest read_some operation. const boost::system::error_code& error, // Number of bytes transferred so far. std::size_t bytes_transferred );
返回值为 0 表示读取操作已完成。非零返回值表示下一次调用流的 read_some 函数时要读取的最大字节数。
用于指示发生何种错误(如果有)。
读取的字节数。如果发生错误,则返回错误发生前成功传输的总字节数。