Chromium Code Reviews| 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 /// 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |