diff options
author | Steve Bennett <steveb@workware.net.au> | 2017-04-20 14:01:10 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2017-04-20 14:07:51 +1000 |
commit | 250abd9c392f1e7348274aee5e0ebd3a88c21219 (patch) | |
tree | 716e6613589291a030a8e0e0e8c481621394845f | |
parent | f70a68adacf612988a3c3e0045017c262248dbd0 (diff) | |
download | jimtcl-250abd9c392f1e7348274aee5e0ebd3a88c21219.zip jimtcl-250abd9c392f1e7348274aee5e0ebd3a88c21219.tar.gz jimtcl-250abd9c392f1e7348274aee5e0ebd3a88c21219.tar.bz2 |
aio: Add support for TCP_NODELAY
Enable or disable Nagle's algorigthm
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r-- | jim-aio.c | 26 | ||||
-rw-r--r-- | jim_tcl.txt | 3 |
2 files changed, 29 insertions, 0 deletions
@@ -56,6 +56,7 @@ #if defined(HAVE_SYS_SOCKET_H) && defined(HAVE_SELECT) && defined(HAVE_NETINET_IN_H) && defined(HAVE_NETDB_H) && defined(HAVE_ARPA_INET_H) #include <sys/socket.h> #include <netinet/in.h> +#include <netinet/tcp.h> #include <arpa/inet.h> #include <netdb.h> #ifdef HAVE_SYS_UN_H @@ -943,6 +944,22 @@ static int aio_cmd_ndelay(Jim_Interp *interp, int argc, Jim_Obj *const *argv) } #endif +#ifdef TCP_NODELAY +static int aio_cmd_tcp_nodelay(Jim_Interp *interp, int argc, Jim_Obj *const *argv) +{ + AioFile *af = Jim_CmdPrivData(interp); + int on; + + if (Jim_GetBoolean(interp, argv[0], &on) != JIM_OK) { + return JIM_ERR; + } + setsockopt(af->fd, IPPROTO_TCP, TCP_NODELAY, (void *)&on, sizeof(on)); + + return JIM_OK; +} +#endif + + #ifdef HAVE_FSYNC static int aio_cmd_sync(Jim_Interp *interp, int argc, Jim_Obj *const *argv) { @@ -1375,6 +1392,15 @@ static const jim_subcmd_type aio_command_table[] = { /* Description: Set O_NDELAY (if arg). Returns current/new setting. */ }, #endif +#ifdef TCP_NODELAY + { "tcp_nodelay", + "boolean", + aio_cmd_tcp_nodelay, + 1, + 1, + /* Description: Set TCP_NODELAY (Nagle's algorithm) */ + }, +#endif #ifdef HAVE_FSYNC { "sync", NULL, diff --git a/jim_tcl.txt b/jim_tcl.txt index 28dc317..cce8369 100644 --- a/jim_tcl.txt +++ b/jim_tcl.txt @@ -4551,6 +4551,9 @@ aio Note that in general ANSI I/O interacts badly with non-blocking I/O. Use with care. ++$handle *tcp_nodelay* boolean+:: + Enable or disable TCP_NODELAY (Nagle's) algorithm. + +$handle *puts ?-nonewline?* 'str'+:: Write the string, with newline unless -nonewline |