| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 service; | 5 part of service; |
| 6 | 6 |
| 7 /// An RpcException represents an exceptional event that happened | 7 /// An RpcException represents an exceptional event that happened |
| 8 /// while invoking an rpc. | 8 /// while invoking an rpc. |
| 9 abstract class RpcException implements Exception { | 9 abstract class RpcException implements Exception { |
| 10 RpcException(this.message); | 10 RpcException(this.message); |
| 11 | 11 |
| 12 String message; | 12 String message; |
| 13 } | 13 } |
| 14 | 14 |
| 15 /// A ServerRpcException represents an error returned by the VM. | 15 /// A ServerRpcException represents an error returned by the VM. |
| 16 class ServerRpcException extends RpcException { | 16 class ServerRpcException extends RpcException { |
| 17 /// A list of well-known server error codes. | 17 /// A list of well-known server error codes. |
| 18 static const kParseError = -32700; | 18 static const kParseError = -32700; |
| 19 static const kInvalidRequest = -32600; | 19 static const kInvalidRequest = -32600; |
| 20 static const kMethodNotFound = -32601; | 20 static const kMethodNotFound = -32601; |
| 21 static const kInvalidParams = -32602; | 21 static const kInvalidParams = -32602; |
| 22 static const kInternalError = -32603; | 22 static const kInternalError = -32603; |
| 23 static const kFeatureDisabled = 100; | 23 static const kFeatureDisabled = 100; |
| 24 static const kVMMustBePaused = 101; | 24 static const kVMMustBePaused = 101; |
| 25 static const kCannotAddBreakpoint = 102; | 25 static const kCannotAddBreakpoint = 102; |
| 26 static const kStreamAlreadySubscribed = 103; |
| 27 static const kStreamNotSubscribed = 104; |
| 26 | 28 |
| 27 int code; | 29 int code; |
| 28 Map data; | 30 Map data; |
| 29 | 31 |
| 30 static _getMessage(Map errorMap) { | 32 static _getMessage(Map errorMap) { |
| 31 Map data = errorMap['data']; | 33 Map data = errorMap['data']; |
| 32 if (data != null && data['details'] != null) { | 34 if (data != null && data['details'] != null) { |
| 33 return data['details']; | 35 return data['details']; |
| 34 } else { | 36 } else { |
| 35 return errorMap['message']; | 37 return errorMap['message']; |
| (...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 553 return invokeRpcNoUpgrade(method, params).then((ObservableMap response) { | 555 return invokeRpcNoUpgrade(method, params).then((ObservableMap response) { |
| 554 var obj = new ServiceObject._fromMap(this, response); | 556 var obj = new ServiceObject._fromMap(this, response); |
| 555 if ((obj != null) && obj.canCache) { | 557 if ((obj != null) && obj.canCache) { |
| 556 String objId = obj.id; | 558 String objId = obj.id; |
| 557 _cache.putIfAbsent(objId, () => obj); | 559 _cache.putIfAbsent(objId, () => obj); |
| 558 } | 560 } |
| 559 return obj; | 561 return obj; |
| 560 }); | 562 }); |
| 561 } | 563 } |
| 562 | 564 |
| 563 Future<ObservableMap> _fetchDirect() { | 565 Future<ObservableMap> _fetchDirect() async { |
| 564 return invokeRpcNoUpgrade('getVM', {}); | 566 if (!loaded) { |
| 567 // TODO(turnidge): Instead of always listening to all streams, |
| 568 // implement a stream abstraction in the service library so |
| 569 // that we only subscribe to the streams we want. |
| 570 await _streamListen('Isolate'); |
| 571 await _streamListen('Debug'); |
| 572 await _streamListen('GC'); |
| 573 await _streamListen('_Echo'); |
| 574 await _streamListen('_Graph'); |
| 575 } |
| 576 return await invokeRpcNoUpgrade('getVM', {}); |
| 565 } | 577 } |
| 566 | 578 |
| 567 Future<ServiceObject> getFlagList() { | 579 Future<ServiceObject> getFlagList() { |
| 568 return invokeRpc('getFlagList', {}); | 580 return invokeRpc('getFlagList', {}); |
| 569 } | 581 } |
| 570 | 582 |
| 583 Future<ServiceObject> _streamListen(String streamId) { |
| 584 Map params = { |
| 585 'streamId': streamId, |
| 586 }; |
| 587 return invokeRpc('streamListen', params); |
| 588 } |
| 589 |
| 571 /// Force the VM to disconnect. | 590 /// Force the VM to disconnect. |
| 572 void disconnect(); | 591 void disconnect(); |
| 573 /// Completes when the VM first connects. | 592 /// Completes when the VM first connects. |
| 574 Future get onConnect; | 593 Future get onConnect; |
| 575 /// Completes when the VM disconnects or there was an error connecting. | 594 /// Completes when the VM disconnects or there was an error connecting. |
| 576 Future get onDisconnect; | 595 Future get onDisconnect; |
| 577 | 596 |
| 578 void _update(ObservableMap map, bool mapIsRef) { | 597 void _update(ObservableMap map, bool mapIsRef) { |
| 579 if (mapIsRef) { | 598 if (mapIsRef) { |
| 580 return; | 599 return; |
| (...skipping 2667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3248 var v = list[i]; | 3267 var v = list[i]; |
| 3249 if ((v is ObservableMap) && _isServiceMap(v)) { | 3268 if ((v is ObservableMap) && _isServiceMap(v)) { |
| 3250 list[i] = owner.getFromMap(v); | 3269 list[i] = owner.getFromMap(v); |
| 3251 } else if (v is ObservableList) { | 3270 } else if (v is ObservableList) { |
| 3252 _upgradeObservableList(v, owner); | 3271 _upgradeObservableList(v, owner); |
| 3253 } else if (v is ObservableMap) { | 3272 } else if (v is ObservableMap) { |
| 3254 _upgradeObservableMap(v, owner); | 3273 _upgradeObservableMap(v, owner); |
| 3255 } | 3274 } |
| 3256 } | 3275 } |
| 3257 } | 3276 } |
| OLD | NEW |