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

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

Issue 1285673003: When no service response is requested, send null back to the service isolate so it can cleanup (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « runtime/vm/json_stream.cc ('k') | sdk/lib/developer/extension.dart » ('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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 } 87 }
88 list[i] = list[i].toString(); 88 list[i] = list[i].toString();
89 } 89 }
90 return list; 90 return list;
91 } 91 }
92 92
93 Future<String> send(SendPort sendPort) { 93 Future<String> send(SendPort sendPort) {
94 final receivePort = new RawReceivePort(); 94 final receivePort = new RawReceivePort();
95 receivePort.handler = (value) { 95 receivePort.handler = (value) {
96 receivePort.close(); 96 receivePort.close();
97 assert(value is String);
98 _completer.complete(value); 97 _completer.complete(value);
99 }; 98 };
100 var keys = _makeAllString(params.keys.toList(growable:false)); 99 var keys = _makeAllString(params.keys.toList(growable:false));
101 var values = _makeAllString(params.values.toList(growable:false)); 100 var values = _makeAllString(params.values.toList(growable:false));
102 var request = new List(6) 101 var request = new List(6)
103 ..[0] = 0 // Make room for OOB message type. 102 ..[0] = 0 // Make room for OOB message type.
104 ..[1] = receivePort.sendPort 103 ..[1] = receivePort.sendPort
105 ..[2] = serial 104 ..[2] = serial
106 ..[3] = method 105 ..[3] = method
107 ..[4] = keys 106 ..[4] = keys
108 ..[5] = values; 107 ..[5] = values;
109 if (!sendIsolateServiceMessage(sendPort, request)) { 108 if (!sendIsolateServiceMessage(sendPort, request)) {
110 _completer.complete(JSON.encode({ 109 _completer.complete(JSON.encode({
111 'type': 'ServiceError', 110 'type': 'ServiceError',
112 'id': '', 111 'id': '',
113 'kind': 'InternalError', 112 'kind': 'InternalError',
114 'message': 'could not send message [${serial}] to isolate', 113 'message': 'could not send message [${serial}] to isolate',
115 })); 114 }));
116 } 115 }
117 return _completer.future; 116 return _completer.future;
118 } 117 }
119 118
120 Future<String> sendToVM() { 119 Future<String> sendToVM() {
121 final receivePort = new RawReceivePort(); 120 final receivePort = new RawReceivePort();
122 receivePort.handler = (value) { 121 receivePort.handler = (value) {
123 receivePort.close(); 122 receivePort.close();
124 assert(value is String);
125 _completer.complete(value); 123 _completer.complete(value);
126 }; 124 };
127 var keys = _makeAllString(params.keys.toList(growable:false)); 125 var keys = _makeAllString(params.keys.toList(growable:false));
128 var values = _makeAllString(params.values.toList(growable:false)); 126 var values = _makeAllString(params.values.toList(growable:false));
129 var request = new List(6) 127 var request = new List(6)
130 ..[0] = 0 // Make room for OOB message type. 128 ..[0] = 0 // Make room for OOB message type.
131 ..[1] = receivePort.sendPort 129 ..[1] = receivePort.sendPort
132 ..[2] = serial 130 ..[2] = serial
133 ..[3] = method 131 ..[3] = method
134 ..[4] = keys 132 ..[4] = keys
(...skipping 21 matching lines...) Expand all
156 }; 154 };
157 _completer.complete(JSON.encode(response)); 155 _completer.complete(JSON.encode(response));
158 } 156 }
159 } 157 }
160 158
161 bool sendIsolateServiceMessage(SendPort sp, List m) 159 bool sendIsolateServiceMessage(SendPort sp, List m)
162 native "VMService_SendIsolateServiceMessage"; 160 native "VMService_SendIsolateServiceMessage";
163 161
164 void sendRootServiceMessage(List m) 162 void sendRootServiceMessage(List m)
165 native "VMService_SendRootServiceMessage"; 163 native "VMService_SendRootServiceMessage";
OLDNEW
« no previous file with comments | « runtime/vm/json_stream.cc ('k') | sdk/lib/developer/extension.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698