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

Side by Side Diff: sdk/lib/async/stream.dart

Issue 2872603002: Revert "Warn when adding something to a closed sink and improve documentation." (Closed)
Patch Set: Created 3 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 unified diff | Download patch
« no previous file with comments | « CHANGELOG.md ('k') | sdk/lib/async/stream_controller.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after
1525 * In case of an error the subscription will automatically cancel (even 1525 * In case of an error the subscription will automatically cancel (even
1526 * when it was listening with `cancelOnError` set to `false`). 1526 * when it was listening with `cancelOnError` set to `false`).
1527 * 1527 *
1528 * In case of a `done` event the future completes with the given 1528 * In case of a `done` event the future completes with the given
1529 * [futureValue]. 1529 * [futureValue].
1530 */ 1530 */
1531 Future<E> asFuture<E>([E futureValue]); 1531 Future<E> asFuture<E>([E futureValue]);
1532 } 1532 }
1533 1533
1534 /** 1534 /**
1535 * A [Sink] that supports adding errors. 1535 * An interface that abstracts creation or handling of [Stream] events.
1536 *
1537 * This makes it suitable for capturing the results of asynchronous
1538 * computations, which can complete with a value or an error.
1539 *
1540 * The [EventSink] has been designed to handle asynchronous events from
1541 * [Stream]s. See, for example, [Stream.eventTransformed] which uses
1542 * `EventSink`s to transform events.
1543 */ 1536 */
1544 abstract class EventSink<T> implements Sink<T> { 1537 abstract class EventSink<T> implements Sink<T> {
1545 /** 1538 /** Send a data event to a stream. */
1546 * Adds a data [event] to the sink.
1547 *
1548 * Must not be called on a closed sink.
1549 */
1550 void add(T event); 1539 void add(T event);
1551 1540
1552 /** 1541 /** Send an async error to a stream. */
1553 * Adds an [error] to the sink. 1542 void addError(Object errorEvent, [StackTrace stackTrace]);
1554 *
1555 * Must not be called on a closed sink.
1556 */
1557 void addError(Object error, [StackTrace stackTrace]);
1558 1543
1559 /** 1544 /** Close the sink. No further events can be added after closing. */
1560 * Closes the sink.
1561 *
1562 * Calling this method more than once is allowed, but does nothing.
1563 *
1564 * Neither [add] nor [addError] must be called after this method.
1565 */
1566 void close(); 1545 void close();
1567 } 1546 }
1568 1547
1569 /** [Stream] wrapper that only exposes the [Stream] interface. */ 1548 /** [Stream] wrapper that only exposes the [Stream] interface. */
1570 class StreamView<T> extends Stream<T> { 1549 class StreamView<T> extends Stream<T> {
1571 final Stream<T> _stream; 1550 final Stream<T> _stream;
1572 1551
1573 const StreamView(Stream<T> stream) 1552 const StreamView(Stream<T> stream)
1574 : _stream = stream, 1553 : _stream = stream,
1575 super._internal(); 1554 super._internal();
(...skipping 12 matching lines...) Expand all
1588 } 1567 }
1589 } 1568 }
1590 1569
1591 /** 1570 /**
1592 * Abstract interface for a "sink" accepting multiple entire streams. 1571 * Abstract interface for a "sink" accepting multiple entire streams.
1593 * 1572 *
1594 * A consumer can accept a number of consecutive streams using [addStream], 1573 * A consumer can accept a number of consecutive streams using [addStream],
1595 * and when no further data need to be added, the [close] method tells the 1574 * and when no further data need to be added, the [close] method tells the
1596 * consumer to complete its work and shut down. 1575 * consumer to complete its work and shut down.
1597 * 1576 *
1577 * This class is not just a [Sink<Stream>] because it is also combined with
1578 * other [Sink] classes, like it's combined with [EventSink] in the
1579 * [StreamSink] class.
1580 *
1598 * The [Stream.pipe] accepts a `StreamConsumer` and will pass the stream 1581 * The [Stream.pipe] accepts a `StreamConsumer` and will pass the stream
1599 * to the consumer's [addStream] method. When that completes, it will 1582 * to the consumer's [addStream] method. When that completes, it will
1600 * call [close] and then complete its own returned future. 1583 * call [close] and then complete its own returned future.
1601 */ 1584 */
1602 abstract class StreamConsumer<S> { 1585 abstract class StreamConsumer<S> {
1603 /** 1586 /**
1604 * Consumes the elements of [stream]. 1587 * Consumes the elements of [stream].
1605 * 1588 *
1606 * Listens on [stream] and does something for each event. 1589 * Listens on [stream] and does something for each event.
1607 * 1590 *
(...skipping 21 matching lines...) Expand all
1629 * Returns a future which is completed when the consumer has shut down. 1612 * Returns a future which is completed when the consumer has shut down.
1630 * If cleaning up can fail, the error may be reported in the returned future, 1613 * If cleaning up can fail, the error may be reported in the returned future,
1631 * otherwise it completes with `null`. 1614 * otherwise it completes with `null`.
1632 */ 1615 */
1633 Future close(); 1616 Future close();
1634 } 1617 }
1635 1618
1636 /** 1619 /**
1637 * A object that accepts stream events both synchronously and asynchronously. 1620 * A object that accepts stream events both synchronously and asynchronously.
1638 * 1621 *
1639 * A [StreamSink] combines the methods from [StreamConsumer] and [EventSink]. 1622 * A [StreamSink] unifies the asynchronous methods from [StreamConsumer] and
1623 * the synchronous methods from [EventSink].
1640 * 1624 *
1641 * The [EventSink] methods can't be used while the [addStream] is called. 1625 * The [EventSink] methods can't be used while the [addStream] is called.
1642 * As soon as the [addStream]'s [Future] completes with a value, the 1626 * As soon as the [addStream]'s [Future] completes with a value, the
1643 * [EventSink] methods can be used again. 1627 * [EventSink] methods can be used again.
1644 * 1628 *
1645 * If [addStream] is called after any of the [EventSink] methods, it'll 1629 * If [addStream] is called after any of the [EventSink] methods, it'll
1646 * be delayed until the underlying system has consumed the data added by the 1630 * be delayed until the underlying system has consumed the data added by the
1647 * [EventSink] methods. 1631 * [EventSink] methods.
1648 * 1632 *
1649 * When [EventSink] methods are used, the [done] [Future] can be used to 1633 * When [EventSink] methods are used, the [done] [Future] can be used to
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1932 /// Must only be used instead of listening to the [values] stream. 1916 /// Must only be used instead of listening to the [values] stream.
1933 /// If the stream has been listened to, this call fails. 1917 /// If the stream has been listened to, this call fails.
1934 /// After calling this method, listening on the [values] stream fails. 1918 /// After calling this method, listening on the [values] stream fails.
1935 Future cancel() { 1919 Future cancel() {
1936 // If values has been listened to, 1920 // If values has been listened to,
1937 // this throws a StateError saying that stream has already been listened to, 1921 // this throws a StateError saying that stream has already been listened to,
1938 // which is a correct error message for this call too. 1922 // which is a correct error message for this call too.
1939 return values.listen(null).cancel(); 1923 return values.listen(null).cancel();
1940 } 1924 }
1941 } 1925 }
OLDNEW
« no previous file with comments | « CHANGELOG.md ('k') | sdk/lib/async/stream_controller.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698