readerStream function

Stream<Uint8List> readerStream(
  1. AsyncRead reader, {
  2. int bufferSize = 64 * 1024,
})

Turns an AsyncRead into a chunked stream.

Implementation

Stream<Uint8List> readerStream(
  AsyncRead reader, {
  int bufferSize = 64 * 1024,
}) async* {
  if (bufferSize <= 0) throw RangeError.value(bufferSize, 'bufferSize');
  while (true) {
    final buffer = Uint8List(bufferSize);
    final dst = ReadBuf(buffer);
    final result = await reader.readInto(dst);
    if (dst.filled > 0) {
      yield Uint8List.sublistView(buffer, 0, dst.filled);
    }
    if (result.eof && dst.filled == 0) break;
    if (dst.filled == 0) break;
  }
}