On 10/16/06, Erik Huelsmann e.huelsmann@gmx.net wrote:
These requirements came up:
- Support for other-than-ipv4 addresses/sockets
Do you mean just IPv4 vs. IPv6, or do you also intend to support, e.g., UNIX sockets? If so, isn't that beyond the scope of usocket?
- Support for create-time options (such as REUSEADDRESS)
Here's the situation as far as create-time options go in the various target implementations:
SBCL -- Supports getting and setting of most socket options. CMUCL -- Supports getting and setting of all socket options. Allegro -- Doesn't support any of the usual BSD socket options (unsurprisingly). LispWorks -- Unless I'm missing something, doesn't support socket options. OpenMCL -- Supports setting some socket options at creation time. CLISP -- Supports getting and setting of all socket options.
Support is somewhat spotty, as you can see. However, since many of the socket options are, in fact, sometimes useful, we ought to provide a way to set them on supporting implementations (necessarily at creation time, to support OpenMCL). If the user specifies an option that the implementation doesn't support, then we simply ignore it and produce a warning.
Well, I don't really like warnings, but using the system of restarts might be appropriate: the software can select itself whether the unsupported option is a continuable situation or not.
What were your ideas?
A couple weeks ago, I hacked together the beginnings of a TCP server socket implementation. It has documentation, but no tests. I wrote the backend for SBCL, and it seems to be working fine.
That's great news! One backend is a start...
It doesn't support a lot of the requirements discussed. It doesn't support setting socket options, and it only works with IPv4. However, it might be useful as a basis for further work. Patch attached.
Thanks for the patch. I was looking for the implementation you chose for accept, especially since you decided not to derive the usocket-server from the usocket class. I'm missing the actual implementation. Could you provide the missing bit?
bye,
Erik.