| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 dart.async; | 5 part of dart.async; |
| 6 | 6 |
| 7 // ------------------------------------------------------------------- | 7 // ------------------------------------------------------------------- |
| 8 // Controller for creating and adding events to a stream. | 8 // Controller for creating and adding events to a stream. |
| 9 // ------------------------------------------------------------------- | 9 // ------------------------------------------------------------------- |
| 10 | 10 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 * [onResume] call might not be executed. | 74 * [onResume] call might not be executed. |
| 75 */ | 75 */ |
| 76 factory StreamController({void onListen(), | 76 factory StreamController({void onListen(), |
| 77 void onPause(), | 77 void onPause(), |
| 78 void onResume(), | 78 void onResume(), |
| 79 onCancel(), | 79 onCancel(), |
| 80 bool sync: false}) { | 80 bool sync: false}) { |
| 81 if (onListen == null && onPause == null && | 81 if (onListen == null && onPause == null && |
| 82 onResume == null && onCancel == null) { | 82 onResume == null && onCancel == null) { |
| 83 return sync | 83 return sync |
| 84 ? new _NoCallbackSyncStreamController/*<T>*/() | 84 ? new _NoCallbackSyncStreamController<T>() |
| 85 : new _NoCallbackAsyncStreamController/*<T>*/(); | 85 : new _NoCallbackAsyncStreamController<T>(); |
| 86 } | 86 } |
| 87 return sync | 87 return sync |
| 88 ? new _SyncStreamController<T>(onListen, onPause, onResume, onCancel) | 88 ? new _SyncStreamController<T>(onListen, onPause, onResume, onCancel) |
| 89 : new _AsyncStreamController<T>(onListen, onPause, onResume, onCancel); | 89 : new _AsyncStreamController<T>(onListen, onPause, onResume, onCancel); |
| 90 } | 90 } |
| 91 | 91 |
| 92 /** | 92 /** |
| 93 * A controller where [stream] can be listened to more than once. | 93 * A controller where [stream] can be listened to more than once. |
| 94 * | 94 * |
| 95 * The [Stream] returned by [stream] is a broadcast stream. | 95 * The [Stream] returned by [stream] is a broadcast stream. |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 643 this._onCancel()); | 643 this._onCancel()); |
| 644 } | 644 } |
| 645 | 645 |
| 646 abstract class _NoCallbacks { | 646 abstract class _NoCallbacks { |
| 647 _NotificationHandler get _onListen => null; | 647 _NotificationHandler get _onListen => null; |
| 648 _NotificationHandler get _onPause => null; | 648 _NotificationHandler get _onPause => null; |
| 649 _NotificationHandler get _onResume => null; | 649 _NotificationHandler get _onResume => null; |
| 650 _NotificationHandler get _onCancel => null; | 650 _NotificationHandler get _onCancel => null; |
| 651 } | 651 } |
| 652 | 652 |
| 653 class _NoCallbackAsyncStreamController/*<T>*/ = _StreamController/*<T>*/ | 653 class _NoCallbackAsyncStreamController<T> = _StreamController<T> |
| 654 with _AsyncStreamControllerDispatch/*<T>*/, _NoCallbacks; | 654 with _AsyncStreamControllerDispatch<T>, _NoCallbacks; |
| 655 | 655 |
| 656 class _NoCallbackSyncStreamController/*<T>*/ = _StreamController/*<T>*/ | 656 class _NoCallbackSyncStreamController<T> = _StreamController<T> |
| 657 with _SyncStreamControllerDispatch/*<T>*/, _NoCallbacks; | 657 with _SyncStreamControllerDispatch<T>, _NoCallbacks; |
| 658 | 658 |
| 659 typedef _NotificationHandler(); | 659 typedef _NotificationHandler(); |
| 660 | 660 |
| 661 Future _runGuarded(_NotificationHandler notificationHandler) { | 661 Future _runGuarded(_NotificationHandler notificationHandler) { |
| 662 if (notificationHandler == null) return null; | 662 if (notificationHandler == null) return null; |
| 663 try { | 663 try { |
| 664 var result = notificationHandler(); | 664 var result = notificationHandler(); |
| 665 if (result is Future) return result; | 665 if (result is Future) return result; |
| 666 return null; | 666 return null; |
| 667 } catch (e, s) { | 667 } catch (e, s) { |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 _StreamControllerAddStreamState(_StreamController controller, | 794 _StreamControllerAddStreamState(_StreamController controller, |
| 795 this.varData, | 795 this.varData, |
| 796 Stream source, | 796 Stream source, |
| 797 bool cancelOnError) | 797 bool cancelOnError) |
| 798 : super(controller, source, cancelOnError) { | 798 : super(controller, source, cancelOnError) { |
| 799 if (controller.isPaused) { | 799 if (controller.isPaused) { |
| 800 addSubscription.pause(); | 800 addSubscription.pause(); |
| 801 } | 801 } |
| 802 } | 802 } |
| 803 } | 803 } |
| OLD | NEW |