Index: runtime/bin/vmservice/vmservice.dart |
diff --git a/runtime/bin/vmservice/vmservice.dart b/runtime/bin/vmservice/vmservice.dart |
index e074e9a4d4b6663c78fa2652a7c9f2ca5fbd48c4..f1f8995a7396b1d61ad395f97d9c59bdb89b30d4 100644 |
--- a/runtime/bin/vmservice/vmservice.dart |
+++ b/runtime/bin/vmservice/vmservice.dart |
@@ -6,16 +6,45 @@ library vmservice; |
import 'dart:async'; |
import 'dart:json' as JSON; |
+// TODO(11927): Factor 'dart:io' dependency into separate library. |
import 'dart:io'; |
import 'dart:isolate'; |
import 'dart:typed_data'; |
import 'dart:utf' as UTF; |
-void messageHandler(message, SendPort replyTo) { |
-} |
+class VmService { |
+ static VmService _instance; |
+ RunningIsolates runningIsolates = new RunningIsolates(); |
+ |
+ void controlMessageHandler(int code, SendPort sp) { |
+ switch (code) { |
+ case Constants.ISOLATE_STARTUP_MESSAGE_ID: |
+ runningIsolates.isolateStartup(sp); |
+ break; |
+ case Constants.ISOLATE_SHUTDOWN_MESSAGE_ID: |
+ runningIsolates.isolateShutdown(sp); |
+ break; |
+ } |
+ } |
+ void messageHandler(message, SendPort replyTo) { |
+ if (message is List && message.length == 2) { |
+ controlMessageHandler(message[0], message[1]); |
+ } |
+ } |
-main() { |
- port.receive(messageHandler); |
+ VmService._internal() { |
+ port.receive(messageHandler); |
+ } |
+ |
+ factory VmService() { |
+ if (VmService._instance == null) { |
+ VmService._instance = new VmService._internal(); |
+ } |
+ return _instance; |
+ } |
} |
+ |
+void sendServiceMessage(SendPort sp, ReceivePort rp, Object m) |
+ native "SendServiceMessage"; |