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 |