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

Side by Side Diff: runtime/observatory/lib/src/service/object.dart

Issue 886353006: Port metrics to RPC (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 /// A [ServiceObject] is an object known to the VM service and is tied 7 /// A [ServiceObject] is an object known to the VM service and is tied
8 /// to an owning [Isolate]. 8 /// to an owning [Isolate].
9 abstract class ServiceObject extends Observable { 9 abstract class ServiceObject extends Observable {
10 static int LexicalSortName(ServiceObject o1, ServiceObject o2) { 10 static int LexicalSortName(ServiceObject o1, ServiceObject o2) {
(...skipping 1312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 Map params = { 1323 Map params = {
1324 'classId': cls.id, 1324 'classId': cls.id,
1325 'limit': limit.toString(), 1325 'limit': limit.toString(),
1326 }; 1326 };
1327 return invokeRpc('getInstances', params); 1327 return invokeRpc('getInstances', params);
1328 } 1328 }
1329 1329
1330 final ObservableMap<String, ServiceMetric> dartMetrics = 1330 final ObservableMap<String, ServiceMetric> dartMetrics =
1331 new ObservableMap<String, ServiceMetric>(); 1331 new ObservableMap<String, ServiceMetric>();
1332 1332
1333 final ObservableMap<String, ServiceMetric> vmMetrics = 1333 final ObservableMap<String, ServiceMetric> nativeMetrics =
1334 new ObservableMap<String, ServiceMetric>(); 1334 new ObservableMap<String, ServiceMetric>();
1335 1335
1336 Future<ObservableMap<String, ServiceMetric>> _refreshMetrics( 1336 Future<ObservableMap<String, ServiceMetric>> _refreshMetrics(
1337 String id, 1337 String metricType,
1338 ObservableMap<String, ServiceMetric> metricsMap) { 1338 ObservableMap<String, ServiceMetric> metricsMap) {
1339 return getDeprecated(id).then((result) { 1339 return invokeRpc('getIsolateMetricList',
1340 { 'type': metricType }).then((result) {
1340 if (result is DartError) { 1341 if (result is DartError) {
1341 // TODO(turnidge): Handle this more gracefully. 1342 // TODO(turnidge): Handle this more gracefully.
1342 Logger.root.severe(result.message); 1343 Logger.root.severe(result.message);
1343 return null; 1344 return null;
1344 } 1345 }
1345 // Clear metrics map. 1346 // Clear metrics map.
1346 metricsMap.clear(); 1347 metricsMap.clear();
1347 // Repopulate metrics map. 1348 // Repopulate metrics map.
1348 var members = result['members']; 1349 var metrics = result['metrics'];
1349 for (var metric in members) { 1350 for (var metric in metrics) {
1350 metricsMap[metric.id] = metric; 1351 metricsMap[metric.id] = metric;
1351 } 1352 }
1352 return metricsMap; 1353 return metricsMap;
1353 }); 1354 });
1354 } 1355 }
1355 1356
1356 Future<ObservableMap<String, ServiceMetric>> refreshDartMetrics() { 1357 Future<ObservableMap<String, ServiceMetric>> refreshDartMetrics() {
1357 return _refreshMetrics('metrics', dartMetrics); 1358 return _refreshMetrics('Dart', dartMetrics);
1358 } 1359 }
1359 1360
1360 Future<ObservableMap<String, ServiceMetric>> refreshVMMetrics() { 1361 Future<ObservableMap<String, ServiceMetric>> refreshNativeMetrics() {
1361 return _refreshMetrics('metrics/vm', vmMetrics); 1362 return _refreshMetrics('Native', nativeMetrics);
1362 } 1363 }
1363 1364
1364 Future refreshMetrics() { 1365 Future refreshMetrics() {
1365 return refreshDartMetrics().then((_) => refreshVMMetrics()); 1366 return refreshDartMetrics().then((_) => refreshNativeMetrics());
turnidge 2015/02/04 21:24:24 return Future.wait([refreshDartMetrics(), refreshN
Cutch 2015/02/04 21:27:11 Done.
1366 } 1367 }
1367 1368
1368 String toString() => "Isolate($_id)"; 1369 String toString() => "Isolate($_id)";
1369 } 1370 }
1370 1371
1371 /// A [ServiceObject] which implements [ObservableMap]. 1372 /// A [ServiceObject] which implements [ObservableMap].
1372 class ServiceMap extends ServiceObject implements ObservableMap { 1373 class ServiceMap extends ServiceObject implements ObservableMap {
1373 final ObservableMap _map = new ObservableMap(); 1374 final ObservableMap _map = new ObservableMap();
1374 static String objectIdRingPrefix = 'objects/'; 1375 static String objectIdRingPrefix = 'objects/';
1375 1376
(...skipping 1413 matching lines...) Expand 10 before | Expand all | Expand 10 after
2789 localAddress = map['localAddress']; 2790 localAddress = map['localAddress'];
2790 localPort = map['localPort']; 2791 localPort = map['localPort'];
2791 remoteAddress = map['remoteAddress']; 2792 remoteAddress = map['remoteAddress'];
2792 remotePort = map['remotePort']; 2793 remotePort = map['remotePort'];
2793 2794
2794 fd = map['fd']; 2795 fd = map['fd'];
2795 socketOwner = map['owner']; 2796 socketOwner = map['owner'];
2796 } 2797 }
2797 } 2798 }
2798 2799
2800
turnidge 2015/02/04 21:24:24 Too many blank lines?
Cutch 2015/02/04 21:27:11 Done.
2801
2799 class MetricSample { 2802 class MetricSample {
2800 final double value; 2803 final double value;
2801 final DateTime time; 2804 final DateTime time;
2802 MetricSample(this.value) : time = new DateTime.now(); 2805 MetricSample(this.value) : time = new DateTime.now();
2803 } 2806 }
2804 2807
2805 class ServiceMetric extends ServiceObject { 2808 class ServiceMetric extends ServiceObject {
2806 ServiceMetric._empty(ServiceObjectOwner owner) : super._empty(owner) { 2809 ServiceMetric._empty(ServiceObjectOwner owner) : super._empty(owner) {
2807 } 2810 }
2808 2811
2809 bool get canCache => true; 2812 bool get canCache => true;
2810 bool get immutable => false; 2813 bool get immutable => false;
2811 2814
2812 @observable bool recording = false; 2815 @observable bool recording = false;
2813 MetricPoller poller; 2816 MetricPoller poller;
2814 2817
2815 final ObservableList<MetricSample> samples = 2818 final ObservableList<MetricSample> samples =
2816 new ObservableList<MetricSample>(); 2819 new ObservableList<MetricSample>();
2817 int _sampleBufferSize = 100; 2820 int _sampleBufferSize = 100;
2818 int get sampleBufferSize => _sampleBufferSize; 2821 int get sampleBufferSize => _sampleBufferSize;
2819 set sampleBufferSize(int size) { 2822 set sampleBufferSize(int size) {
2820 _sampleBufferSize = size; 2823 _sampleBufferSize = size;
2821 _removeOld(); 2824 _removeOld();
2822 } 2825 }
2823 2826
2824 Future<ObservableMap> _fetchDirect() { 2827 Future<ObservableMap> _fetchDirect() {
2825 // TODO(johnmmccutchan): Make this use json rpc. 2828 assert(owner is Isolate);
2826 return vm._getAsMapDeprecated(link); 2829 return isolate.invokeRpcNoUpgrade('getIsolateMetric', { 'metricId': id});
turnidge 2015/02/04 21:24:24 Add extra space after 'id' in id} to be consistent
Cutch 2015/02/04 21:27:11 Done.
2827 } 2830 }
2828 2831
2829 2832
2830 void addSample(MetricSample sample) { 2833 void addSample(MetricSample sample) {
2831 samples.add(sample); 2834 samples.add(sample);
2832 _removeOld(); 2835 _removeOld();
2833 } 2836 }
2834 2837
2835 void _removeOld() { 2838 void _removeOld() {
2836 // TODO(johnmccutchan): If this becomes hot, consider using a circular 2839 // TODO(johnmccutchan): If this becomes hot, consider using a circular
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
2941 var v = list[i]; 2944 var v = list[i];
2942 if ((v is ObservableMap) && _isServiceMap(v)) { 2945 if ((v is ObservableMap) && _isServiceMap(v)) {
2943 list[i] = owner.getFromMap(v); 2946 list[i] = owner.getFromMap(v);
2944 } else if (v is ObservableList) { 2947 } else if (v is ObservableList) {
2945 _upgradeObservableList(v, owner); 2948 _upgradeObservableList(v, owner);
2946 } else if (v is ObservableMap) { 2949 } else if (v is ObservableMap) {
2947 _upgradeObservableMap(v, owner); 2950 _upgradeObservableMap(v, owner);
2948 } 2951 }
2949 } 2952 }
2950 } 2953 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/metrics.html ('k') | runtime/observatory/test/contexts_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698