| Index: sdk/lib/io/http_impl.dart
|
| diff --git a/sdk/lib/io/http_impl.dart b/sdk/lib/io/http_impl.dart
|
| index 96005c9586f3fdf5e5947ad1144ef0f344a148ce..dff98f04f64c30e13a008bc1de37d282f7082a16 100644
|
| --- a/sdk/lib/io/http_impl.dart
|
| +++ b/sdk/lib/io/http_impl.dart
|
| @@ -6,8 +6,6 @@ part of dart.io;
|
|
|
| const int _OUTGOING_BUFFER_SIZE = 8 * 1024;
|
|
|
| -typedef void _BytesConsumer(List<int> bytes);
|
| -
|
| class _HttpIncoming extends Stream<List<int>> {
|
| final int _transferLength;
|
| final Completer _dataCompleter = new Completer();
|
| @@ -268,7 +266,7 @@ class _HttpClientResponse
|
| // Since listening to upgraded data is 'bogus', simply close and
|
| // return empty stream subscription.
|
| _httpRequest._httpClientConnection.destroy();
|
| - return new Stream<List<int>>.empty().listen(null, onDone: onDone);
|
| + return new Stream.fromIterable([]).listen(null, onDone: onDone);
|
| }
|
| var stream = _incoming;
|
| if (_httpClient.autoUncompress &&
|
| @@ -763,16 +761,13 @@ class _HttpClientRequest extends _HttpOutboundMessage<HttpClientResponse>
|
| if (followRedirects && response.isRedirect) {
|
| if (response.redirects.length < maxRedirects) {
|
| // Redirect and drain response.
|
| - future = response.drain()
|
| - .then/*<HttpClientResponse>*/((_) => response.redirect());
|
| + future = response.drain().then((_) => response.redirect());
|
| } else {
|
| // End with exception, too many redirects.
|
| future = response.drain()
|
| - .then/*<HttpClientResponse>*/((_) {
|
| - return new Future<HttpClientResponse>.error(
|
| - new RedirectException("Redirect limit exceeded",
|
| - response.redirects));
|
| - });
|
| + .then((_) => new Future.error(
|
| + new RedirectException("Redirect limit exceeded",
|
| + response.redirects)));
|
| }
|
| } else if (response._shouldAuthenticateProxy) {
|
| future = response._authenticate(true);
|
| @@ -866,7 +861,7 @@ class _HttpClientRequest extends _HttpOutboundMessage<HttpClientResponse>
|
| // Used by _HttpOutgoing as a target of a chunked converter for gzip
|
| // compression.
|
| class _HttpGZipSink extends ByteConversionSink {
|
| - final _BytesConsumer _consume;
|
| + final Function _consume;
|
| _HttpGZipSink(this._consume);
|
|
|
| void add(List<int> chunk) {
|
| @@ -901,7 +896,7 @@ class _HttpOutgoing implements StreamConsumer<List<int>> {
|
| static const List<int> _chunk0Length =
|
| const [0x30, _CharCode.CR, _CharCode.LF, _CharCode.CR, _CharCode.LF];
|
|
|
| - final Completer<Socket> _doneCompleter = new Completer<Socket>();
|
| + final Completer _doneCompleter = new Completer();
|
| final Socket socket;
|
|
|
| bool ignoreBody = false;
|
| @@ -922,7 +917,7 @@ class _HttpOutgoing implements StreamConsumer<List<int>> {
|
| ByteConversionSink _gzipSink;
|
| // _gzipAdd is set iff the sink is being added to. It's used to specify where
|
| // gzipped data should be taken (sometimes a controller, sometimes a socket).
|
| - _BytesConsumer _gzipAdd;
|
| + Function _gzipAdd;
|
| Uint8List _gzipBuffer;
|
| int _gzipBufferLength = 0;
|
|
|
| @@ -1007,16 +1002,16 @@ class _HttpOutgoing implements StreamConsumer<List<int>> {
|
| }
|
| return close();
|
| }
|
| - StreamSubscription<List<int>> sub;
|
| + var sub;
|
| // Use new stream so we are able to pause (see below listen). The
|
| // alternative is to use stream.extand, but that won't give us a way of
|
| // pausing.
|
| - var controller = new StreamController<List<int>>(
|
| + var controller = new StreamController(
|
| onPause: () => sub.pause(),
|
| onResume: () => sub.resume(),
|
| sync: true);
|
|
|
| - void onData(List<int> data) {
|
| + void onData(data) {
|
| if (_socketError) return;
|
| if (data.length == 0) return;
|
| if (chunked) {
|
| @@ -1156,7 +1151,7 @@ class _HttpOutgoing implements StreamConsumer<List<int>> {
|
| return _closeFuture = finalize();
|
| }
|
|
|
| - Future<Socket> get done => _doneCompleter.future;
|
| + Future get done => _doneCompleter.future;
|
|
|
| void setHeader(List<int> data, int length) {
|
| assert(_length == 0);
|
| @@ -1186,7 +1181,7 @@ class _HttpOutgoing implements StreamConsumer<List<int>> {
|
| => (error is SocketException || error is TlsException) &&
|
| outbound is HttpResponse;
|
|
|
| - void _addGZipChunk(List<int> chunk, void add(List<int> data)) {
|
| + void _addGZipChunk(chunk, void add(List<int> data)) {
|
| if (!outbound.bufferOutput) {
|
| add(chunk);
|
| return;
|
| @@ -1207,7 +1202,7 @@ class _HttpOutgoing implements StreamConsumer<List<int>> {
|
| }
|
| }
|
|
|
| - void _addChunk(List<int> chunk, void add(List<int> data)) {
|
| + void _addChunk(chunk, void add(List<int> data)) {
|
| if (!outbound.bufferOutput) {
|
| if (_buffer != null) {
|
| // If _buffer is not null, we have not written the header yet. Write
|
| @@ -1276,7 +1271,7 @@ class _HttpClientConnection {
|
| Uri _currentUri;
|
|
|
| Completer<_HttpIncoming> _nextResponseCompleter;
|
| - Future<Socket> _streamFuture;
|
| + Future _streamFuture;
|
|
|
| _HttpClientConnection(this.key, this._socket, this._httpClient,
|
| [this._proxyTunnel = false, this._context])
|
| @@ -1391,7 +1386,7 @@ class _HttpClientConnection {
|
| // data).
|
| _httpParser.isHead = method == "HEAD";
|
| _streamFuture = outgoing.done
|
| - .then/*<Socket>*/((Socket s) {
|
| + .then((s) {
|
| // Request sent, set up response completer.
|
| _nextResponseCompleter = new Completer();
|
|
|
| @@ -1486,8 +1481,7 @@ class _HttpClientConnection {
|
| .then((_) => _socket.destroy());
|
| }
|
|
|
| - Future<_HttpClientConnection> createProxyTunnel(String host, int port,
|
| - _Proxy proxy, bool callback(X509Certificate certificate)) {
|
| + Future<_HttpClientConnection> createProxyTunnel(host, port, proxy, callback) {
|
| _HttpClientRequest request =
|
| send(new Uri(host: host, port: port),
|
| port,
|
| @@ -1633,9 +1627,10 @@ class _ConnectionTarget {
|
| }
|
| if (client.maxConnectionsPerHost != null &&
|
| _active.length + _connecting >= client.maxConnectionsPerHost) {
|
| - var completer = new Completer<_ConnectionInfo>();
|
| + var completer = new Completer();
|
| _pending.add(() {
|
| - completer.complete(connect(uriHost, uriPort, proxy, client));
|
| + connect(uriHost, uriPort, proxy, client)
|
| + .then(completer.complete, onError: completer.completeError);
|
| });
|
| return completer.future;
|
| }
|
| @@ -1951,8 +1946,7 @@ class _HttpClient implements HttpClient {
|
| // connection from the pool. For long-running synchronous code the
|
| // server might have closed the connection, so this lowers the
|
| // probability of getting a connection that was already closed.
|
| - return new Future<_ConnectionInfo>(
|
| - () => connect(new HttpException("No proxies given")));
|
| + return new Future(() => connect(new HttpException("No proxies given")));
|
| }
|
|
|
| _SiteCredentials _findCredentials(Uri url, [_AuthenticationScheme scheme]) {
|
| @@ -2080,7 +2074,7 @@ class _HttpConnection
|
| static Map<int, _HttpConnection> _connections =
|
| new HashMap<int, _HttpConnection>();
|
|
|
| - final /*_ServerSocket*/ _socket;
|
| + final _socket;
|
| final _HttpServer _httpServer;
|
| final _HttpParser _httpParser;
|
| int _state = _IDLE;
|
| @@ -2092,7 +2086,7 @@ class _HttpConnection
|
| : _httpParser = new _HttpParser.requestParser() {
|
| try { _socket._owner = this; } catch (_) { print(_); }
|
| _connections[_serviceId] = this;
|
| - _httpParser.listenToStream(_socket as Object/*=Socket*/);
|
| + _httpParser.listenToStream(_socket);
|
| _subscription = _httpParser.listen(
|
| (incoming) {
|
| _httpServer._markActive(this);
|
| @@ -2468,7 +2462,7 @@ class _HttpServer
|
|
|
| // The server listen socket. Untyped as it can be both ServerSocket and
|
| // SecureServerSocket.
|
| - final dynamic/*ServerSocket|SecureServerSocket*/ _serverSocket;
|
| + final _serverSocket;
|
| final bool _closeServer;
|
|
|
| // Set of currently connected clients.
|
| @@ -2583,7 +2577,7 @@ class _HttpConnectionInfo implements HttpConnectionInfo {
|
|
|
| class _DetachedSocket extends Stream<List<int>> implements Socket {
|
| final Stream<List<int>> _incoming;
|
| - final Socket _socket;
|
| + final _socket;
|
|
|
| _DetachedSocket(this._socket, this._incoming);
|
|
|
| @@ -2618,7 +2612,7 @@ class _DetachedSocket extends Stream<List<int>> implements Socket {
|
| void addError(error, [StackTrace stackTrace]) =>
|
| _socket.addError(error, stackTrace);
|
|
|
| - Future addStream(Stream<List<int>> stream) {
|
| + Future<Socket> addStream(Stream<List<int>> stream) {
|
| return _socket.addStream(stream);
|
| }
|
|
|
| @@ -2626,7 +2620,7 @@ class _DetachedSocket extends Stream<List<int>> implements Socket {
|
|
|
| Future flush() => _socket.flush();
|
|
|
| - Future<Socket> close() => _socket.close();
|
| + Future close() => _socket.close();
|
|
|
| Future<Socket> get done => _socket.done;
|
|
|
| @@ -2642,12 +2636,8 @@ class _DetachedSocket extends Stream<List<int>> implements Socket {
|
| return _socket.setOption(option, enabled);
|
| }
|
|
|
| - Map _toJSON(bool ref) {
|
| - return (_socket as dynamic)._toJSON(ref);
|
| - }
|
| - void set _owner(owner) {
|
| - (_socket as dynamic)._owner = owner;
|
| - }
|
| + Map _toJSON(bool ref) => _socket._toJSON(ref);
|
| + void set _owner(owner) { _socket._owner = owner; }
|
| }
|
|
|
|
|
|
|