Index: runtime/bin/vmservice/vmservice_io.dart |
diff --git a/runtime/bin/vmservice/vmservice_io.dart b/runtime/bin/vmservice/vmservice_io.dart |
index 4e5ccabf2a75663afa54f3ba5bbaf5ac699cb7a9..49e8ad7c3b375a01d9d5cfface38538a689ca6e8 100644 |
--- a/runtime/bin/vmservice/vmservice_io.dart |
+++ b/runtime/bin/vmservice/vmservice_io.dart |
@@ -127,6 +127,15 @@ Future writeFileCallback(Uri path, List<int> bytes) async { |
return WriteLimiter.scheduleWrite(path, bytes); |
} |
+Future writeStreamFileCallback(Uri path, Stream<List<int>> bytes) async { |
+ var file = new File.fromUri(path); |
+ var parent_directory = file.parent; |
+ await parent_directory.create(recursive: true); |
+ IOSink sink = await file.openWrite(); |
+ await sink.addStream(bytes); |
+ await sink.close(); |
+} |
+ |
Future<List<int>> readFileCallback(Uri path) async { |
var file = new File.fromUri(path); |
return await file.readAsBytes(); |
@@ -191,6 +200,7 @@ main() { |
VMServiceEmbedderHooks.createTempDir = createTempDirCallback; |
VMServiceEmbedderHooks.deleteDir = deleteDirCallback; |
VMServiceEmbedderHooks.writeFile = writeFileCallback; |
+ VMServiceEmbedderHooks.writeStreamFile = writeStreamFileCallback; |
VMServiceEmbedderHooks.readFile = readFileCallback; |
VMServiceEmbedderHooks.listFiles = listFilesCallback; |
// Always instantiate the vmservice object so that the exit message |