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

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

Issue 1398823002: We can now name the current VM using the service protocol. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: more Created 5 years, 2 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
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 e54bdb9da2385eb3a2d114dcdc7de2bb8981d963..512d6c04c102947ea3e29a0dc4b34071a5509ac4 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -640,14 +640,15 @@ abstract class VM extends ServiceObjectOwner {
@observable int pid = 0;
@observable DateTime startTime;
@observable DateTime refreshTime;
- @observable Duration get upTime =>
- (new DateTime.now().difference(startTime));
+ @observable Duration get upTime {
+ if (startTime == null) {
+ return null;
+ }
+ return (new DateTime.now().difference(startTime));
+ }
VM() : super._empty(null) {
- name = 'vm';
- vmName = 'vm';
- _cache['vm'] = this;
- update(toObservable({'id':'vm', 'type':'@VM'}));
+ update(toObservable({'name':'vm', 'type':'@VM'}));
}
void postServiceEvent(String streamId, Map response, ByteData data) {
@@ -733,6 +734,14 @@ abstract class VM extends ServiceObjectOwner {
if (map == null) {
return null;
}
+ var type = _stripRef(map['type']);
+ if (type == 'VM') {
+ // Update this VM object.
+ update(map);
+ return this;
+ }
+
+ assert(type == 'Isolate');
String id = map['id'];
if (!id.startsWith(_isolateIdPrefix)) {
// Currently the VM only supports upgrading Isolate ServiceObjects.
@@ -816,6 +825,7 @@ abstract class VM extends ServiceObjectOwner {
if (!loaded) {
// The vm service relies on these events to keep the VM and
// Isolate types up to date.
+ await listenEventStream(kVMStream, _dispatchEventToIsolate);
await listenEventStream(kIsolateStream, _dispatchEventToIsolate);
await listenEventStream(kDebugStream, _dispatchEventToIsolate);
await listenEventStream(_kGraphStream, _dispatchEventToIsolate);
@@ -823,6 +833,10 @@ abstract class VM extends ServiceObjectOwner {
return await invokeRpcNoUpgrade('getVM', {});
}
+ Future setName(String newName) {
+ return invokeRpc('setVMName', { 'name': newName });
+ }
+
Future<ServiceObject> getFlagList() {
return invokeRpc('getFlagList', {});
}
@@ -845,6 +859,7 @@ abstract class VM extends ServiceObjectOwner {
Map<String,_EventStreamState> _eventStreams = {};
// Well-known stream ids.
+ static const kVMStream = 'VM';
static const kIsolateStream = 'Isolate';
static const kDebugStream = 'Debug';
static const kGCStream = 'GC';
@@ -875,6 +890,8 @@ abstract class VM extends ServiceObjectOwner {
Future get onDisconnect;
void _update(ObservableMap map, bool mapIsRef) {
+ name = map['name'];
+ vmName = map.containsKey('_vmName') ? map['_vmName'] : name;
if (mapIsRef) {
return;
}
@@ -1111,8 +1128,12 @@ class Isolate extends ServiceObjectOwner with Coverage {
@observable int number;
@observable int originNumber;
@observable DateTime startTime;
- @observable Duration get upTime =>
- (new DateTime.now().difference(startTime));
+ @observable Duration get upTime {
+ if (startTime == null) {
+ return null;
+ }
+ return (new DateTime.now().difference(startTime));
+ }
@observable ObservableMap counters = new ObservableMap();
@@ -1341,7 +1362,7 @@ class Isolate extends ServiceObjectOwner with Coverage {
void _update(ObservableMap map, bool mapIsRef) {
name = map['name'];
- vmName = map['name'];
+ vmName = map.containsKey('_vmName') ? map['_vmName'] : name;
number = int.parse(map['number'], onError:(_) => null);
if (mapIsRef) {
return;
@@ -1485,8 +1506,8 @@ class Isolate extends ServiceObjectOwner with Coverage {
break;
default:
- // Log unrecognized events.
- Logger.root.severe('Unrecognized event: $event');
+ // Log unexpected events.
+ Logger.root.severe('Unexpected event: $event');
break;
}
}
@@ -1836,6 +1857,7 @@ Level _findLogLevel(int value) {
/// A [ServiceEvent] is an asynchronous event notification from the vm.
class ServiceEvent extends ServiceObject {
/// The possible 'kind' values.
+ static const kVMUpdate = 'VMUpdate';
static const kIsolateStart = 'IsolateStart';
static const kIsolateRunnable = 'IsolateRunnable';
static const kIsolateExit = 'IsolateExit';
@@ -1953,11 +1975,12 @@ class ServiceEvent extends ServiceObject {
}
String toString() {
+ var ownerName = owner.id != null ? owner.id.toString() : owner.name;
if (data == null) {
- return "ServiceEvent(owner='${owner.id}', kind='${kind}', "
+ return "ServiceEvent(owner='${ownerName}', kind='${kind}', "
"time=${timestamp})";
} else {
- return "ServiceEvent(owner='${owner.id}', kind='${kind}', "
+ return "ServiceEvent(owner='${ownerName}', kind='${kind}', "
"data.lengthInBytes=${data.lengthInBytes}, time=${timestamp})";
}
}
« no previous file with comments | « runtime/observatory/lib/src/elements/vm_view.html ('k') | runtime/observatory/tests/service/get_vm_rpc_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698