X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fserve-event.lisp;h=c4d856d415a378e91a8b52b1a94aceed49099c11;hb=e33fb894f991b2926d8f3bace9058e4c0b2c3a37;hp=92cc9b282a6026cf8cb1e0611b5eb073d4638afd;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/code/serve-event.lisp b/src/code/serve-event.lisp index 92cc9b2..c4d856d 100644 --- a/src/code/serve-event.lisp +++ b/src/code/serve-event.lisp @@ -8,9 +8,6 @@ ;;;; files for more information. (in-package "SB!IMPL") - -(file-comment - "$Header$") #| ;;;; object set stuff @@ -24,7 +21,8 @@ (default-handler #'default-default-handler))) (:print-object (lambda (s stream) - (format stream "#" (object-set-name s))))) + (format stream "#" (object-set-name s)))) + (:copier nil)) name ; Name, for descriptive purposes. (table (make-hash-table :test 'eq)) ; Message-ID or ; xevent-type --> handler fun. @@ -44,14 +42,14 @@ #!+sb-doc "Return the handler function in Object-Set for the operation specified by Message-ID, if none, NIL is returned." - (check-type object-set object-set) - (check-type message-id fixnum) + (enforce-type object-set object-set) + (enforce-type message-id fixnum) (values (gethash message-id (object-set-table object-set)))) ;;; The setf inverse for Object-Set-Operation. (defun %set-object-set-operation (object-set message-id new-value) - (check-type object-set object-set) - (check-type message-id fixnum) + (enforce-type object-set object-set) + (enforce-type message-id fixnum) (setf (gethash message-id (object-set-table object-set)) new-value)) |# @@ -59,7 +57,8 @@ ;;;; file descriptor I/O noise (defstruct (handler - (:constructor make-handler (direction descriptor function))) + (:constructor make-handler (direction descriptor function)) + (:copier nil)) ;; Reading or writing... (direction nil :type (member :input :output)) ;; File descriptor this handler is tied to. @@ -71,7 +70,7 @@ (def!method print-object ((handler handler) stream) (print-unreadable-object (handler stream :type t) (format stream - "~A on ~:[~;BOGUS ~]descriptor ~D: ~S" + "~A on ~:[~;BOGUS ~]descriptor ~W: ~S" (handler-direction handler) (handler-bogus handler) (handler-descriptor handler) @@ -87,9 +86,9 @@ "Arange to call FUNCTION whenever FD is usable. DIRECTION should be either :INPUT or :OUTPUT. The value returned should be passed to SYSTEM:REMOVE-FD-HANDLER when it is no longer needed." - (assert (member direction '(:input :output)) - (direction) - "Invalid direction ~S, must be either :INPUT or :OUTPUT" direction) + (unless (member direction '(:input :output)) + ;; FIXME: should be TYPE-ERROR? + (error "Invalid direction ~S, must be either :INPUT or :OUTPUT" direction)) (let ((handler (make-handler direction fd function))) (push handler *descriptor-handlers*) handler)) @@ -156,7 +155,7 @@ (real (multiple-value-bind (q r) (truncate (coerce timeout 'single-float)) (declare (type index q) (single-float r)) - (values q (the index (truncate (* r 1f6)))))) + (values q (the (values index t) (truncate (* r 1f6)))))) (t (error "Timeout is not a real number or NIL: ~S" timeout)))) @@ -308,10 +307,11 @@ (sb!alien:with-alien ((read-fds (sb!alien:struct sb!unix:fd-set)) (write-fds (sb!alien:struct sb!unix:fd-set))) (let ((count (calc-masks))) - (multiple-value-bind (value err) (sb!unix:unix-fast-select - count - (sb!alien:addr read-fds) (sb!alien:addr write-fds) - nil to-sec to-usec) + (multiple-value-bind (value err) + (sb!unix:unix-fast-select count + (sb!alien:addr read-fds) + (sb!alien:addr write-fds) + nil to-sec to-usec) ;; Now see what it was (if anything) (cond (value