[squeak-dev] Re: Generators on Streams on Generators on Collections on ...

Chris cunningham.cb at gmail.com
Wed Apr 13 23:33:11 UTC 2016



Sent from my iPhone

> On Apr 13, 2016, at 4:30 PM, Chris <cunningham.cb at gmail.com> wrote:
> 
> 
> 
> Sent from my iPhone
> 
>>> On Apr 13, 2016, at 4:20 PM, Ben Coman <btc at openinworld.com> wrote:
>>> 
>>> On Wed, Apr 13, 2016 at 9:42 PM, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>>> 
>>> 
>>>> 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.
>>> 
>>> You could use e.g. upToAvailable and upToEnd.
>> 
>> upToBufferEnd ?
> allAvailable ?
Or
remainingAvailable

-cbc
>> cheers -ben
>> 
>>> 
>>>> 
>>>> Dave
>>>> 
>>>>>> 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