On Dec 21, 2017, at 10:23 AM, Peter Levart <[email protected]> wrote:
>> Or I suppose a single List containing an object containing both the bytes
>> and the length would work. One could for example us
>
> I don't think this would be necessary. All buffers but the last one are fully
> filled. The inner reading loop guarantees that the buffer is either fully
> read or the stream is at EOF. So in final gathering loop you could maintain a
> 'remaining' value, initialized to 'total' and decremented by
> DEFAULT_BUFFER_SIZE at each iteration. The number of bytes to copy for each
> buffer would then be Math.min(DEFAULT_BUFFER_SIZE, remaining). That's one
> possibility. There are others. But no new structures are necessary.
What about the case where read() returns 0, e.g., when reading from a socket,
but subsequent reads return positive values?
// read to EOF which may read more or less than buffer size
while ((n = read(buf, nread, buf.length - nread)) > 0) {
nread += n;
}
Then it does not look as if buffer is full or am I mistaken?
Thanks,
Brian