Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 dart._vmservice; | 5 part of dart._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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 _completer.complete(JSON.encode({ | 109 _completer.complete(JSON.encode({ |
| 110 'type': 'ServiceError', | 110 'type': 'ServiceError', |
| 111 'id': '', | 111 'id': '', |
| 112 'kind': 'InternalError', | 112 'kind': 'InternalError', |
| 113 'message': 'could not send message [${serial}] to isolate', | 113 'message': 'could not send message [${serial}] to isolate', |
| 114 })); | 114 })); |
| 115 } | 115 } |
| 116 return _completer.future; | 116 return _completer.future; |
| 117 } | 117 } |
| 118 | 118 |
| 119 bool _isFileSystemMethod(String method) { | |
|
turnidge
2016/06/10 18:45:34
Maybe _methodNeedsObjectParameters or something...
| |
| 120 switch (method) { | |
| 121 case '_listDevFS': | |
| 122 case '_listDevFSFiles': | |
| 123 case '_createDevFS': | |
| 124 case '_deleteDevFS': | |
| 125 case '_writeDevFSFile': | |
| 126 case '_writeDevFSFiles': | |
| 127 case '_readDevFSFile': | |
| 128 return true; | |
| 129 default: | |
| 130 return false; | |
| 131 } | |
| 132 } | |
| 133 | |
| 119 Future<String> sendToVM() { | 134 Future<String> sendToVM() { |
| 120 final receivePort = new RawReceivePort(); | 135 final receivePort = new RawReceivePort(); |
| 121 receivePort.handler = (value) { | 136 receivePort.handler = (value) { |
| 122 receivePort.close(); | 137 receivePort.close(); |
| 123 _completer.complete(value); | 138 _completer.complete(value); |
| 124 }; | 139 }; |
| 125 var keys = _makeAllString(params.keys.toList(growable:false)); | 140 if (_isFileSystemMethod(method)) { |
| 126 var values = _makeAllString(params.values.toList(growable:false)); | 141 // We use a different method invocation path here. |
| 127 var request = new List(6) | 142 var keys = params.keys.toList(growable:false); |
| 128 ..[0] = 0 // Make room for OOB message type. | 143 var values = params.values.toList(growable:false); |
| 129 ..[1] = receivePort.sendPort | 144 var request = new List(6) |
| 130 ..[2] = serial | 145 ..[0] = 0 // Make room for OOB message type. |
| 131 ..[3] = method | 146 ..[1] = receivePort.sendPort |
| 132 ..[4] = keys | 147 ..[2] = serial |
| 133 ..[5] = values; | 148 ..[3] = method |
| 134 sendRootServiceMessage(request); | 149 ..[4] = keys |
| 135 return _completer.future; | 150 ..[5] = values; |
| 151 sendObjectRootServiceMessage(request); | |
| 152 return _completer.future; | |
| 153 } else { | |
| 154 var keys = _makeAllString(params.keys.toList(growable:false)); | |
| 155 var values = _makeAllString(params.values.toList(growable:false)); | |
| 156 var request = new List(6) | |
| 157 ..[0] = 0 // Make room for OOB message type. | |
| 158 ..[1] = receivePort.sendPort | |
| 159 ..[2] = serial | |
| 160 ..[3] = method | |
| 161 ..[4] = keys | |
| 162 ..[5] = values; | |
| 163 sendRootServiceMessage(request); | |
| 164 return _completer.future; | |
| 165 } | |
| 136 } | 166 } |
| 137 | 167 |
| 138 void setResponse(String response) { | 168 void setResponse(String response) { |
| 139 _completer.complete(response); | 169 _completer.complete(response); |
| 140 } | 170 } |
| 141 | 171 |
| 142 void setErrorResponse(int code, String details) { | 172 void setErrorResponse(int code, String details) { |
| 143 _completer.complete(encodeRpcError(this, code, | 173 _completer.complete(encodeRpcError(this, code, |
| 144 details: '$method: $details')); | 174 details: '$method: $details')); |
| 145 } | 175 } |
| 146 } | 176 } |
| 147 | 177 |
| 148 external bool sendIsolateServiceMessage(SendPort sp, List m); | 178 external bool sendIsolateServiceMessage(SendPort sp, List m); |
| 149 external void sendRootServiceMessage(List m); | 179 external void sendRootServiceMessage(List m); |
| 180 external void sendObjectRootServiceMessage(List m); | |
| OLD | NEW |