[gambit-list] Something like ##device-port-eof? available?

Mikael mikael.rcv at gmail.com
Mon Nov 19 20:38:02 EST 2012


Oh dear, some things are surprisingly enough impossible to do in standard
Unix API:s: the *only* way to know if there's EOF is to actually do a read
of > 0 bytes.

(> 0 because 0 is the return value that signals EOF, eh.)

select() on a closed socket instantaneously returns read-ability so this
must be the basis for port-wait-for-input's behavior, which is really fine
of course.

That Unix API was clearly not made with even quite basic application-level
abstraction of socket access in mind.

Very well, I suppose you always learn something new every day.

Thanks,
Mikael

Dear Marc,
>
>  How do I know if a device port reached EOF?
>
> Is there a flag internally in Gambit somewhere I suppose there is a flag
> internally somewhere in Gambit that keeps track of this. |wait-for-input|just returns immediately. Of course I could do something like (read-subu8vector
> v 0 1 port 0) though in this particular application I'd much prefer to
> only do the socket reading and writing completely outside the scope of
> Gambit's IO system.
>
> If it's not in Gambit then please just say so, there's always another
> implementation path, though I'd appreciate not to go into higher complexity
> than needed.
>
> Thanks!
>
>
> (define (port-wait-for-input port)
>   (##wait-for-io!
>    (device-port-rdevice-condvar port)
>    (port-rtimeout port)))
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20121120/608ef4ce/attachment.htm>


More information about the Gambit-list mailing list