bind method

StreamChannel<T> bind (StreamChannel<T> channel)
override

Transforms the events sent to and emitted by channel.

Creates a new channel. When events are passed to the returned channel's sink, the transformer will transform them and pass the transformed versions to channel.sink. When events are emitted from the channel.straem, the transformer will transform them and pass the transformed versions to the returned channel's stream.

Implementation

StreamChannel<T> bind(StreamChannel<T> channel) {
  return channel.changeSink((innerSink) {
    var sink = new _DisconnectorSink<T>(innerSink);

    if (isDisconnected) {
      // Ignore errors here, because otherwise there would be no way for the
      // user to handle them gracefully.
      sink._disconnect().catchError((_) {});
    } else {
      _sinks.add(sink);
    }

    return sink;
  });
}