OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:async/async.dart'; | 7 import 'package:async/async.dart'; |
8 | 8 |
9 import 'src/stream_channel_transformer.dart'; | 9 import 'src/stream_channel_transformer.dart'; |
10 | 10 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 factory StreamChannel(Stream<T> stream, StreamSink<T> sink) => | 69 factory StreamChannel(Stream<T> stream, StreamSink<T> sink) => |
70 new _StreamChannel<T>(stream, sink); | 70 new _StreamChannel<T>(stream, sink); |
71 | 71 |
72 /// Connects [this] to [other], so that any values emitted by either are sent | 72 /// Connects [this] to [other], so that any values emitted by either are sent |
73 /// directly to the other. | 73 /// directly to the other. |
74 void pipe(StreamChannel<T> other); | 74 void pipe(StreamChannel<T> other); |
75 | 75 |
76 /// Transforms [this] using [transformer]. | 76 /// Transforms [this] using [transformer]. |
77 /// | 77 /// |
78 /// This is identical to calling `transformer.bind(channel)`. | 78 /// This is identical to calling `transformer.bind(channel)`. |
79 StreamChannel transform(StreamChannelTransformer<dynamic, T> transformer); | 79 StreamChannel transform(StreamChannelTransformer<T, dynamic> transformer); |
80 | 80 |
81 /// Transforms only the [stream] component of [this] using [transformer]. | 81 /// Transforms only the [stream] component of [this] using [transformer]. |
82 StreamChannel<T> transformStream(StreamTransformer<T, T> transformer); | 82 StreamChannel<T> transformStream(StreamTransformer<T, T> transformer); |
83 | 83 |
84 /// Transforms only the [sink] component of [this] using [transformer]. | 84 /// Transforms only the [sink] component of [this] using [transformer]. |
85 StreamChannel<T> transformSink(StreamSinkTransformer<T, T> transformer); | 85 StreamChannel<T> transformSink(StreamSinkTransformer<T, T> transformer); |
86 | 86 |
87 /// Returns a copy of [this] with [stream] replaced by [change]'s return | 87 /// Returns a copy of [this] with [stream] replaced by [change]'s return |
88 /// value. | 88 /// value. |
89 StreamChannel<T> changeStream(Stream<T> change(Stream<T> stream)); | 89 StreamChannel<T> changeStream(Stream<T> change(Stream<T> stream)); |
(...skipping 16 matching lines...) Expand all Loading... |
106 } | 106 } |
107 | 107 |
108 /// A mixin that implements the instance methods of [StreamChannel] in terms of | 108 /// A mixin that implements the instance methods of [StreamChannel] in terms of |
109 /// [stream] and [sink]. | 109 /// [stream] and [sink]. |
110 abstract class StreamChannelMixin<T> implements StreamChannel<T> { | 110 abstract class StreamChannelMixin<T> implements StreamChannel<T> { |
111 void pipe(StreamChannel<T> other) { | 111 void pipe(StreamChannel<T> other) { |
112 stream.pipe(other.sink); | 112 stream.pipe(other.sink); |
113 other.stream.pipe(sink); | 113 other.stream.pipe(sink); |
114 } | 114 } |
115 | 115 |
116 StreamChannel transform(StreamChannelTransformer<dynamic, T> transformer) => | 116 StreamChannel transform(StreamChannelTransformer<T, dynamic> transformer) => |
117 transformer.bind(this); | 117 transformer.bind(this); |
118 | 118 |
119 StreamChannel<T> transformStream(StreamTransformer<T, T> transformer) => | 119 StreamChannel<T> transformStream(StreamTransformer<T, T> transformer) => |
120 changeStream(transformer.bind); | 120 changeStream(transformer.bind); |
121 | 121 |
122 StreamChannel<T> transformSink(StreamSinkTransformer<T, T> transformer) => | 122 StreamChannel<T> transformSink(StreamSinkTransformer<T, T> transformer) => |
123 changeSink(transformer.bind); | 123 changeSink(transformer.bind); |
124 | 124 |
125 StreamChannel<T> changeStream(Stream<T> change(Stream<T> stream)) => | 125 StreamChannel<T> changeStream(Stream<T> change(Stream<T> stream)) => |
126 new StreamChannel(change(stream), sink); | 126 new StreamChannel(change(stream), sink); |
127 | 127 |
128 StreamChannel<T> changeSink(StreamSink<T> change(StreamSink<T> sink)) => | 128 StreamChannel<T> changeSink(StreamSink<T> change(StreamSink<T> sink)) => |
129 new StreamChannel(stream, change(sink)); | 129 new StreamChannel(stream, change(sink)); |
130 } | 130 } |
OLD | NEW |