[usocket-cvs] r401 - usocket/trunk/backend
ehuelsmann at common-lisp.net
ehuelsmann at common-lisp.net
Mon Jul 28 22:16:53 UTC 2008
Author: ehuelsmann
Date: Mon Jul 28 18:16:52 2008
New Revision: 401
Modified:
usocket/trunk/backend/armedbear.lisp
Log:
Implement some of the 'new hot stuff': nodelay (ABCL).
Modified: usocket/trunk/backend/armedbear.lisp
==============================================================================
--- usocket/trunk/backend/armedbear.lisp (original)
+++ usocket/trunk/backend/armedbear.lisp Mon Jul 28 18:16:52 2008
@@ -186,26 +186,32 @@
(typecase condition
(error (error 'unknown-error :socket socket :real-error condition))))
-(defun socket-connect (host port &key (element-type 'character) timeout nodelay)
+(defun socket-connect (host port &key (element-type 'character)
+ timeout deadline (nodelay nil nodelay-specified))
(declare (ignore nodelay timeout))
(unsupported 'timeout 'socket-connect)
- (unimplemented 'nodelay 'socket-connect)
+ (unimplemented 'deadline 'socket-connect)
(let ((usock))
(with-mapped-conditions (usock)
(let* ((sock-addr (jdi:jcoerce
(jdi:do-jnew-call "java.net.InetSocketAddress"
- (host-to-hostname host)
- (jdi:jcoerce port :int))
+ (host-to-hostname host)
+ (jdi:jcoerce port :int))
"java.net.SocketAddress"))
(jchan (jdi:do-jstatic-call "java.nio.channels.SocketChannel"
- "open" sock-addr))
+ "open" sock-addr))
(sock (jdi:do-jmethod-call jchan "socket")))
- (setf usock
- (make-stream-socket
- :socket jchan
- :stream (ext:get-socket-stream (jdi:jop-deref sock)
- :element-type element-type)))))))
+ (when nodelay-specified
+ (jdi:do-jmethod-call sock "setTcpNoDelay"
+ (if nodelay
+ (java:make-immediate-object t :boolean)
+ (java:make-immediate-object nil :boolean))))
+ (setf usock
+ (make-stream-socket
+ :socket jchan
+ :stream (ext:get-socket-stream (jdi:jop-deref sock)
+ :element-type element-type)))))))
(defun socket-listen (host port
&key reuseaddress
More information about the usocket-cvs
mailing list