| Index: quiver/lib/src/streams/concat.dart
|
| diff --git a/quiver/lib/src/streams/concat.dart b/quiver/lib/src/streams/concat.dart
|
| deleted file mode 100644
|
| index d8c44e05bce8b97c1f0d02eef7b5fa656f585d6d..0000000000000000000000000000000000000000
|
| --- a/quiver/lib/src/streams/concat.dart
|
| +++ /dev/null
|
| @@ -1,85 +0,0 @@
|
| -// Copyright 2014 Google Inc. All Rights Reserved.
|
| -//
|
| -// Licensed under the Apache License, Version 2.0 (the "License");
|
| -// you may not use this file except in compliance with the License.
|
| -// You may obtain a copy of the License at
|
| -//
|
| -// http://www.apache.org/licenses/LICENSE-2.0
|
| -//
|
| -// Unless required by applicable law or agreed to in writing, software
|
| -// distributed under the License is distributed on an "AS IS" BASIS,
|
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -// See the License for the specific language governing permissions and
|
| -// limitations under the License.
|
| -
|
| -part of quiver.streams;
|
| -
|
| -/**
|
| - * Returns the concatentation of the input streams.
|
| - *
|
| - * When the returned stream is listened to, the [streams] are iterated through
|
| - * asynchronously, forwarding all events (both data and error) for the current
|
| - * stream to the returned stream before advancing the iterator and listening to
|
| - * the next stream. If advancing the iterator throws an error, the returned
|
| - * stream ends immediately with that error.
|
| - *
|
| - * Pausing and resuming the returned stream's subscriptions will pause and
|
| - * resume the subscription of the current stream being listened to.
|
| - *
|
| - * Note: Events from pre-existing broadcast streams which occur before
|
| - * the stream is reached by the iteration will be dropped.
|
| - *
|
| - * Example:
|
| - *
|
| - * concat(files.map((file) =>
|
| - * file.openRead().transform(const LineSplitter())))
|
| - *
|
| - */
|
| -Stream concat(Iterable<Stream> streams) => new _ConcatStream(streams);
|
| -
|
| -class _ConcatStream extends Stream {
|
| - final Iterable<Stream> _streams;
|
| -
|
| - _ConcatStream(Iterable<Stream> streams) : _streams = streams;
|
| -
|
| - StreamSubscription listen(void onData(var data),
|
| - {Function onError, void onDone(), bool cancelOnError}) {
|
| - cancelOnError = true == cancelOnError;
|
| - StreamSubscription currentSubscription;
|
| - StreamController controller;
|
| - Iterator iterator = _streams.iterator;
|
| -
|
| - void nextStream() {
|
| - bool hasNext;
|
| - try {
|
| - hasNext = iterator.moveNext();
|
| - } catch (e, s) {
|
| - controller
|
| - ..addError(e, s)
|
| - ..close();
|
| - return;
|
| - }
|
| - if (hasNext) {
|
| - currentSubscription = iterator.current.listen(controller.add,
|
| - onError: controller.addError,
|
| - onDone: nextStream,
|
| - cancelOnError: cancelOnError);
|
| - } else {
|
| - controller.close();
|
| - }
|
| - }
|
| -
|
| - controller = new StreamController(onPause: () {
|
| - if (currentSubscription != null) currentSubscription.pause();
|
| - }, onResume: () {
|
| - if (currentSubscription != null) currentSubscription.resume();
|
| - }, onCancel: () {
|
| - if (currentSubscription != null) return currentSubscription.cancel();
|
| - });
|
| -
|
| - nextStream();
|
| -
|
| - return controller.stream.listen(onData,
|
| - onError: onError, onDone: onDone, cancelOnError: cancelOnError);
|
| - }
|
| -}
|
|
|