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

Side by Side Diff: runtime/vm/service/message.dart

Issue 887413003: Port type arguments to new RPC protocol (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/service.cc ('k') | runtime/vm/service/service.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 part of vmservice; 5 part of vmservice;
6 6
7 class Message { 7 class Message {
8 final Completer _completer = new Completer.sync(); 8 final Completer _completer = new Completer.sync();
9 bool get completed => _completer.isCompleted; 9 bool get completed => _completer.isCompleted;
10 /// Future of response. 10 /// Future of response.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 } 55 }
56 } 56 }
57 57
58 dynamic toJson() { 58 dynamic toJson() {
59 return { 59 return {
60 'path': path, 60 'path': path,
61 'params': params 61 'params': params
62 }; 62 };
63 } 63 }
64 64
65 // Calls toString on all non-String elements of [list]. We do this so all
66 // elements in the list are strings, making consumption by C++ simpler.
67 // This has a side effect that boolean literal values like true become 'true'
68 // and thus indistinguishable from the string literal 'true'.
69 List _makeAllString(List list) {
70 if (list == null) {
71 return null;
72 }
73 for (var i = 0; i < list.length; i++) {
74 if (list[i] is String) {
75 continue;
76 }
77 list[i] = list[i].toString();
78 }
79 return list;
80 }
81
65 Future<String> send(SendPort sendPort) { 82 Future<String> send(SendPort sendPort) {
66 final receivePort = new RawReceivePort(); 83 final receivePort = new RawReceivePort();
67 receivePort.handler = (value) { 84 receivePort.handler = (value) {
68 receivePort.close(); 85 receivePort.close();
69 if (value is Exception) { 86 if (value is Exception) {
70 _completer.completeError(value); 87 _completer.completeError(value);
71 } else { 88 } else {
72 _completer.complete(value); 89 _completer.complete(value);
73 } 90 }
74 }; 91 };
75 var keys = params.keys.toList(growable:false); 92 var keys = _makeAllString(params.keys.toList(growable:false));
76 var values = params.values.toList(growable:false); 93 var values = _makeAllString(params.values.toList(growable:false));
77 var request = new List(5) 94 var request = new List(5)
78 ..[0] = 0 // Make room for OOB message type. 95 ..[0] = 0 // Make room for OOB message type.
79 ..[1] = receivePort.sendPort 96 ..[1] = receivePort.sendPort
80 ..[2] = (isOld ? path : method) 97 ..[2] = (isOld ? path : method)
81 ..[3] = keys 98 ..[3] = keys
82 ..[4] = values; 99 ..[4] = values;
83 sendIsolateServiceMessage(sendPort, request); 100 sendIsolateServiceMessage(sendPort, request);
84 return _completer.future; 101 return _completer.future;
85 } 102 }
86 103
87 Future<String> sendToVM() { 104 Future<String> sendToVM() {
88 final receivePort = new RawReceivePort(); 105 final receivePort = new RawReceivePort();
89 receivePort.handler = (value) { 106 receivePort.handler = (value) {
90 receivePort.close(); 107 receivePort.close();
91 if (value is Exception) { 108 if (value is Exception) {
92 _completer.completeError(value); 109 _completer.completeError(value);
93 } else { 110 } else {
94 _completer.complete(value); 111 _completer.complete(value);
95 } 112 }
96 }; 113 };
97 var keys = params.keys.toList(growable:false); 114 var keys = _makeAllString(params.keys.toList(growable:false));
98 var values = params.values.toList(growable:false); 115 var values = _makeAllString(params.values.toList(growable:false));
99 var request = new List(5) 116 var request = new List(5)
100 ..[0] = 0 // Make room for OOB message type. 117 ..[0] = 0 // Make room for OOB message type.
101 ..[1] = receivePort.sendPort 118 ..[1] = receivePort.sendPort
102 ..[2] = (isOld ? path : method) 119 ..[2] = (isOld ? path : method)
103 ..[3] = keys 120 ..[3] = keys
104 ..[4] = values; 121 ..[4] = values;
105 sendRootServiceMessage(request); 122 sendRootServiceMessage(request);
106 return _completer.future; 123 return _completer.future;
107 } 124 }
108 125
(...skipping 11 matching lines...) Expand all
120 'params': params 137 'params': params
121 })); 138 }));
122 } 139 }
123 } 140 }
124 141
125 void sendIsolateServiceMessage(SendPort sp, List m) 142 void sendIsolateServiceMessage(SendPort sp, List m)
126 native "VMService_SendIsolateServiceMessage"; 143 native "VMService_SendIsolateServiceMessage";
127 144
128 void sendRootServiceMessage(List m) 145 void sendRootServiceMessage(List m)
129 native "VMService_SendRootServiceMessage"; 146 native "VMService_SendRootServiceMessage";
OLDNEW
« no previous file with comments | « runtime/vm/service.cc ('k') | runtime/vm/service/service.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698