writeMany method
Implementation
Future<List<int>> writeMany(
List<WriteRequest> requests, {
CancelToken? cancel,
}) async {
cancel?.throwIfCancelled(path: path);
if (requests.length > 1) {
final merged = _tryMergeContiguous(requests);
if (merged != null) {
final n = await writeAt(
merged.offset,
IoSlice(merged.bytes),
cancel: cancel,
);
if (n != merged.bytes.length) {
throw BlitIOException(
'short batch write: $n of ${merged.bytes.length}',
path: path,
);
}
return [for (final request in requests) request.src.length];
}
final span = await _tryMergeSpan(requests, cancel: cancel);
if (span != null) {
final n = await writeAt(
span.offset,
IoSlice(span.bytes),
cancel: cancel,
);
if (n != span.bytes.length) {
throw BlitIOException(
'short batch write: $n of ${span.bytes.length}',
path: path,
);
}
return [for (final request in requests) request.src.length];
}
}
final out = <int>[];
for (final request in requests) {
out.add(await writeAt(request.offset, request.src, cancel: cancel));
}
return out;
}