read method

  1. @override
int read(
  1. Int8List? buffer,
  2. int? offset,
  3. int? length
)
override

Reads from the underlying input stream if not null.

Implementation

@override
int read(Int8List? buffer, int? offset, int? length) {
  offset ??= 0;
  length ??= 0;
  if (buffer == null) {
    throw ArgumentError.notNull("buffer");
  }

  if (offset + length > buffer.length) {
    throw ArgumentError("The range exceeds the buffer length");
  }

  if (_readIterator == null || length <= 0) {
    return 0;
  }

  int i = 0;
  while (i < length && (_readIterator?.moveNext() ?? false)) {
    buffer[offset + i] = (_readIterator?.current ?? 0);
    i++;
  }

  // cleanup iterator when we've reached the end
  if (_readIterator?.current == null) {
    _readIterator = null;
  }

  return i;
}