Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Side by Side Diff: runtime/bin/vmservice/vmservice_io.dart

Issue 2120473004: Reimplement devfs in dart. Implementation now writes to disk. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: code review Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | runtime/observatory/tests/service/dev_fs_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library vmservice_io; 5 library vmservice_io;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:convert'; 9 import 'dart:convert';
10 import 'dart:io'; 10 import 'dart:io';
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 } 53 }
54 } 54 }
55 if (_registerSignalHandlerTimer != null) { 55 if (_registerSignalHandlerTimer != null) {
56 _registerSignalHandlerTimer.cancel(); 56 _registerSignalHandlerTimer.cancel();
57 _registerSignalHandlerTimer = null; 57 _registerSignalHandlerTimer = null;
58 } 58 }
59 // Call out to embedder's shutdown callback. 59 // Call out to embedder's shutdown callback.
60 _shutdown(); 60 _shutdown();
61 } 61 }
62 62
63 Future<Uri> createTempDirCallback(String base) async {
64 Directory temp = await Directory.systemTemp.createTemp(base);
65 return temp.uri;
66 }
67
68 Future deleteDirCallback(Uri path) async {
69 Directory dir = new Directory.fromUri(path);
70 await dir.delete(recursive: true);
71 }
72
73 Future writeFileCallback(Uri path, List<int> bytes) async {
74 var file = await new File.fromUri(path);
75 await file.writeAsBytes(bytes);
76 }
77
78 Future<List<int>> readFileCallback(Uri path) async {
79 var file = await new File.fromUri(path);
80 return await file.readAsBytes();
81 }
82
83 Future<List<Map<String,String>>> listFilesCallback(Uri dirPath) async {
84 var dir = new Directory.fromUri(dirPath);
85 var dirPathStr = dirPath.path;
86 var stream = dir.list(recursive: true);
87 var result = [];
88 await for (var fileEntity in stream) {
89 var stat = await fileEntity.stat();
90 if (stat.type == FileSystemEntityType.FILE &&
91 fileEntity.path.startsWith(dirPathStr)) {
92 var map = {};
93 map['name'] = '/' + fileEntity.path.substring(dirPathStr.length);
94 map['size'] = stat.size;
95 map['modified'] = stat.modified.millisecondsSinceEpoch;
96 result.add(map);
97 }
98 }
99 return result;
100 }
101
63 _clearFuture(_) { 102 _clearFuture(_) {
64 serverFuture = null; 103 serverFuture = null;
65 } 104 }
66 105
67 _onSignal(ProcessSignal signal) { 106 _onSignal(ProcessSignal signal) {
68 if (serverFuture != null) { 107 if (serverFuture != null) {
69 // Still waiting. 108 // Still waiting.
70 return; 109 return;
71 } 110 }
72 _lazyServerBoot(); 111 _lazyServerBoot();
(...skipping 16 matching lines...) Expand all
89 if (_isWindows) { 128 if (_isWindows) {
90 // Cannot register for signals on Windows. 129 // Cannot register for signals on Windows.
91 return; 130 return;
92 } 131 }
93 _signalSubscription = _signalWatch(ProcessSignal.SIGQUIT).listen(_onSignal); 132 _signalSubscription = _signalWatch(ProcessSignal.SIGQUIT).listen(_onSignal);
94 } 133 }
95 134
96 main() { 135 main() {
97 // Set embedder hooks. 136 // Set embedder hooks.
98 VMServiceEmbedderHooks.cleanup = cleanupCallback; 137 VMServiceEmbedderHooks.cleanup = cleanupCallback;
138 VMServiceEmbedderHooks.createTempDir = createTempDirCallback;
139 VMServiceEmbedderHooks.deleteDir = deleteDirCallback;
140 VMServiceEmbedderHooks.writeFile = writeFileCallback;
141 VMServiceEmbedderHooks.readFile = readFileCallback;
142 VMServiceEmbedderHooks.listFiles = listFilesCallback;
99 // Always instantiate the vmservice object so that the exit message 143 // Always instantiate the vmservice object so that the exit message
100 // can be delivered and waiting loaders can be cancelled. 144 // can be delivered and waiting loaders can be cancelled.
101 var service = new VMService(); 145 var service = new VMService();
102 if (_autoStart) { 146 if (_autoStart) {
103 _lazyServerBoot(); 147 _lazyServerBoot();
104 server.startup(); 148 server.startup();
105 // It's just here to push an event on the event loop so that we invoke the 149 // It's just here to push an event on the event loop so that we invoke the
106 // scheduled microtasks. 150 // scheduled microtasks.
107 Timer.run(() {}); 151 Timer.run(() {});
108 } 152 }
109 scriptLoadPort.handler = _processLoadRequest; 153 scriptLoadPort.handler = _processLoadRequest;
110 // Register signal handler after a small delay to avoid stalling main 154 // Register signal handler after a small delay to avoid stalling main
111 // isolate startup. 155 // isolate startup.
112 _registerSignalHandlerTimer = new Timer(shortDelay, _registerSignalHandler); 156 _registerSignalHandlerTimer = new Timer(shortDelay, _registerSignalHandler);
113 return scriptLoadPort; 157 return scriptLoadPort;
114 } 158 }
115 159
116 _shutdown() native "VMServiceIO_Shutdown"; 160 _shutdown() native "VMServiceIO_Shutdown";
OLDNEW
« no previous file with comments | « no previous file | runtime/observatory/tests/service/dev_fs_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698