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

Unified Diff: runtime/observatory/lib/src/service/object.dart

Issue 897193002: Finish moving service protocol to json rpc. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/observatory/lib/src/elements/service_view.html ('k') | runtime/observatory/observatory.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/observatory/lib/src/service/object.dart
diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
index b22a887b4a3c2ae9bf37eac9c779e770783b82a4..564914e8689aa0f49cfbf5dd0ee270f04add4fde 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -4,8 +4,7 @@
part of service;
-/// A [ServiceObject] is an object known to the VM service and is tied
-/// to an owning [Isolate].
+/// A [ServiceObject] represents a persistent object within the vm.
abstract class ServiceObject extends Observable {
static int LexicalSortName(ServiceObject o1, ServiceObject o2) {
return o1.name.compareTo(o2.name);
@@ -90,9 +89,6 @@ abstract class ServiceObject extends Observable {
!isMirrorReference && !isWeakProperty && !isClosure);
}
- /// The complete service url of this object.
- @reflectable String get link => _owner.relativeLink(_id);
-
/// Has this object been fully loaded?
bool get loaded => _loaded;
bool _loaded = false;
@@ -282,11 +278,6 @@ abstract class ServiceObject extends Observable {
// Updates internal state from [map]. [map] can be a reference.
void _update(ObservableMap map, bool mapIsRef);
-
- String relativeLink(String id) {
- assert(id != null);
- return "${link}/${id}";
- }
}
abstract class Coverage {
@@ -294,7 +285,6 @@ abstract class Coverage {
ServiceObjectOwner get owner;
String get type;
VM get vm;
- String relativeLink(String id);
/// Default handler for coverage data.
void processCoverageData(List coverageData) {
@@ -329,9 +319,6 @@ abstract class ServiceObjectOwner extends ServiceObject {
/// The result may come from the cache. The result will not necessarily
/// be [loaded].
ServiceObject getFromMap(ObservableMap map);
-
- /// Creates a link to [id] relative to [this].
- String relativeLink(String id);
}
/// State for a VM being inspected.
@@ -341,9 +328,6 @@ abstract class VM extends ServiceObjectOwner {
@reflectable Iterable<Isolate> get isolates => _isolateCache.values;
- @reflectable String get link => '$id';
- @reflectable String relativeLink(String id) => '$id';
-
@observable String version = 'unknown';
@observable String targetCPU;
@observable int architectureBits;
@@ -450,42 +434,6 @@ abstract class VM extends ServiceObjectOwner {
});
}
- Future<ServiceObject> getDeprecated(String id) {
- assert(id.startsWith('/') == false);
- // Isolates are handled specially, since they can cache sub-objects.
- if (id.startsWith(_isolatesPrefix)) {
- String isolateId = _parseIsolateId(id);
- String objectId = _parseObjectId(id);
- return getIsolate(isolateId).then((isolate) {
- if (isolate == null) {
- // The isolate does not exist. Return the VM object instead.
- //
- // TODO(turnidge): Generate a service error?
- return this;
- }
- if (objectId == null) {
- return isolate.reload();
- } else {
- return isolate.getDeprecated(objectId);
- }
- });
- }
-
- var obj = _cache[id];
- if (obj != null) {
- return obj.reload();
- }
-
- // Cache miss. Get the object from the vm directly.
- return _getAsMapDeprecated(id).then((ObservableMap map) {
- var obj = new ServiceObject._fromMap(this, map);
- if (obj.canCache) {
- _cache.putIfAbsent(id, () => obj);
- }
- return obj;
- });
- }
-
dynamic _reviver(dynamic key, dynamic value) {
return value;
}
@@ -527,31 +475,6 @@ abstract class VM extends ServiceObjectOwner {
return new Future.value(map);
}
- /// Gets [id] as an [ObservableMap] from the service directly. If
- /// an error occurs, the future is completed as an error with a
- /// ServiceError or ServiceException. Therefore any chained then() calls
- /// will only receive a map encoding a valid ServiceObject.
- Future<ObservableMap> _getAsMapDeprecated(String id) {
- return getStringDeprecated(id).then((response) {
- var map = _parseJSON(response);
- if (Tracer.current != null) {
- Tracer.current.trace("Received response for ${id}", map:map);
- }
- return _processMap(map);
- }).catchError((error) {
- // ServiceError, forward to VM's ServiceError stream.
- errors.add(error);
- return new Future.error(error);
- }, test: (e) => e is ServiceError).catchError((exception) {
- // ServiceException, forward to VM's ServiceException stream.
- exceptions.add(exception);
- return new Future.error(exception);
- }, test: (e) => e is ServiceException);
- }
-
- /// Get [id] as a [String] from the service directly. See [getAsMap].
- Future<String> getStringDeprecated(String id);
-
// Implemented in subclass.
Future<String> invokeRpcRaw(String method, Map params);
@@ -592,6 +515,10 @@ abstract class VM extends ServiceObjectOwner {
return invokeRpcNoUpgrade('getVM', {});
}
+ Future<ServiceObject> getFlagList() {
+ return invokeRpc('getFlagList', {});
+ }
+
/// Force the VM to disconnect.
void disconnect();
/// Completes when the VM first connects.
@@ -754,8 +681,7 @@ class HeapSnapshot {
var result = [];
for (var v in graph.getMostRetained(classId: classId, limit: limit)) {
var address = v.addressForWordSize(isolate.vm.architectureBits ~/ 8);
- result.add(isolate.getDeprecated(
- 'address/${address.toRadixString(16)}?ref=true').then((obj) {
+ result.add(isolate.getObjectByAddress(address.toRadixString(16)).then((obj) {
obj.retainedSize = v.retainedSize;
return new Future(() => obj);
}));
@@ -772,8 +698,6 @@ class Isolate extends ServiceObjectOwner with Coverage {
@reflectable Isolate get isolate => this;
@observable ObservableMap counters = new ObservableMap();
- String get link => '/${_id}';
-
@observable ServiceEvent pauseEvent = null;
bool get _isPaused => pauseEvent != null;
@@ -789,9 +713,6 @@ class Isolate extends ServiceObjectOwner with Coverage {
assert(owner is VM);
}
- /// Creates a link to [id] relative to [this].
- @reflectable String relativeLink(String id) => '/${this.id}/$id';
-
static const TAG_ROOT_ID = 'code/tag-0';
/// Returns the Code object for the root tag.
@@ -890,25 +811,8 @@ class Isolate extends ServiceObjectOwner with Coverage {
return obj;
}
- Future<ServiceObject> getDeprecated(String id) {
- // Do not allow null ids or empty ids.
- assert(id != null && id != '');
- var obj = _cache[id];
- if (obj != null) {
- return obj.reload();
- }
- // Cache miss. Get the object from the vm directly.
- return vm._getAsMapDeprecated(relativeLink(id)).then((ObservableMap map) {
- var obj = new ServiceObject._fromMap(this, map);
- if (obj.canCache) {
- _cache.putIfAbsent(id, () => obj);
- }
- return obj;
- });
- }
-
Future<ObservableMap> invokeRpcNoUpgrade(String method, Map params) {
- params['isolate'] = id;
+ params['isolateId'] = id;
return vm.invokeRpcNoUpgrade(method, params);
}
@@ -1327,6 +1231,14 @@ class Isolate extends ServiceObjectOwner with Coverage {
return invokeRpc('getInstances', params);
}
+ Future<ServiceObject> getObjectByAddress(String address, [bool ref=true]) {
+ Map params = {
+ 'address': address,
+ 'ref': ref,
+ };
+ return invokeRpc('getObjectByAddress', params);
+ }
+
final ObservableMap<String, ServiceMetric> dartMetrics =
new ObservableMap<String, ServiceMetric>();
« no previous file with comments | « runtime/observatory/lib/src/elements/service_view.html ('k') | runtime/observatory/observatory.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698