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

Unified Diff: runtime/bin/vmservice/vmservice_io.dart

Issue 1640773005: Make it possible to share the embedder's dart sources for the vmservice (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: runtime/bin/vmservice/vmservice_io.dart
diff --git a/runtime/bin/vmservice/vmservice_io.dart b/runtime/bin/vmservice/vmservice_io.dart
index 3816aa2f940224a3f941e35f6a4a73a3da70a112..410b917284918b7882fcc98449b7032e5ba54a66 100644
--- a/runtime/bin/vmservice/vmservice_io.dart
+++ b/runtime/bin/vmservice/vmservice_io.dart
@@ -21,45 +21,40 @@ String _ip;
bool _autoStart;
bool _isWindows = false;
-
var _signalWatch;
var _signalSubscription;
// HTTP server.
Server server;
Future<Server> serverFuture;
-HashMap<String, Asset> _assets;
-HashMap<String, Asset> get assets {
- if (_assets == null) {
- try {
- _assets = Asset.request();
- } catch (e) {
- print('Could not load Observatory assets: $e');
- }
- }
- return _assets;
-}
-_onShutdown() {
+_lazyServerBoot() {
if (server != null) {
- server.close(true).catchError((e, st) {
- print("Error in vm-service shutdown: $e\n$st\n");
- });
- }
- if (_signalSubscription != null) {
- _signalSubscription.cancel();
- _signalSubscription = null;
+ return;
}
-}
-
-_bootServer() {
// Lazily create service.
var service = new VMService();
- service.onShutdown = _onShutdown;
// Lazily create server.
server = new Server(service, _ip, _port);
}
+Future cleanupCallback() async {
+ // Cancel the sigquit subscription.
+ if (_signalSubscription != null) {
+ await _signalSubscription.cancel();
+ _signalSubscription = null;
+ }
+ if (server != null) {
+ try {
+ await server.cleanup(true);
+ } catch (e, st) {
+ print("Error in vm-service shutdown: $e\n$st\n");
+ }
+ }
+ // Call out to embedder's shutdown callback.
+ _shutdown();
+}
+
_clearFuture(_) {
serverFuture = null;
}
@@ -69,9 +64,7 @@ _onSignal(ProcessSignal signal) {
// Still waiting.
return;
}
- if (server == null) {
- _bootServer();
- }
+ _lazyServerBoot();
// Toggle HTTP server.
if (server.running) {
serverFuture = server.shutdown(true).then(_clearFuture);
@@ -81,6 +74,10 @@ _onSignal(ProcessSignal signal) {
}
_registerSignalHandler() {
+ if (_signalWatch == null) {
+ // Cannot register for signals.
+ return;
+ }
if (_isWindows) {
// Cannot register for signals on Windows.
return;
@@ -88,28 +85,21 @@ _registerSignalHandler() {
_signalSubscription = _signalWatch(ProcessSignal.SIGQUIT).listen(_onSignal);
}
-const _shortDelay = const Duration(milliseconds: 10);
-
main() {
+ // Set embedder hooks.
+ VMServiceEmbedderHooks.cleanup = cleanupCallback;
if (_autoStart) {
- _bootServer();
+ _lazyServerBoot();
server.startup();
// It's just here to push an event on the event loop so that we invoke the
// scheduled microtasks.
Timer.run(() {});
}
- // TODO(johnmccutchan, turnidge) Creating a VMService object here causes
- // strange behavior from the legacy debug protocol and coverage tool.
- // Enable this code, and remove the call to Isolate::KillIsolate() from
- // service_isolate.cc when the strange behavior is solved.
- // See: https://github.com/dart-lang/sdk/issues/23977
zra 2016/01/28 18:40:04 It looks like this issue is still open. What is th
Cutch 2016/01/28 23:49:45 The legacy debug protocol has been removed and the
zra 2016/01/29 02:58:18 So, we can either get rid of this `else` branch, o
Cutch 2016/01/29 15:36:52 I've left a TODO.
- // else {
- // var service = new VMService();
- // service.onShutdown = _onShutdown;
- // }
scriptLoadPort.handler = _processLoadRequest;
// Register signal handler after a small delay to avoid stalling main
// isolate startup.
- new Timer(_shortDelay, _registerSignalHandler);
+ new Timer(shortDelay, _registerSignalHandler);
return scriptLoadPort;
}
+
+_shutdown() native "VMServiceIO_Shutdown";

Powered by Google App Engine
This is Rietveld 408576698