| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 // Core Stream types | 8 // Core Stream types | 
| 9 // ------------------------------------------------------------------- | 9 // ------------------------------------------------------------------- | 
| 10 | 10 | 
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 142   } | 142   } | 
| 143 | 143 | 
| 144   /** | 144   /** | 
| 145    * Reports whether this stream is a broadcast stream. | 145    * Reports whether this stream is a broadcast stream. | 
| 146    */ | 146    */ | 
| 147   bool get isBroadcast => false; | 147   bool get isBroadcast => false; | 
| 148 | 148 | 
| 149   /** | 149   /** | 
| 150    * Returns a multi-subscription stream that produces the same events as this. | 150    * Returns a multi-subscription stream that produces the same events as this. | 
| 151    * | 151    * | 
|  | 152    * If this stream is already a broadcast stream, it is returned unmodified. | 
|  | 153    * | 
| 152    * If this stream is single-subscription, return a new stream that allows | 154    * If this stream is single-subscription, return a new stream that allows | 
| 153    * multiple subscribers. It will subscribe to this stream when its first | 155    * multiple subscribers. It will subscribe to this stream when its first | 
| 154    * subscriber is added, and unsubscribe again when the last subscription is | 156    * subscriber is added, and will stay subscribed until this stream ends, | 
| 155    * canceled. | 157    * or a callback cancels the subscription. | 
| 156    * | 158    * | 
| 157    * If this stream is already a broadcast stream, it is returned unmodified. | 159    * If [onListen] is provided, it is called with a subscription-like object | 
|  | 160    * that represents the underlying subscription to this stream. It is | 
|  | 161    * possible to pause, resume or cancel the subscription during the call | 
|  | 162    * to [onListen]. It is not possible to change the event handlers, including | 
|  | 163    * using [StreamSubscription.asFuture]. | 
|  | 164    * | 
|  | 165    * If [onCancel] is provided, it is called in a similar way to [onListen] | 
|  | 166    * when the returned stream stops having listener. If it later gets | 
|  | 167    * a new listener, the [onListen] function is called again. | 
|  | 168    * | 
|  | 169    * Use the callbacks, for example, for pausing the underlying subscription | 
|  | 170    * while having no subscribers to prevent losing events, or canceling the | 
|  | 171    * subscription when there are no listeners. | 
| 158    */ | 172    */ | 
| 159   Stream<T> asBroadcastStream() { | 173   Stream<T> asBroadcastStream({ | 
|  | 174       void onListen(StreamSubscription<T> subscription), | 
|  | 175       void onCancel(StreamSubscription<T> subscription) }) { | 
| 160     if (isBroadcast) return this; | 176     if (isBroadcast) return this; | 
| 161     return new _AsBroadcastStream<T>(this); | 177     return new _AsBroadcastStream<T>(this, onListen, onCancel); | 
| 162   } | 178   } | 
| 163 | 179 | 
| 164   /** | 180   /** | 
| 165    * Adds a subscription to this stream. | 181    * Adds a subscription to this stream. | 
| 166    * | 182    * | 
| 167    * On each data event from this stream, the subscriber's [onData] handler | 183    * On each data event from this stream, the subscriber's [onData] handler | 
| 168    * is called. If [onData] is null, nothing happens. | 184    * is called. If [onData] is null, nothing happens. | 
| 169    * | 185    * | 
| 170    * On errors from this stream, the [onError] handler is given a | 186    * On errors from this stream, the [onError] handler is given a | 
| 171    * object describing the error. | 187    * object describing the error. | 
| (...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 902 | 918 | 
| 903 | 919 | 
| 904 /** [Stream] wrapper that only exposes the [Stream] interface. */ | 920 /** [Stream] wrapper that only exposes the [Stream] interface. */ | 
| 905 class StreamView<T> extends Stream<T> { | 921 class StreamView<T> extends Stream<T> { | 
| 906   Stream<T> _stream; | 922   Stream<T> _stream; | 
| 907 | 923 | 
| 908   StreamView(this._stream); | 924   StreamView(this._stream); | 
| 909 | 925 | 
| 910   bool get isBroadcast => _stream.isBroadcast; | 926   bool get isBroadcast => _stream.isBroadcast; | 
| 911 | 927 | 
| 912   Stream<T> asBroadcastStream() => _stream.asBroadcastStream(); | 928   Stream<T> asBroadcastStream({void onListen(StreamSubscription subscription), | 
|  | 929                                void onCancel(StreamSubscription subscription)}) | 
|  | 930       => _stream.asBroadcastStream(onListen: onListen, onCancel: onCancel); | 
| 913 | 931 | 
| 914   StreamSubscription<T> listen(void onData(T value), | 932   StreamSubscription<T> listen(void onData(T value), | 
| 915                                { void onError(error), | 933                                { void onError(error), | 
| 916                                  void onDone(), | 934                                  void onDone(), | 
| 917                                  bool cancelOnError }) { | 935                                  bool cancelOnError }) { | 
| 918     return _stream.listen(onData, onError: onError, onDone: onDone, | 936     return _stream.listen(onData, onError: onError, onDone: onDone, | 
| 919                           cancelOnError: cancelOnError); | 937                           cancelOnError: cancelOnError); | 
| 920   } | 938   } | 
| 921 } | 939 } | 
| 922 | 940 | 
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1241    * | 1259    * | 
| 1242    * If a [moveNext] call has been made, it will complete with `false` as value, | 1260    * If a [moveNext] call has been made, it will complete with `false` as value, | 
| 1243    * as will all further calls to [moveNext]. | 1261    * as will all further calls to [moveNext]. | 
| 1244    * | 1262    * | 
| 1245    * If you need to stop listening for values before the stream iterator is | 1263    * If you need to stop listening for values before the stream iterator is | 
| 1246    * automatically closed, you must call [cancel] to ensure that the stream | 1264    * automatically closed, you must call [cancel] to ensure that the stream | 
| 1247    * is properly closed. | 1265    * is properly closed. | 
| 1248    */ | 1266    */ | 
| 1249   void cancel(); | 1267   void cancel(); | 
| 1250 } | 1268 } | 
| OLD | NEW | 
|---|