| OLD | NEW |
| 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 // Global constants. | 7 // Global constants. |
| 8 class _Const { | 8 class _Const { |
| 9 // Bytes for "HTTP". | 9 // Bytes for "HTTP". |
| 10 static const HTTP = const [72, 84, 84, 80]; | 10 static const HTTP = const [72, 84, 84, 80]; |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 657 case _State.BODY: | 657 case _State.BODY: |
| 658 // The body is not handled one byte at a time but in blocks. | 658 // The body is not handled one byte at a time but in blocks. |
| 659 _index--; | 659 _index--; |
| 660 int dataAvailable = _buffer.length - _index; | 660 int dataAvailable = _buffer.length - _index; |
| 661 List<int> data; | 661 List<int> data; |
| 662 if (_remainingContent == -1 || | 662 if (_remainingContent == -1 || |
| 663 dataAvailable <= _remainingContent) { | 663 dataAvailable <= _remainingContent) { |
| 664 if (_index == 0) { | 664 if (_index == 0) { |
| 665 data = _buffer; | 665 data = _buffer; |
| 666 } else { | 666 } else { |
| 667 data = new Uint8List(dataAvailable); | 667 data = new Uint8List.view(_buffer.buffer, |
| 668 data.setRange(0, dataAvailable, _buffer, _index); | 668 _index, |
| 669 dataAvailable); |
| 669 } | 670 } |
| 670 } else { | 671 } else { |
| 671 data = new Uint8List(_remainingContent); | 672 data = new Uint8List.view(_buffer.buffer, |
| 672 data.setRange(0, _remainingContent, _buffer, _index); | 673 _index, |
| 674 _remainingContent); |
| 673 } | 675 } |
| 674 _bodyController.add(data); | 676 _bodyController.add(data); |
| 675 if (_remainingContent != -1) { | 677 if (_remainingContent != -1) { |
| 676 _remainingContent -= data.length; | 678 _remainingContent -= data.length; |
| 677 } | 679 } |
| 678 _index += data.length; | 680 _index += data.length; |
| 679 if (_remainingContent == 0) { | 681 if (_remainingContent == 0) { |
| 680 if (!_chunked) { | 682 if (!_chunked) { |
| 681 _reset(); | 683 _reset(); |
| 682 _closeIncoming(); | 684 _closeIncoming(); |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 948 if (_socketSubscription != null) _socketSubscription.cancel(); | 950 if (_socketSubscription != null) _socketSubscription.cancel(); |
| 949 _state = _State.FAILURE; | 951 _state = _State.FAILURE; |
| 950 _controller.addError(error, stackTrace); | 952 _controller.addError(error, stackTrace); |
| 951 _controller.close(); | 953 _controller.close(); |
| 952 } | 954 } |
| 953 | 955 |
| 954 // State. | 956 // State. |
| 955 bool _parserCalled = false; | 957 bool _parserCalled = false; |
| 956 | 958 |
| 957 // The data that is currently being parsed. | 959 // The data that is currently being parsed. |
| 958 List<int> _buffer; | 960 Uint8List _buffer; |
| 959 int _index; | 961 int _index; |
| 960 | 962 |
| 961 final bool _requestParser; | 963 final bool _requestParser; |
| 962 int _state; | 964 int _state; |
| 963 int _httpVersionIndex; | 965 int _httpVersionIndex; |
| 964 int _messageType; | 966 int _messageType; |
| 965 int _statusCode = 0; | 967 int _statusCode = 0; |
| 966 List _method_or_status_code; | 968 List _method_or_status_code; |
| 967 List _uri_or_reason_phrase; | 969 List _uri_or_reason_phrase; |
| 968 List _headerField; | 970 List _headerField; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 981 _HttpHeaders _headers; | 983 _HttpHeaders _headers; |
| 982 | 984 |
| 983 // The current incoming connection. | 985 // The current incoming connection. |
| 984 _HttpIncoming _incoming; | 986 _HttpIncoming _incoming; |
| 985 StreamSubscription _socketSubscription; | 987 StreamSubscription _socketSubscription; |
| 986 bool _paused = true; | 988 bool _paused = true; |
| 987 bool _bodyPaused = false; | 989 bool _bodyPaused = false; |
| 988 StreamController<_HttpIncoming> _controller; | 990 StreamController<_HttpIncoming> _controller; |
| 989 StreamController<List<int>> _bodyController; | 991 StreamController<List<int>> _bodyController; |
| 990 } | 992 } |
| OLD | NEW |