| 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 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 * void add(String data) { | 264 * void add(String data) { |
| 265 * _outputSink.add(data); | 265 * _outputSink.add(data); |
| 266 * _outputSink.add(data); | 266 * _outputSink.add(data); |
| 267 * } | 267 * } |
| 268 * | 268 * |
| 269 * void addError(e, [st]) { _outputSink.addError(e, st); } | 269 * void addError(e, [st]) { _outputSink.addError(e, st); } |
| 270 * void close() { _outputSink.close(); } | 270 * void close() { _outputSink.close(); } |
| 271 * } | 271 * } |
| 272 * | 272 * |
| 273 * class DuplicationTransformer implements StreamTransformer<String, Strin
g> { | 273 * class DuplicationTransformer implements StreamTransformer<String, Strin
g> { |
| 274 * // Some generic types ommitted for brevety. | 274 * // Some generic types omitted for brevity. |
| 275 * Stream bind(Stream stream) => new Stream<String>.eventTransformed( | 275 * Stream bind(Stream stream) => new Stream<String>.eventTransformed( |
| 276 * stream, | 276 * stream, |
| 277 * (EventSink sink) => new DuplicationSink(sink)); | 277 * (EventSink sink) => new DuplicationSink(sink)); |
| 278 * } | 278 * } |
| 279 * | 279 * |
| 280 * stringStream.transform(new DuplicationTransformer()); | 280 * stringStream.transform(new DuplicationTransformer()); |
| 281 * | 281 * |
| 282 * The resulting stream is a broadcast stream if [source] is. | 282 * The resulting stream is a broadcast stream if [source] is. |
| 283 */ | 283 */ |
| 284 factory Stream.eventTransformed( | 284 factory Stream.eventTransformed( |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 /** | 459 /** |
| 460 * Transforms each element into a sequence of asynchronous events. | 460 * Transforms each element into a sequence of asynchronous events. |
| 461 * | 461 * |
| 462 * Returns a new stream and for each event of this stream, do the following: | 462 * Returns a new stream and for each event of this stream, do the following: |
| 463 * | 463 * |
| 464 * * If the event is an error event or a done event, it is emitted directly | 464 * * If the event is an error event or a done event, it is emitted directly |
| 465 * by the returned stream. | 465 * by the returned stream. |
| 466 * * Otherwise it is an element. Then the [convert] function is called | 466 * * Otherwise it is an element. Then the [convert] function is called |
| 467 * with the element as argument to produce a convert-stream for the element. | 467 * with the element as argument to produce a convert-stream for the element. |
| 468 * * If that call throws, the error is emitted on the returned stream. | 468 * * If that call throws, the error is emitted on the returned stream. |
| 469 * * If the call returnes `null`, no further action is taken for the elements. | 469 * * If the call returns `null`, no further action is taken for the elements. |
| 470 * * Otherwise, this stream is paused and convert-stream is listened to. | 470 * * Otherwise, this stream is paused and convert-stream is listened to. |
| 471 * Every data and error event of the convert-stream is emitted on the returned | 471 * Every data and error event of the convert-stream is emitted on the returned |
| 472 * stream in the order it is produced. | 472 * stream in the order it is produced. |
| 473 * When the convert-stream ends, this stream is resumed. | 473 * When the convert-stream ends, this stream is resumed. |
| 474 * | 474 * |
| 475 * The returned stream is a broadcast stream if this stream is. | 475 * The returned stream is a broadcast stream if this stream is. |
| 476 */ | 476 */ |
| 477 Stream<E> asyncExpand<E>(Stream<E> convert(T event)) { | 477 Stream<E> asyncExpand<E>(Stream<E> convert(T event)) { |
| 478 StreamController<E> controller; | 478 StreamController<E> controller; |
| 479 StreamSubscription<T> subscription; | 479 StreamSubscription<T> subscription; |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 return future; | 775 return future; |
| 776 } | 776 } |
| 777 | 777 |
| 778 /** | 778 /** |
| 779 * Executes [action] on each element of the stream. | 779 * Executes [action] on each element of the stream. |
| 780 * | 780 * |
| 781 * Completes the returned [Future] when all elements of the stream | 781 * Completes the returned [Future] when all elements of the stream |
| 782 * have been processed. | 782 * have been processed. |
| 783 * | 783 * |
| 784 * If the stream contains an error, or if the call to [action] throws, | 784 * If the stream contains an error, or if the call to [action] throws, |
| 785 * the returne future completes with that error, and processing stops. | 785 * the returned future completes with that error, and processing stops. |
| 786 */ | 786 */ |
| 787 Future forEach(void action(T element)) { | 787 Future forEach(void action(T element)) { |
| 788 _Future future = new _Future(); | 788 _Future future = new _Future(); |
| 789 StreamSubscription subscription; | 789 StreamSubscription subscription; |
| 790 subscription = this.listen( | 790 subscription = this.listen( |
| 791 (T element) { | 791 (T element) { |
| 792 // TODO(floitsch): the type should be 'void' and inferred. | 792 // TODO(floitsch): the type should be 'void' and inferred. |
| 793 _runUserCode<dynamic>(() => action(element), (_) {}, | 793 _runUserCode<dynamic>(() => action(element), (_) {}, |
| 794 _cancelAndErrorClosure(subscription, future)); | 794 _cancelAndErrorClosure(subscription, future)); |
| 795 }, | 795 }, |
| (...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1543 * [Stream.listen], by calling [asFuture], or by a previous call to [onError]. | 1543 * [Stream.listen], by calling [asFuture], or by a previous call to [onError]. |
| 1544 */ | 1544 */ |
| 1545 void onError(Function handleError); | 1545 void onError(Function handleError); |
| 1546 | 1546 |
| 1547 /** | 1547 /** |
| 1548 * Replaces the done event handler of this subscription. | 1548 * Replaces the done event handler of this subscription. |
| 1549 * | 1549 * |
| 1550 * The [handleDone] function is called when the stream closes. | 1550 * The [handleDone] function is called when the stream closes. |
| 1551 * The value may be `null`, in which case no function is called. | 1551 * The value may be `null`, in which case no function is called. |
| 1552 * | 1552 * |
| 1553 * This method reaplces the current handler set by the invocation of | 1553 * This method replaces the current handler set by the invocation of |
| 1554 * [Stream.listen], by calling [asFuture], or by a previous call to [onDone]. | 1554 * [Stream.listen], by calling [asFuture], or by a previous call to [onDone]. |
| 1555 */ | 1555 */ |
| 1556 void onDone(void handleDone()); | 1556 void onDone(void handleDone()); |
| 1557 | 1557 |
| 1558 /** | 1558 /** |
| 1559 * Request that the stream pauses events until further notice. | 1559 * Request that the stream pauses events until further notice. |
| 1560 * | 1560 * |
| 1561 * While paused, the subscription will not fire any events. | 1561 * While paused, the subscription will not fire any events. |
| 1562 * If it receives events from its source, they will be buffered until | 1562 * If it receives events from its source, they will be buffered until |
| 1563 * the subscription is resumed. | 1563 * the subscription is resumed. |
| (...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1990 } | 1990 } |
| 1991 | 1991 |
| 1992 void addError(error, [StackTrace stackTrace]) { | 1992 void addError(error, [StackTrace stackTrace]) { |
| 1993 _sink.addError(error, stackTrace); | 1993 _sink.addError(error, stackTrace); |
| 1994 } | 1994 } |
| 1995 | 1995 |
| 1996 void close() { | 1996 void close() { |
| 1997 _sink.close(); | 1997 _sink.close(); |
| 1998 } | 1998 } |
| 1999 } | 1999 } |
| OLD | NEW |