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 |