setTCP_NODELAY
authorClaus Gittinger <cg@exept.de>
Mon, 27 Oct 2003 21:18:23 +0100
changeset 1340 eb9b1f1340e5
parent 1339 cc973a42aa54
child 1341 fff1730b546c
setTCP_NODELAY
Socket.st
--- a/Socket.st	Fri Oct 24 12:34:55 2003 +0200
+++ b/Socket.st	Mon Oct 27 21:18:23 2003 +0100
@@ -3608,10 +3608,37 @@
 #endif
 %}.
     ^ false
+!
+
+setTCP_NODELAY:aBoolean
+    "enable/disable TCP_NODELAY (i.e. disable/enable the Nagle algorithm)
+     For special applications only.
+     Not all OperatingSystems offer this functionality
+     (returns false, if unsupported)"
+
+    filePointer isNil ifTrue:[
+        ^ self errorNotOpen
+    ].
+%{
+#if defined(TCP_NODELAY) && defined(IPPROTO_TCP)
+    int onOff = (aBoolean == true);
+
+    if ((aBoolean == true) || (aBoolean == false)) {
+        OBJ fp = __INST(filePointer);
+        int sock;
+        int onOff = (aBoolean == true);
+
+        sock = fileno(__FILEVal(fp));
+        setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&onOff, sizeof(int));
+        RETURN(true);
+    }
+#endif
+%}.
+    ^ false
 ! !
 
 !Socket class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.192 2003-10-24 10:34:55 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.193 2003-10-27 20:18:23 cg Exp $'
 ! !