OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 /** | 5 /** |
6 * Utility class that holds a number of byte buffers and can deliver | 6 * Utility class that holds a number of byte buffers and can deliver |
7 * the bytes either one by one or in chunks. | 7 * the bytes either one by one or in chunks. |
8 */ | 8 */ |
9 class _BufferList { | 9 class _BufferList { |
10 _BufferList() { | 10 _BufferList() { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 _length -= count; | 69 _length -= count; |
70 return result; | 70 return result; |
71 } else { | 71 } else { |
72 int firstRemaining = _buffers.first().length - _index; | 72 int firstRemaining = _buffers.first().length - _index; |
73 if (firstRemaining >= count) { | 73 if (firstRemaining >= count) { |
74 result = _buffers.first().getRange(_index, count); | 74 result = _buffers.first().getRange(_index, count); |
75 _index += count; | 75 _index += count; |
76 _length -= count; | 76 _length -= count; |
77 return result; | 77 return result; |
78 } else { | 78 } else { |
79 result = new List<int>(count); | 79 result = new ByteArray(count); |
80 int remaining = count; | 80 int remaining = count; |
81 while (remaining > 0) { | 81 while (remaining > 0) { |
82 int bytesInFirst = _buffers.first().length - _index; | 82 int bytesInFirst = _buffers.first().length - _index; |
83 if (bytesInFirst <= remaining) { | 83 if (bytesInFirst <= remaining) { |
84 result.setRange(count - remaining, | 84 result.setRange(count - remaining, |
85 bytesInFirst, | 85 bytesInFirst, |
86 _buffers.first(), | 86 _buffers.first(), |
87 _index); | 87 _index); |
88 _buffers.removeFirst(); | 88 _buffers.removeFirst(); |
89 _index = 0; | 89 _index = 0; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 void clear() { | 139 void clear() { |
140 _index = 0; | 140 _index = 0; |
141 _length = 0; | 141 _length = 0; |
142 _buffers = new Queue(); | 142 _buffers = new Queue(); |
143 } | 143 } |
144 | 144 |
145 int _length; // Total number of bytes remaining in the buffers. | 145 int _length; // Total number of bytes remaining in the buffers. |
146 Queue<List<int>> _buffers; // List of data buffers. | 146 Queue<List<int>> _buffers; // List of data buffers. |
147 int _index; // Index of the next byte in the first buffer. | 147 int _index; // Index of the next byte in the first buffer. |
148 } | 148 } |
OLD | NEW |