| 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 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 break; | 747 break; |
| 748 | 748 |
| 749 case _State.BODY: | 749 case _State.BODY: |
| 750 // The body is not handled one byte at a time but in blocks. | 750 // The body is not handled one byte at a time but in blocks. |
| 751 _index--; | 751 _index--; |
| 752 int dataAvailable = _buffer.length - _index; | 752 int dataAvailable = _buffer.length - _index; |
| 753 if (_remainingContent >= 0 && dataAvailable > _remainingContent) { | 753 if (_remainingContent >= 0 && dataAvailable > _remainingContent) { |
| 754 dataAvailable = _remainingContent; | 754 dataAvailable = _remainingContent; |
| 755 } | 755 } |
| 756 // Always present the data as a view. This way we can handle all | 756 // Always present the data as a view. This way we can handle all |
| 757 // cases like this, and the user will not experince different data | 757 // cases like this, and the user will not experience different data |
| 758 // typed (which could lead to polymorphic user code). | 758 // typed (which could lead to polymorphic user code). |
| 759 List<int> data = new Uint8List.view( | 759 List<int> data = new Uint8List.view( |
| 760 _buffer.buffer, _buffer.offsetInBytes + _index, dataAvailable); | 760 _buffer.buffer, _buffer.offsetInBytes + _index, dataAvailable); |
| 761 _bodyController.add(data); | 761 _bodyController.add(data); |
| 762 if (_remainingContent != -1) { | 762 if (_remainingContent != -1) { |
| 763 _remainingContent -= data.length; | 763 _remainingContent -= data.length; |
| 764 } | 764 } |
| 765 _index += data.length; | 765 _index += data.length; |
| 766 if (_remainingContent == 0) { | 766 if (_remainingContent == 0) { |
| 767 if (!_chunked) { | 767 if (!_chunked) { |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1047 } | 1047 } |
| 1048 } | 1048 } |
| 1049 | 1049 |
| 1050 void _reportError(error, [stackTrace]) { | 1050 void _reportError(error, [stackTrace]) { |
| 1051 if (_socketSubscription != null) _socketSubscription.cancel(); | 1051 if (_socketSubscription != null) _socketSubscription.cancel(); |
| 1052 _state = _State.FAILURE; | 1052 _state = _State.FAILURE; |
| 1053 _controller.addError(error, stackTrace); | 1053 _controller.addError(error, stackTrace); |
| 1054 _controller.close(); | 1054 _controller.close(); |
| 1055 } | 1055 } |
| 1056 } | 1056 } |
| OLD | NEW |