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 46e84a7e518cf2d630aa7f5df19ed6815b5e029c..371adbf167a72b0baa7feecb47ebef55dd404d71 100644 |
--- a/runtime/observatory/lib/src/service/object.dart |
+++ b/runtime/observatory/lib/src/service/object.dart |
@@ -432,53 +432,10 @@ abstract class VM extends ServiceObjectOwner { |
update(toObservable({'id':'vm', 'type':'@VM'})); |
} |
- Future streamListen(String streamId) { |
- return invokeRpc('streamListen', {'streamId': streamId}); |
- } |
- |
- Future streamCancel(String streamId) { |
- return invokeRpc('streamCancel', {'streamId': streamId}); |
- } |
- |
- static const kIsolateEventStreamId = 'Isolate'; |
- static const kDebugEventStreamId = 'Debug'; |
- static const kGCEventStreamId = 'GC'; |
- |
- Map<String,StreamController> _streamControllers = {}; |
- |
- void _streamListenHandleError(String streamId) { |
- streamListen(streamId).catchError((e, st) { |
- _getEventStreamController(streamId).addError(e, st); |
- }); |
- } |
- |
- void _streamCancelHandleError(String streamId) { |
- // TODO(turnidge): Consider removing the controller from the map here. |
- streamCancel(streamId).catchError((e, st) { |
- _getEventStreamController(streamId).addError(e, st); |
- }); |
- } |
- |
- StreamController _getEventStreamController(String streamId) { |
- var controller = _streamControllers.putIfAbsent( |
- streamId, () { |
- return new StreamController.broadcast( |
- onListen: () => _streamListenHandleError(streamId), |
- onCancel: () => _streamCancelHandleError(streamId)); |
- }); |
- return controller; |
- } |
- |
- Stream getEventStream(String streamId) { |
- return _getEventStreamController(streamId).stream; |
- } |
- |
- Stream get isolateEvents => getEventStream(kIsolateEventStreamId); |
- Stream get debugEvents => getEventStream(kDebugEventStreamId); |
- Stream get gcEvents => getEventStream(kGCEventStreamId); |
+ final StreamController<ServiceEvent> events = |
+ new StreamController.broadcast(); |
- void postServiceEvent(String streamId, Map response, ByteData data) { |
- assert(streamId != null); |
+ void postServiceEvent(Map response, ByteData data) { |
var map = toObservable(response); |
assert(!map.containsKey('_data')); |
if (data != null) { |
@@ -491,21 +448,19 @@ abstract class VM extends ServiceObjectOwner { |
} |
var eventIsolate = map['isolate']; |
- var event; |
if (eventIsolate == null) { |
- event = new ServiceObject._fromMap(vm, map); |
+ var event = new ServiceObject._fromMap(vm, map); |
+ events.add(event); |
} else { |
// getFromMap creates the Isolate if it hasn't been seen already. |
var isolate = getFromMap(map['isolate']); |
- event = new ServiceObject._fromMap(isolate, map); |
+ var event = new ServiceObject._fromMap(isolate, map); |
if (event.eventType == ServiceEvent.kIsolateExit) { |
_removeIsolate(isolate.id); |
} |
- // Give the isolate a chance to process the event first before |
- // dispatching it to others. |
isolate._onEvent(event); |
+ events.add(event); |
} |
- _getEventStreamController(streamId).add(event); |
} |
void _removeIsolate(String isolateId) { |
@@ -1062,7 +1017,7 @@ class Isolate extends ServiceObjectOwner with Coverage { |
Stream fetchHeapSnapshot() { |
if (_snapshotFetch == null || _snapshotFetch.isClosed) { |
_snapshotFetch = new StreamController(); |
- isolate.vm.streamListen('_Graph'); |
+ // isolate.vm.streamListen('_Graph'); |
isolate.invokeRpcNoUpgrade('requestHeapSnapshot', {}); |
} |
return _snapshotFetch.stream; |