Chromium Code Reviews| Index: runtime/observatory/lib/service_common.dart |
| diff --git a/runtime/observatory/lib/service_common.dart b/runtime/observatory/lib/service_common.dart |
| index 18567b7654e4c9fade9b1c8e3723aaf29c14f7e8..43401af5083718b7730df982508d44ae67512d11 100644 |
| --- a/runtime/observatory/lib/service_common.dart |
| +++ b/runtime/observatory/lib/service_common.dart |
| @@ -54,9 +54,14 @@ class WebSocketVMTarget { |
| } |
| class _WebSocketRequest { |
| - final String id; |
| + final String method; |
| + final Map params; |
| final Completer<String> completer; |
| - _WebSocketRequest(this.id) |
| + |
| + _WebSocketRequest.old(this.method) |
| + : params = null, completer = new Completer<String>(); |
| + |
| + _WebSocketRequest.rpc(this.method, this.params) |
| : completer = new Completer<String>(); |
| } |
| @@ -137,7 +142,25 @@ abstract class CommonWebSocketVM extends VM { |
| assert(_hasInitiatedConnect); |
| // Create request. |
| String serial = (_requestSerial++).toString(); |
| - var request = new _WebSocketRequest(id); |
| + var request = new _WebSocketRequest.old(id); |
| + if (_webSocket.isOpen) { |
| + // Already connected, send request immediately. |
| + _sendRequest(serial, request); |
| + } else { |
| + // Not connected yet, add to delayed requests. |
| + _delayedRequests[serial] = request; |
| + } |
| + return request.completer.future; |
| + } |
| + |
| + Future<String> invokeRpcRaw(String method, Map params) { |
| + if (!_hasInitiatedConnect) { |
| + _hasInitiatedConnect = true; |
| + _webSocket.connect( |
| + target.networkAddress, _onOpen, _onMessage, _onError, _onClose); |
| + } |
| + String serial = (_requestSerial++).toString(); |
| + var request = new _WebSocketRequest.rpc(method, params); |
| if (_webSocket.isOpen) { |
| // Already connected, send request immediately. |
| _sendRequest(serial, request); |
| @@ -203,7 +226,7 @@ abstract class CommonWebSocketVM extends VM { |
| serial = map['params']['id'].toString(); |
| response = map['params']['data']; |
| } else { |
| - serial = map['seq']; |
| + serial = map['id']; |
| response = map['response']; |
| } |
| if (serial == null) { |
| @@ -266,8 +289,8 @@ abstract class CommonWebSocketVM extends VM { |
| /// Send the request over WebSocket. |
| void _sendRequest(String serial, _WebSocketRequest request) { |
| assert (_webSocket.isOpen); |
| - if (!request.id.endsWith('/profile/tag')) { |
| - Logger.root.info('GET ${request.id} from ${target.networkAddress}'); |
| + if (request.method != 'getTagProfile') { |
| + Logger.root.info('GET ${request.method} from ${target.networkAddress}'); |
|
Cutch
2015/02/02 22:20:04
Should this be removed?
turnidge
2015/02/02 22:44:05
This logging was in the original. Also, pretty us
|
| } |
| // Mark request as pending. |
| assert(_pendingRequests.containsKey(serial) == false); |
| @@ -280,11 +303,13 @@ abstract class CommonWebSocketVM extends VM { |
| 'method': 'Dart.observatoryQuery', |
| 'params': { |
| 'id': serial, |
| - 'query': request.id |
| + 'query': request.method |
| } |
| }); |
| } else { |
| - message = JSON.encode({'seq': serial, 'request': request.id}); |
| + message = JSON.encode({'id': serial, |
| + 'method': request.method, |
| + 'params': request.params}); |
| } |
| // Send message. |
| _webSocket.send(message); |