On Mon, Jul 13, 2009 at 08:54:54AM +0200, [email protected] wrote:
> With the new 'native' function are such capabilities are easily
> available. I agree that deprecating things that are more consistently
> done with the '(native ...' is better.
Yes. With the current testing version you can do
(def 'IPPROTO_TCP 6)
(def 'TCP_NODELAY 1)
(native NIL "setsockopt" 'I Sock IPPROTO_TCP TCP_NODELAY (4) 4)
(There is no function like 'connect' or 'listen' yet to populate 'Sock'
though, as the networking functions are still missing).
And for applications running on the 32-bit version it is sufficient to
include the following code fragment:
################################################################
(load "lib/gcc.l")
(gcc "net" NIL 'nagle)
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/tcp.h>
// (nagle 'cnt 'flg) -> cnt
any nagle(any ex) {
any x, y;
int sd, opt;
x = cdr(ex), y = EVAL(car(x));
sd = (int)xCnt(ex,y);
x = cdr(x), opt = isNil(EVAL(car(x)))? 1 : 0;
if (setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*)&opt, sizeof(int)) < 0)
err(ex, NULL, "IP setsockopt error: %s", strerror(errno));
return y;
}
/**/
################################################################
Cheers,
- Alex
--
UNSUBSCRIBE: mailto:[email protected]?subject=unsubscribe