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

Unified Diff: runtime/vm/service/message.dart

Issue 993613002: Implement 'print', 'up', 'down', and 'frame' commands in the Observatory debugger. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 5 years, 9 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
« no previous file with comments | « runtime/vm/service/client.dart ('k') | runtime/vm/service_isolate.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/service/message.dart
diff --git a/runtime/vm/service/message.dart b/runtime/vm/service/message.dart
index 2b3f038b4c9790c93bc8cd0d2a75849bcb4b7488..b4654999c9a8b307cf92beb6fc651c6cbc7fe722 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 [${serial}] to isolate',
+ }));
+ }
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)
« no previous file with comments | « runtime/vm/service/client.dart ('k') | runtime/vm/service_isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698