Author: ehuelsmann Date: Mon Sep 17 14:59:29 2007 New Revision: 288
Modified: usocket/trunk/backend/allegro.lisp usocket/trunk/backend/armedbear.lisp usocket/trunk/backend/clisp.lisp usocket/trunk/backend/lispworks.lisp usocket/trunk/backend/openmcl.lisp usocket/trunk/backend/sbcl.lisp usocket/trunk/usocket.lisp Log: Define datagram-usocket-p; ArmedBear depends on it.
Modified: usocket/trunk/backend/allegro.lisp ============================================================================== --- usocket/trunk/backend/allegro.lisp (original) +++ usocket/trunk/backend/allegro.lisp Mon Sep 17 14:59:29 2007 @@ -89,7 +89,9 @@
(defmethod socket-accept ((socket stream-server-usocket) &key element-type) (declare (ignore element-type)) ;; allegro streams are multivalent - (let ((stream-sock (socket:accept-connection (socket socket)))) + (let ((stream-sock + (with-mapped-conditions (socket) + (socket:accept-connection (socket socket))))) (make-stream-socket :socket stream-sock :stream stream-sock)))
(defmethod get-local-address ((usocket usocket))
Modified: usocket/trunk/backend/armedbear.lisp ============================================================================== --- usocket/trunk/backend/armedbear.lisp (original) +++ usocket/trunk/backend/armedbear.lisp Mon Sep 17 14:59:29 2007 @@ -216,19 +216,22 @@ "open")) (sock (jdi:do-jmethod-call chan "socket"))) (when reuseaddress + (with-mapped-conditions () + (jdi:do-jmethod-call sock + "setReuseAddress" + (jdi:jcoerce reuseaddress :boolean)))) + (with-mapped-conditions () (jdi:do-jmethod-call sock - "setReuseAddress" - (jdi:jcoerce reuseaddress :boolean))) - (jdi:do-jmethod-call sock - "bind" - (jdi:jcoerce sock-addr - "java.net.SocketAddress") - (jdi:jcoerce backlog :int)) + "bind" + (jdi:jcoerce sock-addr + "java.net.SocketAddress") + (jdi:jcoerce backlog :int))) (make-stream-server-socket chan :element-type element-type)))
(defmethod socket-accept ((socket stream-server-usocket) &key element-type) (let* ((jsock (socket socket)) - (jacc-chan (jdi:do-jmethod-call jsock "accept")) + (jacc-chan (with-mapped-conditions (socket) + (jdi:do-jmethod-call jsock "accept"))) (jacc-stream (ext:get-socket-stream (jdi:jop-deref (jdi:do-jmethod-call jacc-chan "socket")) @@ -243,7 +246,7 @@
(defmethod socket-close ((usocket usocket)) (with-mapped-conditions (usocket) - (jdi:do-method (socket usocket) "close"))) + (jdi:do-jmethod (socket usocket) "close")))
;; Socket streams are different objects than ;; socket streams. Closing the stream flushes
Modified: usocket/trunk/backend/clisp.lisp ============================================================================== --- usocket/trunk/backend/clisp.lisp (original) +++ usocket/trunk/backend/clisp.lisp Mon Sep 17 14:59:29 2007 @@ -81,13 +81,15 @@ :backlog backlog) (when (ip/= host *wildcard-host*) (list :interface host)))))) - (make-stream-server-socket sock :element-type element-type))) + (with-mapped-conditions () + (make-stream-server-socket sock :element-type element-type))))
(defmethod socket-accept ((socket stream-server-usocket) &key element-type) (let ((stream - (socket:socket-accept (socket socket) - :element-type (or element-type - (element-type socket))))) + (with-mapped-conditions (socket) + (socket:socket-accept (socket socket) + :element-type (or element-type + (element-type socket)))))) (make-stream-socket :socket stream :stream stream)))
Modified: usocket/trunk/backend/lispworks.lisp ============================================================================== --- usocket/trunk/backend/lispworks.lisp (original) +++ usocket/trunk/backend/lispworks.lisp Mon Sep 17 14:59:29 2007 @@ -88,7 +88,8 @@ (make-stream-server-socket sock :element-type element-type)))
(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) - (let* ((sock (comm::get-fd-from-socket (socket usocket))) + (let* ((sock (with-mapped-conditions (usocket) + (comm::get-fd-from-socket (socket usocket)))) (stream (make-instance 'comm:socket-stream :socket sock :direction :io
Modified: usocket/trunk/backend/openmcl.lisp ============================================================================== --- usocket/trunk/backend/openmcl.lisp (original) +++ usocket/trunk/backend/openmcl.lisp Mon Sep 17 14:59:29 2007 @@ -94,19 +94,21 @@ (backlog 5) (element-type 'character)) (let* ((reuseaddress (if reuse-address-supplied-p reuse-address reuseaddress)) - (sock (apply #'openmcl-socket:make-socket - (append (list :connect :passive - :reuse-address reuseaddress - :local-port port - :backlog backlog - :format (to-format element-type)) - (when (ip/= host *wildcard-host*) - (list :local-host host)))))) + (sock (with-mapped-conditions () + (apply #'openmcl-socket:make-socket + (append (list :connect :passive + :reuse-address reuseaddress + :local-port port + :backlog backlog + :format (to-format element-type)) + (when (ip/= host *wildcard-host*) + (list :local-host host))))))) (make-stream-server-socket sock :element-type element-type)))
(defmethod socket-accept ((usocket stream-server-usocket) &key element-type) (declare (ignore element-type)) ;; openmcl streams are bi/multivalent - (let ((sock (openmcl-socket:accept-connection (socket usocket)))) + (let ((sock (with-mapped-conditions (usocket) + (openmcl-socket:accept-connection (socket usocket))))) (make-stream-socket :socket sock :stream sock)))
;; One close method is sufficient because sockets
Modified: usocket/trunk/backend/sbcl.lisp ============================================================================== --- usocket/trunk/backend/sbcl.lisp (original) +++ usocket/trunk/backend/sbcl.lisp Mon Sep 17 14:59:29 2007 @@ -207,18 +207,22 @@ (ip (host-to-vector-quad host)) (sock (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol :tcp))) - (setf (sb-bsd-sockets:sockopt-reuse-address sock) reuseaddress) - (sb-bsd-sockets:socket-bind sock ip port) - (sb-bsd-sockets:socket-listen sock backlog) - (make-stream-server-socket sock :element-type element-type))) + (with-mapped-conditions () + (setf (sb-bsd-sockets:sockopt-reuse-address sock) reuseaddress) + (sb-bsd-sockets:socket-bind sock ip port) + (sb-bsd-sockets:socket-listen sock backlog) + (make-stream-server-socket sock :element-type element-type))))
(defmethod socket-accept ((socket stream-server-usocket) &key element-type) (let ((sock (sb-bsd-sockets:socket-accept (socket socket)))) - (make-stream-socket :socket sock - :stream (sb-bsd-sockets:socket-make-stream sock - :input t :output t :buffering :full - :element-type (or element-type - (element-type socket)))))) + (with-mapped-conditions (socket) + (make-stream-socket + :socket sock + :stream (sb-bsd-sockets:socket-make-stream + sock + :input t :output t :buffering :full + :element-type (or element-type + (element-type socket)))))))
;; Sockets and their associated streams are modelled as ;; different objects. Be sure to close the stream (which
Modified: usocket/trunk/usocket.lisp ============================================================================== --- usocket/trunk/usocket.lisp (original) +++ usocket/trunk/usocket.lisp Mon Sep 17 14:59:29 2007 @@ -58,6 +58,10 @@ (defun stream-server-usocket-p (socket) (typep socket 'stream-server-usocket))
+(defun datagram-usocket-p (socket) + (declare (ignore socket)) + nil) + ;;Not in use yet: ;;(defclass datagram-usocket (usocket) ;; ()