[usocket-cvs] r521 - usocket/trunk/backend

Chun Tian (binghe) ctian at common-lisp.net
Sun Feb 21 03:38:51 UTC 2010


Author: ctian
Date: Sat Feb 20 22:38:51 2010
New Revision: 521

Log:
LispWorks: code clean; remove support for LispWorks 3.

Modified:
   usocket/trunk/backend/lispworks.lisp

Modified: usocket/trunk/backend/lispworks.lisp
==============================================================================
--- usocket/trunk/backend/lispworks.lisp	(original)
+++ usocket/trunk/backend/lispworks.lisp	Sat Feb 20 22:38:51 2010
@@ -6,12 +6,14 @@
 (in-package :usocket)
 
 (eval-when (:compile-toplevel :load-toplevel :execute)
-  (require "comm"))
+  (require "comm")
+
+  #+lispworks3
+  (error "LispWorks 3 is not supported by USOCKET."))
 
 ;;; ---------------------------------------------------------------------------
 ;;;  Warn if multiprocessing is not running on Lispworks
 
-#-win32
 (defun check-for-multiprocessing-started (&optional errorp)
   (unless mp:*current-process*
     (funcall (if errorp 'error 'warn)
@@ -21,11 +23,13 @@
              'mp:initialize-multiprocessing
              'wait-for-input)))
 
-#-win32
-(check-for-multiprocessing-started)
+(eval-when (:load-toplevel :execute)
+  (check-for-multiprocessing-started))
 
 #+win32
-(fli:register-module "ws2_32")
+(eval-when (:load-toplevel :execute)
+  (fli:register-module "ws2_32")
+  (comm::ensure-sockets))
 
 (fli:define-foreign-function (get-host-name-internal "gethostname" :source)
       ((return-string (:reference-return (:ef-mb-string :limit 257)))
@@ -359,7 +363,8 @@
               :element-type '(unsigned-byte 8)
               :allocation :static))
 
-(defvar *message-send-lock* (mp:make-lock))
+(defvar *message-send-lock*
+  (mp:make-lock :name "USOCKET message send lock"))
 
 (defun send-message (socket-fd buffer &optional (length (length buffer)) host service)
   "Send message to a socket, using sendto()/send()"
@@ -368,7 +373,7 @@
   (let ((message *message-send-buffer*))
     (fli:with-dynamic-foreign-objects ((client-addr (:struct comm::sockaddr_in))
                                        (len :int
-					    #-(or lispworks3 lispworks4 lispworks5.0)
+					    #-(or lispworks4 lispworks5.0) ; <= 5.0
                                             :initial-element
                                             (fli:size-of '(:struct comm::sockaddr_in))))
       (fli:with-dynamic-lisp-array-pointer (ptr message :type '(:unsigned :byte))
@@ -384,14 +389,15 @@
 
 (defmethod socket-send ((socket datagram-usocket) buffer length &key host port)
   (let ((s (socket socket)))
-    (send-message s buffer length (host-to-hbo host) port)))
+    (send-message s buffer length (and host (host-to-hbo host)) port)))
 
 (defvar *message-receive-buffer*
   (make-array +max-datagram-packet-size+
               :element-type '(unsigned-byte 8)
               :allocation :static))
 
-(defvar *message-receive-lock* (mp:make-lock))
+(defvar *message-receive-lock*
+  (mp:make-lock :name "USOCKET message receive lock"))
 
 (defun receive-message (socket-fd &optional buffer (length (length buffer))
 			&key read-timeout (max-buffer-size +max-datagram-packet-size+))
@@ -408,7 +414,7 @@
         old-timeout)
     (fli:with-dynamic-foreign-objects ((client-addr (:struct comm::sockaddr_in))
                                        (len :int
-					    #-(or lispworks3 lispworks4 lispworks5.0)
+					    #-(or lispworks4 lispworks5.0) ; <= 5.0
                                             :initial-element
                                             (fli:size-of '(:struct comm::sockaddr_in))))
       (fli:with-dynamic-lisp-array-pointer (ptr message :type '(:unsigned :byte))
@@ -531,7 +537,9 @@
 			     (wait-list-waiters wait-list))))
       (dolist (x (wait-list-waiters wait-list))
         (mp:unnotice-fd (os-socket-handle x)))
-      wait-list)))
+      wait-list))
+
+) ; end of block
 
 
 ;;;
@@ -551,6 +559,7 @@
   ;; to resort to system calls to achieve the same thing.
   ;; Luckily, it provides us access to the raw socket handles (as we 
   ;; wrote the code above.
+
   (defconstant fd-read 1)
   (defconstant fd-read-bit 0)
   (defconstant fd-write 2)
@@ -603,10 +612,12 @@
       :lambda-list nil
     :result-type :int
     :module "ws2_32")
+
   (fli:define-foreign-function (wsa-event-close "WSACloseEvent" :source)
       ((event-object win32-handle))
     :result-type :int
     :module "ws2_32")
+
   (fli:define-foreign-function (wsa-enum-network-events "WSAEnumNetworkEvents" :source)
       ((socket ws-socket)
        (event-object win32-handle)
@@ -670,7 +681,6 @@
       (system:wait-for-single-object (wait-list-%wait wait-list)
                                      "Waiting for socket activity" timeout))
     (update-ready-and-state-slots (wait-list-waiters wait-list)))
-
   
   (defun map-network-events (func network-events)
     (let ((event-map (fli:foreign-slot-value network-events 'network-events))
@@ -691,7 +701,7 @@
                 (wsa-enum-network-events (os-socket-handle socket) 0 t)
              (if (zerop rv)
                  (map-network-events #'(lambda (err-code)
-                                          (if (zerop err-code)
+                                         (if (zerop err-code)
                                              (setf (%ready-p socket) t
                                                    (state socket) :READ)
                                              (raise-usock-err err-code socket)))
@@ -707,7 +717,8 @@
       (unless (null (wait-list-%wait wl))
         (wsa-event-close (wait-list-%wait wl)))))
   
-  (hcl:add-special-free-action 'free-wait-list)
+  (eval-when (:load-toplevel :execute)
+    (hcl:add-special-free-action 'free-wait-list))
   
   (defun %setup-wait-list (wait-list)
     (hcl:flag-special-free-action wait-list)
@@ -716,7 +727,8 @@
   (defun %add-waiter (wait-list waiter)
     (let ((events (etypecase waiter
                     (stream-server-usocket (logior fd-connect fd-accept fd-close))
-                    (stream-usocket (logior fd-connect fd-read fd-oob fd-close)))))
+                    (stream-usocket (logior fd-connect fd-read fd-oob fd-close))
+                    (datagram-usocket (logior fd-read)))))
       (maybe-wsa-error
        (wsa-event-select (os-socket-handle waiter) (wait-list-%wait wait-list) events)
        waiter)))
@@ -726,4 +738,4 @@
      (wsa-event-select (os-socket-handle waiter) (wait-list-%wait wait-list) 0)
      waiter))
   
-  );; end of WIN32-block
+) ; end of WIN32-block




More information about the usocket-cvs mailing list