[squeak-dev] Re: Generators on Streams on Generators on
Collections on ...
Eliot Miranda
eliot.miranda at gmail.com
Wed Apr 13 13:36:26 UTC 2016
> On Apr 12, 2016, at 1:47 PM, David T. Lewis <lewis at mail.msen.com> wrote:
>
> FWIW, In OSProcess I used #upToEnd to mean "all of the data that is
> currently available in the stream" and #upToEndOfFile to mean "all of that
> data that will ever be available". Separately, the steam may be in
> blocking or non-blocking mode, where blocking means that #upToEndOfFile
> will block until EOF is detected.
>
> Dave
yuck :-(
>
>>> On 12.04.2016, at 21:33, marcel.taeumel <Marcel.Taeumel at hpi.de> wrote:
>>>
>>> Hi Nicolas,
>>>
>>> if you construct something like:
>>>
>>> | someStream |
>>> someStream := mySocketStream select: [:ea | ... ] thenCollect: [:ea |
>>> ... ].
>>> ...
>>> someStream next.
>>> ...
>>> someStream next: 5.
>>> ...
>>>
>>> You can only use someStream as long as there is data available while it
>>> is
>>> connected. Now, it can happen that socket streams are temporarily "at
>>> end"
>>> while no data is waiting in the buffer. Then, you would have to
>>> reconstruct
>>> someStream to continue. And know about it.
>>
>> AFAIK, “at end” means there will not be any more data:
>>
>> SocketStream>>atEnd
>> "There is nothing more to read when
>> there is no more data in our inBuffer, the socket
>> is disconnected and there is none available on the socket.
>> Note that we need to check isConnected before isDataAvailable,
>> otherwise data may sneak in in the meantime. But we check the
>> buffer first, because it is faster.”
>>
>> self isInBufferEmpty ifFalse: [^false].
>> ^self isConnected not
>> and: [self isDataAvailable not]
>>
>>
>> - Bert -
>
>
>
More information about the Squeak-dev
mailing list
|