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

Unified Diff: pkg/scheduled_test/lib/src/mock_clock.dart

Issue 16003002: Add StreamController.multiplex constructor. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove unused code Created 7 years, 7 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
« no previous file with comments | « pkg/mdv_observe/lib/src/observable_list.dart ('k') | sdk/lib/async/stream_controller.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/scheduled_test/lib/src/mock_clock.dart
diff --git a/pkg/scheduled_test/lib/src/mock_clock.dart b/pkg/scheduled_test/lib/src/mock_clock.dart
index c80a9552661329cf8e4402afdb4bddf75652d473..46a37afcf2e246453071150d5b44fac314843f67 100644
--- a/pkg/scheduled_test/lib/src/mock_clock.dart
+++ b/pkg/scheduled_test/lib/src/mock_clock.dart
@@ -44,27 +44,14 @@ class Clock {
int get time => _time;
int _time = 0;
- /// Collection of controllers of all subscribed listeners.
- ///
- /// [StreamController] is not overriding [Object.operator==], so this is
- /// effectively an identity map.
- Set<StreamController> _subscriptions = new Set<StreamController>();
+ /// Controller providing streams for listening.
+ StreamController<int> _multiplexController =
+ new StreamController<int>.multiplex();
Clock._();
/// The stream of millisecond ticks of the clock.
- Stream<int> get onTick {
- StreamController<int> controller;
- controller = new StreamController<int>(
- onListen: () {
- _subscriptions.add(controller);
- },
- onCancel: () {
- _subscriptions.remove(controller);
- });
- return controller.stream;
- }
-
+ Stream<int> get onTick => _multiplexController.stream;
/// Advances the clock forward by [milliseconds]. This works like synchronous
/// code that takes [milliseconds] to execute; any [Timer]s that are scheduled
@@ -74,12 +61,7 @@ class Clock {
for (var i = 0; i < milliseconds; i++) {
var tickTime = ++_time;
runAsync(() {
- List<StreamController> controllers = _subscriptions.toList();
- for (StreamController controller in controllers) {
- if (_subscriptions.contains(controller)) {
- controller.add(tickTime);
- }
- }
+ _multiplexController.add(tickTime);
});
}
}
@@ -90,7 +72,7 @@ class Clock {
/// code runs before the next tick.
void run() {
pumpEventQueue().then((_) {
- if (_subscriptions.isEmpty) return;
+ if (!_multiplexController.hasListener) return;
tick();
return run();
});
« no previous file with comments | « pkg/mdv_observe/lib/src/observable_list.dart ('k') | sdk/lib/async/stream_controller.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698