Skip to content

Commit 38cff02

Browse files
authored
Refactor: use await for loop instead of Stream.pipe. (#8726)
1 parent 7e8db9a commit 38cff02

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

app/lib/package/backend.dart

+15-14
Original file line numberDiff line numberDiff line change
@@ -1861,25 +1861,26 @@ Future _saveTarballToFS(Stream<List<int>> data, String filename) async {
18611861
if (await targetFile.exists()) {
18621862
await targetFile.delete();
18631863
}
1864+
late IOSink sink;
18641865
try {
1866+
sink = targetFile.openWrite();
18651867
int receivedBytes = 0;
1866-
final stream = data.transform<List<int>>(
1867-
StreamTransformer<List<int>, List<int>>.fromHandlers(
1868-
handleData: (chunk, sink) {
1869-
receivedBytes += chunk.length;
1870-
if (receivedBytes <= UploadSignerService.maxUploadSize) {
1871-
sink.add(chunk);
1872-
} else {
1873-
sink.addError(PackageRejectedException.archiveTooLarge(
1874-
UploadSignerService.maxUploadSize));
1875-
}
1876-
},
1877-
),
1878-
);
1879-
await stream.pipe(targetFile.openWrite());
1868+
await for (final chunk in data) {
1869+
receivedBytes += chunk.length;
1870+
if (receivedBytes <= UploadSignerService.maxUploadSize) {
1871+
sink.add(chunk);
1872+
} else {
1873+
await sink.close();
1874+
throw PackageRejectedException.archiveTooLarge(
1875+
UploadSignerService.maxUploadSize);
1876+
}
1877+
}
1878+
await sink.flush();
18801879
} catch (e, st) {
18811880
_logger.warning('An error occurred while streaming tarball to FS.', e, st);
18821881
rethrow;
1882+
} finally {
1883+
await sink.close();
18831884
}
18841885
_logger.info('Finished streaming tarball to FS (elapsed: ${sw.elapsed}).');
18851886
}

0 commit comments

Comments
 (0)