read method

  1. @override
Future<Uint8List> read(
  1. int offset,
  2. int count
)
override

Implementation

@override
Future<Uint8List> read(int offset, int count) {
  final int safe = clampCount(offset, count);
  if (safe == 0) return Future<Uint8List>.value(Uint8List(0));
  final Completer<Uint8List> completer = Completer<Uint8List>();
  _queue = _queue.then((void _) async {
    if (_closed) {
      completer.completeError(const UDocError(code: UDocErrorCode.io, message: "Source is closed"));
      return;
    }
    try {
      await _handle.setPosition(offset);
      completer.complete(await _handle.read(safe));
    } on Object catch (e) {
      completer.completeError(UDocError(code: UDocErrorCode.io, message: "Read failed", detail: "$e", path: path));
    }
  });
  return completer.future;
}