Chromium Code Reviews| Index: lib/src/delegate/stream_controller.dart |
| diff --git a/lib/src/delegate/stream_controller.dart b/lib/src/delegate/stream_controller.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3bcf6cb7b0a93913cb7d9fab43056a19d93ca49b |
| --- /dev/null |
| +++ b/lib/src/delegate/stream_controller.dart |
| @@ -0,0 +1,46 @@ |
| +// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +library async.delegate.stream_controller; |
| + |
| +import 'dart:async'; |
| + |
| +import 'stream_sink.dart'; |
| + |
| +/// Simple delegating wrapper around an [StreamController]. |
|
Lasse Reichstein Nielsen
2015/07/02 09:38:39
I'm not sure I'd consider StreamController an inte
nweiz
2015/07/06 20:40:30
I don't think of this as a way for otherwise non-c
Lasse Reichstein Nielsen
2015/07/07 10:32:18
I'm not sure I would encourage an extended StreamC
nweiz
2015/07/07 21:51:59
I think there's documentary value in sharing an in
|
| +/// |
| +/// Subclasses can override individual methods, or use this to expose only the |
| +/// [StreamController] methods of a subclass. |
| +/// |
| +/// Note that [sink] will provide a sink view of the delegating controller, |
| +/// rather than of the underlying controller. |
| +class DelegatingStreamController<T> implements StreamController<T> { |
| + final StreamController _controller; |
| + |
| + Future get done => _controller.done; |
| + |
| + bool get hasListener => _controller.hasListener; |
| + |
| + bool get isClosed => _controller.isClosed; |
| + |
| + bool get isPaused => _controller.isPaused; |
| + |
| + StreamSink<T> get sink => new DelegatingStreamSink<T>(this); |
| + |
| + Stream<T> get stream => _controller.stream; |
| + |
| + /// Create a delegating controller forwarding calls to [controller]. |
| + DelegatingStreamController(StreamController controller) |
| + : _controller = controller; |
| + |
| + void add(T data) => _controller.add(data); |
| + |
| + void addError(error, [StackTrace stackTrace]) => |
| + _controller.addError(error, stackTrace); |
| + |
| + Future addStream(Stream<T> stream, {bool cancelOnError: true}) => |
| + _controller.addStream(stream, cancelOnError: cancelOnError); |
| + |
| + Future close() => _controller.close(); |
| +} |