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

Side by Side Diff: sdk/lib/io/http_impl.dart

Issue 14251006: Remove AsyncError with Expando. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/io/file_impl.dart ('k') | sdk/lib/io/http_parser.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.io; 5 part of dart.io;
6 6
7 class _HttpIncoming extends Stream<List<int>> { 7 class _HttpIncoming extends Stream<List<int>> {
8 final int _transferLength; 8 final int _transferLength;
9 final Completer _dataCompleter = new Completer(); 9 final Completer _dataCompleter = new Completer();
10 Stream<List<int>> _stream; 10 Stream<List<int>> _stream;
(...skipping 17 matching lines...) Expand all
28 // the length of the massage body is not known due to transfer 28 // the length of the massage body is not known due to transfer
29 // codings. 29 // codings.
30 int get transferLength => _transferLength; 30 int get transferLength => _transferLength;
31 31
32 _HttpIncoming(_HttpHeaders this.headers, 32 _HttpIncoming(_HttpHeaders this.headers,
33 int this._transferLength, 33 int this._transferLength,
34 Stream<List<int>> this._stream) { 34 Stream<List<int>> this._stream) {
35 } 35 }
36 36
37 StreamSubscription<List<int>> listen(void onData(List<int> event), 37 StreamSubscription<List<int>> listen(void onData(List<int> event),
38 {void onError(AsyncError error), 38 {void onError(error),
39 void onDone(), 39 void onDone(),
40 bool cancelOnError}) { 40 bool cancelOnError}) {
41 return _stream.listen(onData, 41 return _stream.listen(onData,
42 onError: onError, 42 onError: onError,
43 onDone: onDone, 43 onDone: onDone,
44 cancelOnError: cancelOnError); 44 cancelOnError: cancelOnError);
45 } 45 }
46 46
47 // Is completed once all data have been received. 47 // Is completed once all data have been received.
48 Future get dataDone => _dataCompleter.future; 48 Future get dataDone => _dataCompleter.future;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 _session = _httpServer._sessionManager.getSession(sessionId); 99 _session = _httpServer._sessionManager.getSession(sessionId);
100 if (_session != null) { 100 if (_session != null) {
101 _session._markSeen(); 101 _session._markSeen();
102 break; 102 break;
103 } 103 }
104 } 104 }
105 } 105 }
106 } 106 }
107 107
108 StreamSubscription<List<int>> listen(void onData(List<int> event), 108 StreamSubscription<List<int>> listen(void onData(List<int> event),
109 {void onError(AsyncError error), 109 {void onError(error),
110 void onDone(), 110 void onDone(),
111 bool cancelOnError}) { 111 bool cancelOnError}) {
112 return _incoming.listen(onData, 112 return _incoming.listen(onData,
113 onError: onError, 113 onError: onError,
114 onDone: onDone, 114 onDone: onDone,
115 cancelOnError: cancelOnError); 115 cancelOnError: cancelOnError);
116 } 116 }
117 117
118 Map<String, String> get queryParameters { 118 Map<String, String> get queryParameters {
119 if (_queryParameters == null) { 119 if (_queryParameters == null) {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 .then((request) { 224 .then((request) {
225 request._responseRedirects.addAll(this.redirects); 225 request._responseRedirects.addAll(this.redirects);
226 request._responseRedirects.add(new _RedirectInfo(statusCode, 226 request._responseRedirects.add(new _RedirectInfo(statusCode,
227 method, 227 method,
228 url)); 228 url));
229 return request.close(); 229 return request.close();
230 }); 230 });
231 } 231 }
232 232
233 StreamSubscription<List<int>> listen(void onData(List<int> event), 233 StreamSubscription<List<int>> listen(void onData(List<int> event),
234 {void onError(AsyncError error), 234 {void onError(error),
235 void onDone(), 235 void onDone(),
236 bool cancelOnError}) { 236 bool cancelOnError}) {
237 var stream = _incoming; 237 var stream = _incoming;
238 if (headers.value(HttpHeaders.CONTENT_ENCODING) == "gzip") { 238 if (headers.value(HttpHeaders.CONTENT_ENCODING) == "gzip") {
239 stream = stream.transform(new ZLibInflater()); 239 stream = stream.transform(new ZLibInflater());
240 } 240 }
241 return stream.listen(onData, 241 return stream.listen(onData,
242 onError: onError, 242 onError: onError,
243 onDone: onDone, 243 onDone: onDone,
244 cancelOnError: cancelOnError); 244 cancelOnError: cancelOnError);
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 435
436 void writeCharCode(int charCode) { 436 void writeCharCode(int charCode) {
437 _dataSink.writeCharCode(charCode); 437 _dataSink.writeCharCode(charCode);
438 } 438 }
439 439
440 void add(List<int> data) { 440 void add(List<int> data) {
441 if (data.length == 0) return; 441 if (data.length == 0) return;
442 _dataSink.add(data); 442 _dataSink.add(data);
443 } 443 }
444 444
445 void addError(AsyncError error) { 445 void addError(error) {
446 _dataSink.addError(error); 446 _dataSink.addError(error);
447 } 447 }
448 448
449 Future<T> addStream(Stream<List<int>> stream) { 449 Future<T> addStream(Stream<List<int>> stream) {
450 return _dataSink.addStream(stream); 450 return _dataSink.addStream(stream);
451 } 451 }
452 452
453 Future close() { 453 Future close() {
454 return _dataSink.close(); 454 return _dataSink.close();
455 } 455 }
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 } else { 872 } else {
873 future = new Future<HttpClientResponse>.immediate(response); 873 future = new Future<HttpClientResponse>.immediate(response);
874 } 874 }
875 future.then( 875 future.then(
876 (v) => _responseCompleter.complete(v), 876 (v) => _responseCompleter.complete(v),
877 onError: (e) { 877 onError: (e) {
878 _responseCompleter.completeError(e); 878 _responseCompleter.completeError(e);
879 }); 879 });
880 } 880 }
881 881
882 void _onError(AsyncError error) { 882 void _onError(error) {
883 _responseCompleter.completeError(error); 883 _responseCompleter.completeError(error);
884 } 884 }
885 885
886 void _writeHeader() { 886 void _writeHeader() {
887 var buffer = new _BufferList(); 887 var buffer = new _BufferList();
888 writeSP() => buffer.add(const [_CharCode.SP]); 888 writeSP() => buffer.add(const [_CharCode.SP]);
889 writeCRLF() => buffer.add(const [_CharCode.CR, _CharCode.LF]); 889 writeCRLF() => buffer.add(const [_CharCode.CR, _CharCode.LF]);
890 890
891 buffer.add(method.codeUnits); 891 buffer.add(method.codeUnits);
892 writeSP(); 892 writeSP();
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 class _ContentLengthValidator 971 class _ContentLengthValidator
972 extends StreamEventTransformer<List<int>, List<int>> { 972 extends StreamEventTransformer<List<int>, List<int>> {
973 final int expectedContentLength; 973 final int expectedContentLength;
974 int _bytesWritten = 0; 974 int _bytesWritten = 0;
975 975
976 _ContentLengthValidator(int this.expectedContentLength); 976 _ContentLengthValidator(int this.expectedContentLength);
977 977
978 void handleData(List<int> data, EventSink<List<int>> sink) { 978 void handleData(List<int> data, EventSink<List<int>> sink) {
979 _bytesWritten += data.length; 979 _bytesWritten += data.length;
980 if (_bytesWritten > expectedContentLength) { 980 if (_bytesWritten > expectedContentLength) {
981 sink.addError(new AsyncError(new HttpException( 981 sink.addError(new HttpException(
982 "Content size exceeds specified contentLength. " 982 "Content size exceeds specified contentLength. "
983 "$_bytesWritten bytes written while expected " 983 "$_bytesWritten bytes written while expected "
984 "$expectedContentLength. " 984 "$expectedContentLength. "
985 "[${new String.fromCharCodes(data)}]"))); 985 "[${new String.fromCharCodes(data)}]"));
986 sink.close(); 986 sink.close();
987 } else { 987 } else {
988 sink.add(data); 988 sink.add(data);
989 } 989 }
990 } 990 }
991 991
992 void handleDone(EventSink<List<int>> sink) { 992 void handleDone(EventSink<List<int>> sink) {
993 if (_bytesWritten < expectedContentLength) { 993 if (_bytesWritten < expectedContentLength) {
994 sink.addError(new AsyncError(new HttpException( 994 sink.addError(new HttpException(
995 "Content size below specified contentLength. " 995 "Content size below specified contentLength. "
996 " $_bytesWritten bytes written while expected " 996 " $_bytesWritten bytes written while expected "
997 "$expectedContentLength."))); 997 "$expectedContentLength."));
998 } 998 }
999 sink.close(); 999 sink.close();
1000 } 1000 }
1001 } 1001 }
1002 1002
1003 1003
1004 // Extends StreamConsumer as this is an internal type, only used to pipe to. 1004 // Extends StreamConsumer as this is an internal type, only used to pipe to.
1005 class _HttpOutgoing implements StreamConsumer<List<int>> { 1005 class _HttpOutgoing implements StreamConsumer<List<int>> {
1006 final Completer _doneCompleter = new Completer(); 1006 final Completer _doneCompleter = new Completer();
1007 final StreamConsumer _consumer; 1007 final StreamConsumer _consumer;
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
1379 port, 1379 port,
1380 sendClientCertificate: true) 1380 sendClientCertificate: true)
1381 : Socket.connect(host, port)) 1381 : Socket.connect(host, port))
1382 .then((socket) { 1382 .then((socket) {
1383 socket.setOption(SocketOption.TCP_NODELAY, true); 1383 socket.setOption(SocketOption.TCP_NODELAY, true);
1384 var connection = new _HttpClientConnection(key, socket, this); 1384 var connection = new _HttpClientConnection(key, socket, this);
1385 _activeConnections.add(connection); 1385 _activeConnections.add(connection);
1386 return new _ConnnectionInfo(connection, proxy); 1386 return new _ConnnectionInfo(connection, proxy);
1387 }, onError: (error) { 1387 }, onError: (error) {
1388 // Continue with next proxy. 1388 // Continue with next proxy.
1389 return connect(error.error); 1389 return connect(error);
1390 }); 1390 });
1391 } 1391 }
1392 return connect(new HttpException("No proxies given")); 1392 return connect(new HttpException("No proxies given"));
1393 } 1393 }
1394 1394
1395 _Credentials _findCredentials(Uri url, [_AuthenticationScheme scheme]) { 1395 _Credentials _findCredentials(Uri url, [_AuthenticationScheme scheme]) {
1396 // Look for credentials. 1396 // Look for credentials.
1397 _Credentials cr = 1397 _Credentials cr =
1398 _credentials.fold(null, (_Credentials prev, _Credentials value) { 1398 _credentials.fold(null, (_Credentials prev, _Credentials value) {
1399 if (value.applies(url, scheme)) { 1399 if (value.applies(url, scheme)) {
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1587 return new _HttpServer._(socket, true); 1587 return new _HttpServer._(socket, true);
1588 }); 1588 });
1589 } 1589 }
1590 1590
1591 _HttpServer._(this._serverSocket, this._closeServer); 1591 _HttpServer._(this._serverSocket, this._closeServer);
1592 1592
1593 _HttpServer.listenOn(ServerSocket this._serverSocket) 1593 _HttpServer.listenOn(ServerSocket this._serverSocket)
1594 : _closeServer = false; 1594 : _closeServer = false;
1595 1595
1596 StreamSubscription<HttpRequest> listen(void onData(HttpRequest event), 1596 StreamSubscription<HttpRequest> listen(void onData(HttpRequest event),
1597 {void onError(AsyncError error), 1597 {void onError(error),
1598 void onDone(), 1598 void onDone(),
1599 bool cancelOnError}) { 1599 bool cancelOnError}) {
1600 _serverSocket.listen( 1600 _serverSocket.listen(
1601 (Socket socket) { 1601 (Socket socket) {
1602 socket.setOption(SocketOption.TCP_NODELAY, true); 1602 socket.setOption(SocketOption.TCP_NODELAY, true);
1603 // Accept the client connection. 1603 // Accept the client connection.
1604 _HttpConnection connection = new _HttpConnection(socket, this); 1604 _HttpConnection connection = new _HttpConnection(socket, this);
1605 _connections.add(connection); 1605 _connections.add(connection);
1606 }, 1606 },
1607 onError: _controller.addError, 1607 onError: _controller.addError,
(...skipping 25 matching lines...) Expand all
1633 } 1633 }
1634 1634
1635 set sessionTimeout(int timeout) { 1635 set sessionTimeout(int timeout) {
1636 _sessionManager.sessionTimeout = timeout; 1636 _sessionManager.sessionTimeout = timeout;
1637 } 1637 }
1638 1638
1639 void _handleRequest(HttpRequest request) { 1639 void _handleRequest(HttpRequest request) {
1640 _controller.add(request); 1640 _controller.add(request);
1641 } 1641 }
1642 1642
1643 void _handleError(AsyncError error) { 1643 void _handleError(error) {
1644 if (!closed) _controller.addError(error); 1644 if (!closed) _controller.addError(error);
1645 } 1645 }
1646 1646
1647 void _connectionClosed(_HttpConnection connection) { 1647 void _connectionClosed(_HttpConnection connection) {
1648 _connections.remove(connection); 1648 _connections.remove(connection);
1649 } 1649 }
1650 1650
1651 _HttpSessionManager get _sessionManager { 1651 _HttpSessionManager get _sessionManager {
1652 // Lazy init. 1652 // Lazy init.
1653 if (_sessionManagerInstance == null) { 1653 if (_sessionManagerInstance == null) {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1790 } 1790 }
1791 1791
1792 1792
1793 class _DetachedSocket extends Stream<List<int>> implements Socket { 1793 class _DetachedSocket extends Stream<List<int>> implements Socket {
1794 final Stream<List<int>> _incoming; 1794 final Stream<List<int>> _incoming;
1795 final Socket _socket; 1795 final Socket _socket;
1796 1796
1797 _DetachedSocket(this._socket, this._incoming); 1797 _DetachedSocket(this._socket, this._incoming);
1798 1798
1799 StreamSubscription<List<int>> listen(void onData(List<int> event), 1799 StreamSubscription<List<int>> listen(void onData(List<int> event),
1800 {void onError(AsyncError error), 1800 {void onError(error),
1801 void onDone(), 1801 void onDone(),
1802 bool cancelOnError}) { 1802 bool cancelOnError}) {
1803 return _incoming.listen(onData, 1803 return _incoming.listen(onData,
1804 onError: onError, 1804 onError: onError,
1805 onDone: onDone, 1805 onDone: onDone,
1806 cancelOnError: cancelOnError); 1806 cancelOnError: cancelOnError);
1807 } 1807 }
1808 1808
1809 Encoding get encoding => _socket.encoding; 1809 Encoding get encoding => _socket.encoding;
1810 1810
1811 void set encoding(Encoding value) { 1811 void set encoding(Encoding value) {
1812 _socket.encoding = value; 1812 _socket.encoding = value;
1813 } 1813 }
1814 1814
1815 void write(Object obj) => _socket.write(obj); 1815 void write(Object obj) => _socket.write(obj);
1816 1816
1817 void writeln([Object obj = ""]) => _socket.writeln(obj); 1817 void writeln([Object obj = ""]) => _socket.writeln(obj);
1818 1818
1819 void writeCharCode(int charCode) => _socket.writeCharCode(charCode); 1819 void writeCharCode(int charCode) => _socket.writeCharCode(charCode);
1820 1820
1821 void writeAll(Iterable objects, [String separator = ""]) { 1821 void writeAll(Iterable objects, [String separator = ""]) {
1822 _socket.writeAll(objects, separator); 1822 _socket.writeAll(objects, separator);
1823 } 1823 }
1824 1824
1825 void add(List<int> bytes) => _socket.add(bytes); 1825 void add(List<int> bytes) => _socket.add(bytes);
1826 1826
1827 void addError(AsyncError error) => _socket.addError(error); 1827 void addError(error) => _socket.addError(error);
1828 1828
1829 Future<Socket> addStream(Stream<List<int>> stream) { 1829 Future<Socket> addStream(Stream<List<int>> stream) {
1830 return _socket.addStream(stream); 1830 return _socket.addStream(stream);
1831 } 1831 }
1832 1832
1833 void destroy() => _socket.destroy(); 1833 void destroy() => _socket.destroy();
1834 1834
1835 Future close() => _socket.close(); 1835 Future close() => _socket.close();
1836 1836
1837 Future<Socket> get done => _socket.done; 1837 Future<Socket> get done => _socket.done;
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1988 1988
1989 1989
1990 class _RedirectInfo implements RedirectInfo { 1990 class _RedirectInfo implements RedirectInfo {
1991 const _RedirectInfo(int this.statusCode, 1991 const _RedirectInfo(int this.statusCode,
1992 String this.method, 1992 String this.method,
1993 Uri this.location); 1993 Uri this.location);
1994 final int statusCode; 1994 final int statusCode;
1995 final String method; 1995 final String method;
1996 final Uri location; 1996 final Uri location;
1997 } 1997 }
OLDNEW
« no previous file with comments | « sdk/lib/io/file_impl.dart ('k') | sdk/lib/io/http_parser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698