On 6/8/07, Douglas Crosher dtc@scieneer.com wrote:
Hello Erik,
Thank you for keeping the Scieneer CL in mind. The get-host-name implementation does work in the SCL. An implementation of wait-for-input-internal is attached.
And thank you for your continued contributions! I've committed the patch last night and updated the website accordingly.
Changing the wait-for-input-internal function to set a flag in the socket objects to indicate they are ready would avoid the need to cons up a list of ready sockets which can become very inefficient when managing a large number of connections.
That's true. On the other hand, the efficiency of needing to walk all provided socket objects to find out which ones changed seems to be the main objection against the select() system call (which is why poll(), epoll() and others have been invented, right?).
Please consider also adding support for write waiting which is necessary when writing event loops for servers. This could be done by adding another flag to sockets to indication their waiting direction: :input, :output, :io, or nil.
I'm not only considering that, I really want to provide it, but, there's a bigger problem (than providing input waiting): while it was possible to provide input waiting on most implementations, output waiting is less broadly supported and will require more FFI code. It's not that I don't want to do that, it just takes more time.
bye,
Erik.