| Index: sdk/lib/convert/chunked_conversion.dart
|
| diff --git a/sdk/lib/convert/chunked_conversion.dart b/sdk/lib/convert/chunked_conversion.dart
|
| index 67c017bdccdbb7e8c110a38d6a8a85ea023f55b8..ad5afc3c45895faa0f4c346c9afe23b76afc69e6 100644
|
| --- a/sdk/lib/convert/chunked_conversion.dart
|
| +++ b/sdk/lib/convert/chunked_conversion.dart
|
| @@ -47,36 +47,13 @@ class _SimpleCallbackSink<T> extends ChunkedConversionSink<T> {
|
| void close() { _callback(_accumulated); }
|
| }
|
|
|
| -/**
|
| - * This class wraps a [Converter] for use as a [StreamTransformer].
|
| - */
|
| -class _ConverterTransformStream<S, T> extends EventTransformStream<S, T> {
|
| - final _ConverterStreamEventTransformer<S, T> _eventTransformer;
|
| -
|
| - _ConverterTransformStream(Stream<S> source, Converter converter)
|
| - : this._withEventTransformer(
|
| - source,
|
| - new _ConverterStreamEventTransformer<S, T>(converter));
|
| +class _EventSinkAdapter<T> implements ChunkedConversionSink<T> {
|
| + final EventSink<T> _sink;
|
|
|
| - _ConverterTransformStream._withEventTransformer(
|
| - Stream<S> source,
|
| - _ConverterStreamEventTransformer<S, T> eventTransformer)
|
| - : _eventTransformer = eventTransformer,
|
| - super(source, eventTransformer);
|
| + _EventSinkAdapter(this._sink);
|
|
|
| - /**
|
| - * Starts listening to `this`.
|
| - *
|
| - * This starts the chunked conversion.
|
| - */
|
| - StreamSubscription<T> listen(void onData(T data),
|
| - { Function onError,
|
| - void onDone(),
|
| - bool cancelOnError }) {
|
| - _eventTransformer._startChunkedConversion();
|
| - return super.listen(onData, onError: onError, onDone: onDone,
|
| - cancelOnError: cancelOnError);
|
| - }
|
| + void add(T data) => _sink.add(data);
|
| + void close() => _sink.close();
|
| }
|
|
|
| /**
|
| @@ -88,12 +65,9 @@ class _ConverterTransformStream<S, T> extends EventTransformStream<S, T> {
|
| * It also implements the [ChunkedConversionSink] interface so that it
|
| * can be used as output sink in a chunked conversion.
|
| */
|
| -class _ConverterStreamEventTransformer<S, T>
|
| - implements ChunkedConversionSink<T>, StreamEventTransformer<S, T> {
|
| - final Converter _converter;
|
| -
|
| - /** At every [handleData] this field is updated with the new event sink. */
|
| - EventSink<T> _eventSink;
|
| +class _ConverterStreamEventSink<S, T> implements EventSink<S> {
|
| + /** The output sink for the converter. */
|
| + final EventSink<T> _eventSink;
|
|
|
| /**
|
| * The input sink for new data. All data that is received with
|
| @@ -101,51 +75,14 @@ class _ConverterStreamEventTransformer<S, T>
|
| */
|
| ChunkedConversionSink _chunkedSink;
|
|
|
| - _ConverterStreamEventTransformer(this._converter);
|
| -
|
| - /**
|
| - * Starts the chunked conversion.
|
| - */
|
| - void _startChunkedConversion() {
|
| - _chunkedSink = _converter.startChunkedConversion(this);
|
| - }
|
| -
|
| - /**
|
| - * Not supported.
|
| - */
|
| - Stream bind(Stream otherStream) {
|
| - throw new UnsupportedError("Converter streams must not call bind");
|
| - }
|
| -
|
| - void add(T o) => _eventSink.add(o);
|
| - void close() => _eventSink.close();
|
| -
|
| - void handleData(S event, EventSink<T> eventSink) {
|
| - _eventSink = eventSink;
|
| - try {
|
| - _chunkedSink.add(event);
|
| - } catch(e) {
|
| - // TODO(floitsch): capture stack trace.
|
| - eventSink.addError(e);
|
| - } finally {
|
| - _eventSink = null;
|
| - }
|
| - }
|
| -
|
| - void handleDone(EventSink<T> eventSink) {
|
| - _eventSink = eventSink;
|
| - try {
|
| - _chunkedSink.close();
|
| - } catch(e) {
|
| - // TODO(floitsch): capture stack trace.
|
| - eventSink.addError(e);
|
| - } finally {
|
| - _eventSink = null;
|
| - }
|
| - }
|
| + _ConverterStreamEventSink(Converter converter, EventSink<T> sink)
|
| + : this._eventSink = sink,
|
| + _chunkedSink =
|
| + converter.startChunkedConversion(new _EventSinkAdapter(sink));
|
|
|
| - void handleError(var errorEvent, EventSink<T> eventSink) {
|
| - // TODO(floitsch): capture stack trace.
|
| - eventSink.addError(errorEvent);
|
| + void add(T o) => _chunkedSink.add(o);
|
| + void addError(Object error, [StackTrace stackTrace]) {
|
| + _eventSink.addError(error, stackTrace);
|
| }
|
| + void close() => _chunkedSink.close();
|
| }
|
|
|