Chromium Code Reviews| Index: runtime/vm/service/message.dart |
| diff --git a/runtime/vm/service/message.dart b/runtime/vm/service/message.dart |
| index 2b3f038b4c9790c93bc8cd0d2a75849bcb4b7488..bd134c55bc96d05db59f11ee16b5bfe93dac7ee7 100644 |
| --- a/runtime/vm/service/message.dart |
| +++ b/runtime/vm/service/message.dart |
| @@ -10,6 +10,9 @@ class Message { |
| /// Future of response. |
| Future<String> get response => _completer.future; |
| + // Client-side identifier for this message. |
| + final serial; |
| + |
| // In new messages. |
| final String method; |
| @@ -30,8 +33,8 @@ class Message { |
| }); |
| } |
| - Message.fromJsonRpc(this.method, Map rpcParams) { |
| - params.addAll(rpcParams); |
| + Message.fromJsonRpc(Map map) : serial = map['id'], method = map['method'] { |
| + params.addAll(map['params']); |
| } |
| static String _methodNameFromUri(Uri uri) { |
| @@ -76,11 +79,8 @@ class Message { |
| final receivePort = new RawReceivePort(); |
| receivePort.handler = (value) { |
| receivePort.close(); |
| - if (value is Exception) { |
| - _completer.completeError(value); |
| - } else { |
| - _completer.complete(value); |
| - } |
| + assert(value is String); |
| + _completer.complete(value); |
| }; |
| var keys = _makeAllString(params.keys.toList(growable:false)); |
| var values = _makeAllString(params.values.toList(growable:false)); |
| @@ -90,7 +90,14 @@ class Message { |
| ..[2] = method |
| ..[3] = keys |
| ..[4] = values; |
| - sendIsolateServiceMessage(sendPort, request); |
| + if (!sendIsolateServiceMessage(sendPort, request)) { |
| + _completer.complete(JSON.encode({ |
| + 'type': 'ServiceError', |
| + 'id': '', |
| + 'kind': 'InternalError', |
| + 'message': 'could not send message to isolate', |
|
Cutch
2015/03/10 00:00:18
might want to include the serial here.
|
| + })); |
| + } |
| return _completer.future; |
| } |
| @@ -98,11 +105,8 @@ class Message { |
| final receivePort = new RawReceivePort(); |
| receivePort.handler = (value) { |
| receivePort.close(); |
| - if (value is Exception) { |
| - _completer.completeError(value); |
| - } else { |
| - _completer.complete(value); |
| - } |
| + assert(value is String); |
| + _completer.complete(value); |
| }; |
| var keys = _makeAllString(params.keys.toList(growable:false)); |
| var values = _makeAllString(params.values.toList(growable:false)); |
| @@ -132,7 +136,7 @@ class Message { |
| } |
| } |
| -void sendIsolateServiceMessage(SendPort sp, List m) |
| +bool sendIsolateServiceMessage(SendPort sp, List m) |
| native "VMService_SendIsolateServiceMessage"; |
| void sendRootServiceMessage(List m) |