read method

  1. @override
Future<Uint8List> read([
  1. int? maxLength
])
override

Reads data from the stream

Implementation

@override
Future<Uint8List> read([int? maxLength]) async {
  // First, serve the prepended data
  if (!_prependedConsumed) {
    final remaining = _prependedData.length - _prependedOffset;
    if (remaining > 0) {
      final toRead = maxLength != null
          ? (maxLength < remaining ? maxLength : remaining)
          : remaining;
      final result = Uint8List.view(
        _prependedData.buffer,
        _prependedData.offsetInBytes + _prependedOffset,
        toRead,
      );
      _prependedOffset += toRead;

      if (_prependedOffset >= _prependedData.length) {
        _prependedConsumed = true;
      }

      return result;
    }
    _prependedConsumed = true;
  }

  // Then read from underlying stream
  return _underlying.read(maxLength);
}