Doubts about in_avail vs showmanyc
Paolo Carlini
pcarlini@unitus.it
Tue Mar 4 22:56:00 GMT 2003
Nathan Myers wrote:
>On Tue, Mar 04, 2003 at 09:34:16PM +0100, Paolo Carlini wrote:
>
>
>>Hi Nathan, hi everyone
>>
>>on second tought I have some doubts about your observations
>>that showmanyc should return the _sum_ of of whatever is
>>already in the buffer and what you get using recv/fstat.
>>
>>
>I'm sorry to have made another mistake: ::fstat() tells the full
>file size, so you would have to subtract the current position
>from that, and ignore the count of characters still in the buffer
>(unless it is more). But that's not your point...
>
Thanks anyway, another possible mistake avoided!
>The descriptions of in_avail and showmanyc are different. The
>former is supposed to tell you (quickly!) about what's buffered,
>if any, where the latter is allowed to do more work and tell
>whatever it can learn. It's protected, so it may be called by
>derived classes and exposed to users. It is defined in terms of
>what behavior can be expected from underflow, which is likewise
>(only) protected and might be called with a non-empty buffer.
>underflow() must return characters already buffered before it
>starts returning newly-read characters or EOF.
>
Ah, now I see.
In our current implementation this is "hidden" in some code which
involve the
put back area (which, in turn, I'm still trying to understand in detail
basing on your
explanations ;).
>So, the smallest
>value showmanyc should return is egptr()-gptr(), but it might
>do better.
>
Ok.
>Users can call in_avail() in a loop, and it might be more efficient
>if they can read chunks bigger than BUFSIZ.
>
Thanks once again Nathan: I will do my best to put to good use your
explanations.
Paolo.
More information about the Libstdc++
mailing list