73 int bytes_to_read = Math.Min(buffer_size, _leftOverLength);
75 if (_leftOverBytes !=
null)
77 Array.Copy(_leftOverBytes, _leftOverStart, next.Bytes, 0, bytes_to_read);
78 next.LengthFilled = bytes_to_read;
81 if (bytes_to_read < _leftOverLength)
83 _leftOverStart += bytes_to_read;
84 _leftOverLength -= bytes_to_read;
87 _leftOverBytes =
null;
92 while (_source.CanTake && next.LengthFilled < buffer_size &&
101 bytes_to_read = Math.Min(buffer_size - next.LengthFilled, source_buffer.
LengthFilled);
103 Array.Copy(source_buffer.
Bytes, 0, next.Bytes, next.LengthFilled, bytes_to_read);
104 next.LengthFilled += bytes_to_read;
110 _leftOverBytes = source_buffer.
Bytes;
111 _leftOverStart = bytes_to_read;
112 _leftOverLength = source_buffer.LengthFilled - bytes_to_read;
113 next.TotalBytesRead -= _leftOverLength;
117 if (next.LengthFilled == 0 || !_source.CanTake)
119 return next.LengthFilled != 0;