Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Unified Diff: sdk/lib/convert/converter.dart

Issue 19883003: Add chunked conversion to converters. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Improve some typse. Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/convert/converter.dart
diff --git a/sdk/lib/convert/converter.dart b/sdk/lib/convert/converter.dart
index 8e7a6f164f9a5b8aae3319d3b58ca15456a53f8d..43106c6a7d5c8050055b7cce665d63970f48e484 100644
--- a/sdk/lib/convert/converter.dart
+++ b/sdk/lib/convert/converter.dart
@@ -25,6 +25,32 @@ abstract class Converter<S, T> {
Converter<S, dynamic> fuse(Converter<T, dynamic> other) {
return new _FusedConverter<S, T, dynamic>(this, other);
}
+
+ /**
+ * Starts a chunked conversion.
+ *
+ * The returned [ChunkedConversionSink] supports the interface described by
+ * [inputInterface].
+ *
+ * If the given [sink] supports the methods described by
+ * [outputInterface] then the chunked conversion can take advantage of
+ * the additional methods and provide a more efficient conversion.
+ *
+ * If [sink] does not support the [outputInterface] it is adapted. If
+ * necessary, the adapter buffers all chunks and invokes
+ * `addNonChunked` on [sink].
+ */
+ ChunkedConversionSink<S, dynamic> startChunkedConversion(
Søren Gjesse 2013/07/24 09:26:41 How about just calling this something shorter? May
floitsch 2013/07/24 18:31:15 I'm torn... Will discuss with others to get a feel
+ ChunkedConversionSink sink) {
+ return new _NonChunkedSink<S, T>(this, sink.adaptTo(outputInterface));
+ }
+
+ /** Defines the accepted input interface for chunked conversions. */
+ ChunkedConversionInterface get inputInterface =>
+ ChunkedConversionSink.INTERFACE;
+ /** Defines the accepted output interface for chunked conversions. */
+ ChunkedConversionInterface get outputInterface =>
+ ChunkedConversionSink.INTERFACE;
}
/**
@@ -39,4 +65,12 @@ class _FusedConverter<S, M, T> extends Converter<S, T> {
_FusedConverter(this._first, this._second);
T convert(S input) => _second.convert(_first.convert(input));
+
+ ChunkedConversionSink<S, dynamic> startChunkedConversion(
+ ChunkedConversionSink sink) {
+ return _first.startChunkedConversion(_second.startChunkedConversion(sink));
+ }
+
+ ChunkedConversionInterface get inputInterface => _first.inputInterface;
+ ChunkedConversionInterface get outputInterface => _second.outputInterface;
}

Powered by Google App Engine
This is Rietveld 408576698