From: Dave Richards <dave@sy...> - 2002-09-27 14:05:33
> Well, SO_RCVLOWAT and SO_SNDLOWAT are nonsupported in winsock. One
> thing I can suggest to solve a problem is to make socket nonblocking.
I agree with your subsequent analysis. The CLISP stream logic pre-supposes
that partial read()s/write()s are errors, and thus, non-blocking is only the
beginning of a solution.
> Another way is to use SO_SNDBUF to set buffer for sends, but I'm not
> sure about what it means.
SO_SNDBUF really isn't helpful in this context. It may be useful from a
performance perspective, but since CLISP has no way of knowing the current
windowing state, knowing the send buffer size isn't helpful.
In previous lives I've implemented server socket abstractions for
non-blocking/single-threaded environments. It's not conceptually difficult
to do, but it's going to have to be done in C. I'm not going to attempt it
until I have a better feel for the CLISP/C environment.