Index: pkg/http_server/lib/src/http_body_impl.dart |
diff --git a/pkg/http_server/lib/src/http_body_impl.dart b/pkg/http_server/lib/src/http_body_impl.dart |
index f3ffa9e7252d7d7a2c1d8c826e5ab7e2cdcb0566..3c4a5fae66b79622be6cee22eacdf4b5bb230d7d 100644 |
--- a/pkg/http_server/lib/src/http_body_impl.dart |
+++ b/pkg/http_server/lib/src/http_body_impl.dart |
@@ -5,14 +5,33 @@ |
part of http_server; |
class _HttpBodyHandlerTransformer |
- extends StreamEventTransformer<HttpRequest, HttpRequestBody> { |
+ implements StreamTransformer<HttpRequest, HttpRequestBody> { |
final Encoding _defaultEncoding; |
- _HttpBodyHandlerTransformer(this._defaultEncoding); |
- void handleData(HttpRequest request, EventSink<HttpRequestBody> sink) { |
+ const _HttpBodyHandlerTransformer(this._defaultEncoding); |
+ |
+ Stream<HttpRequestBody> bind(Stream<HttpRequest> stream) { |
+ return new Stream<HttpRequestBody>.eventTransformed( |
+ stream, |
+ (EventSink<HttpRequestBody> sink) => |
+ new _HttpBodyHandlerTransformerSink(_defaultEncoding, sink)); |
+ } |
+} |
+ |
+class _HttpBodyHandlerTransformerSink implements EventSink<HttpRequest> { |
+ final Encoding _defaultEncoding; |
+ final EventSink<HttpRequestBody> _outSink; |
+ |
+ _HttpBodyHandlerTransformerSink(this._defaultEncoding, this._outSink); |
+ |
+ void add(HttpRequest request) { |
_HttpBodyHandler.processRequest(request, _defaultEncoding) |
- .then(sink.add, onError: sink.addError); |
+ .then(_outSink.add, onError: _outSink.addError); |
+ } |
+ void addError(Object error, [StackTrace stackTrace]) { |
+ _outSink.addError(error, stackTrace); |
} |
+ void close() => _outSink.close(); |
} |
class _HttpBodyHandler { |