Chromium Code Reviews| Index: runtime/bin/vmservice/vmservice_io.dart |
| diff --git a/runtime/bin/vmservice/vmservice_io.dart b/runtime/bin/vmservice/vmservice_io.dart |
| index bfa99a6830d99593cf705f3fc68d2d66e5419509..8d456ecc14ace9ef5fc853ada75dc6315f96d54c 100644 |
| --- a/runtime/bin/vmservice/vmservice_io.dart |
| +++ b/runtime/bin/vmservice/vmservice_io.dart |
| @@ -60,6 +60,44 @@ Future cleanupCallback() async { |
| _shutdown(); |
| } |
| +Future<Uri> createTempDirCallback(String base) async { |
| + Directory temp = await Directory.systemTemp.createTemp(base); |
| + return temp.uri; |
| +} |
| + |
| +Future deleteDirCallback(Uri path) async { |
| + Directory dir = new Directory.fromUri(path); |
| + await dir.delete(recursive: true); |
| +} |
| + |
| +Future writeFileCallback(Uri path, List<int> bytes) async { |
| + var file = await new File.fromUri(path); |
| + await file.writeAsBytes(bytes); |
| +} |
| + |
| +Future<List<int>> readFileCallback(Uri path) async { |
| + var file = await new File.fromUri(path); |
| + return await file.readAsBytes(); |
| +} |
| + |
| +Future<List<Map<String,String>>> listFilesCallback(Uri dirPath) async { |
| + var dir = new Directory.fromUri(dirPath); |
| + var dirPathStr = dirPath.path; |
| + var stream = dir.list(recursive: true); |
| + var result = []; |
| + await for (var fileEntity in stream) { |
| + var stat = await fileEntity.stat(); |
| + if (stat.type == FileSystemEntityType.FILE && |
| + fileEntity.path.startsWith(dirPathStr)) { |
| + var map = {}; |
| + map['name'] = '/' + fileEntity.path.substring(dirPathStr.length); |
| + map['size'] = stat.size; |
|
Cutch
2016/07/01 21:23:17
modification time might be useful here too
|
| + result.add(map); |
| + } |
| + } |
| + return result; |
| +} |
| + |
| _clearFuture(_) { |
| serverFuture = null; |
| } |
| @@ -96,6 +134,11 @@ _registerSignalHandler() { |
| main() { |
| // Set embedder hooks. |
| VMServiceEmbedderHooks.cleanup = cleanupCallback; |
| + VMServiceEmbedderHooks.createTempDir = createTempDirCallback; |
| + VMServiceEmbedderHooks.deleteDir = deleteDirCallback; |
| + VMServiceEmbedderHooks.writeFile = writeFileCallback; |
| + VMServiceEmbedderHooks.readFile = readFileCallback; |
| + VMServiceEmbedderHooks.listFiles = listFilesCallback; |
| // Always instantiate the vmservice object so that the exit message |
| // can be delivered and waiting loaders can be cancelled. |
| var service = new VMService(); |