Add a DelegatingStreamChannel class.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//1617483003 .
diff --git a/pkgs/stream_channel/lib/src/delegating_stream_channel.dart b/pkgs/stream_channel/lib/src/delegating_stream_channel.dart
new file mode 100644
index 0000000..9d6ad90
--- /dev/null
+++ b/pkgs/stream_channel/lib/src/delegating_stream_channel.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2016, 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.
+
+/// A simple delegating wrapper around [StreamChannel].
+///
+/// Subclasses can override individual methods, or use this to expose only
+/// [StreamChannel] methods.
+class StreamChannelView<T> extends StreamChannelMixin<T> {
+  /// The inner channel to which methods are forwarded.
+  final StreamChannel<T> _inner;
+
+  Stream<T> get stream => _inner.stream;
+  StreamSink<T> get sink => _inner.sink;
+
+  StreamChannelView(this._inner);
+}
diff --git a/pkgs/stream_channel/lib/stream_channel.dart b/pkgs/stream_channel/lib/stream_channel.dart
index c4e28a0..a8c9a09 100644
--- a/pkgs/stream_channel/lib/stream_channel.dart
+++ b/pkgs/stream_channel/lib/stream_channel.dart
@@ -4,6 +4,7 @@
 
 import 'dart:async';
 
+export 'src/delegating_stream_channel.dart';
 export 'src/multi_channel.dart';
 
 /// An abstract class representing a two-way communication channel.