OLD | NEW |
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 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 var map = {}; | 155 var map = {}; |
156 map['name'] = '/' + filePath.substring(dirPathStr.length); | 156 map['name'] = '/' + filePath.substring(dirPathStr.length); |
157 map['size'] = stat.size; | 157 map['size'] = stat.size; |
158 map['modified'] = stat.modified.millisecondsSinceEpoch; | 158 map['modified'] = stat.modified.millisecondsSinceEpoch; |
159 result.add(map); | 159 result.add(map); |
160 } | 160 } |
161 } | 161 } |
162 return result; | 162 return result; |
163 } | 163 } |
164 | 164 |
| 165 Future<Uri> serverInformationCallback() async { |
| 166 _lazyServerBoot(); |
| 167 return server.serverAddress; |
| 168 } |
| 169 |
| 170 Future<Uri> webServerControlCallback(bool enable) async { |
| 171 _lazyServerBoot(); |
| 172 if (server.running == enable) { |
| 173 // No change. |
| 174 return server.serverAddress; |
| 175 } |
| 176 |
| 177 if (enable) { |
| 178 await server.startup(); |
| 179 return server.serverAddress; |
| 180 } else { |
| 181 await server.shutdown(true); |
| 182 return server.serverAddress; |
| 183 } |
| 184 } |
| 185 |
165 _clearFuture(_) { | 186 _clearFuture(_) { |
166 serverFuture = null; | 187 serverFuture = null; |
167 } | 188 } |
168 | 189 |
169 _onSignal(ProcessSignal signal) { | 190 _onSignal(ProcessSignal signal) { |
170 if (serverFuture != null) { | 191 if (serverFuture != null) { |
171 // Still waiting. | 192 // Still waiting. |
172 return; | 193 return; |
173 } | 194 } |
174 _lazyServerBoot(); | 195 _lazyServerBoot(); |
(...skipping 22 matching lines...) Expand all Loading... |
197 | 218 |
198 main() { | 219 main() { |
199 // Set embedder hooks. | 220 // Set embedder hooks. |
200 VMServiceEmbedderHooks.cleanup = cleanupCallback; | 221 VMServiceEmbedderHooks.cleanup = cleanupCallback; |
201 VMServiceEmbedderHooks.createTempDir = createTempDirCallback; | 222 VMServiceEmbedderHooks.createTempDir = createTempDirCallback; |
202 VMServiceEmbedderHooks.deleteDir = deleteDirCallback; | 223 VMServiceEmbedderHooks.deleteDir = deleteDirCallback; |
203 VMServiceEmbedderHooks.writeFile = writeFileCallback; | 224 VMServiceEmbedderHooks.writeFile = writeFileCallback; |
204 VMServiceEmbedderHooks.writeStreamFile = writeStreamFileCallback; | 225 VMServiceEmbedderHooks.writeStreamFile = writeStreamFileCallback; |
205 VMServiceEmbedderHooks.readFile = readFileCallback; | 226 VMServiceEmbedderHooks.readFile = readFileCallback; |
206 VMServiceEmbedderHooks.listFiles = listFilesCallback; | 227 VMServiceEmbedderHooks.listFiles = listFilesCallback; |
| 228 VMServiceEmbedderHooks.serverInformation = serverInformationCallback; |
| 229 VMServiceEmbedderHooks.webServerControl = webServerControlCallback; |
207 // Always instantiate the vmservice object so that the exit message | 230 // Always instantiate the vmservice object so that the exit message |
208 // can be delivered and waiting loaders can be cancelled. | 231 // can be delivered and waiting loaders can be cancelled. |
209 var service = new VMService(); | 232 var service = new VMService(); |
210 if (_autoStart) { | 233 if (_autoStart) { |
211 _lazyServerBoot(); | 234 _lazyServerBoot(); |
212 server.startup(); | 235 server.startup(); |
213 // It's just here to push an event on the event loop so that we invoke the | 236 // It's just here to push an event on the event loop so that we invoke the |
214 // scheduled microtasks. | 237 // scheduled microtasks. |
215 Timer.run(() {}); | 238 Timer.run(() {}); |
216 } | 239 } |
217 scriptLoadPort.handler = _processLoadRequest; | 240 scriptLoadPort.handler = _processLoadRequest; |
218 // Register signal handler after a small delay to avoid stalling main | 241 // Register signal handler after a small delay to avoid stalling main |
219 // isolate startup. | 242 // isolate startup. |
220 _registerSignalHandlerTimer = new Timer(shortDelay, _registerSignalHandler); | 243 _registerSignalHandlerTimer = new Timer(shortDelay, _registerSignalHandler); |
221 return scriptLoadPort; | 244 return scriptLoadPort; |
222 } | 245 } |
223 | 246 |
224 _shutdown() native "VMServiceIO_Shutdown"; | 247 _shutdown() native "VMServiceIO_Shutdown"; |
OLD | NEW |