r5266: *** empty log message ***
[kmrcl.git] / listener.lisp
index 59954057c4c98eeb7c3acccac29c89d8187c0d05..d37d72d924c54f51a3c82c948ba149e5d71667d0 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Dec 2002
 ;;;;
-;;;; $Id: listener.lisp,v 1.1 2003/07/08 16:12:40 kevin Exp $
+;;;; $Id: listener.lisp,v 1.2 2003/07/09 22:12:52 kevin Exp $
 ;;;; *************************************************************************
 
 (in-package #:kmrcl)
    (thread-fun :initarg :thread-fun :accessor thread-fun :initform nil)
    (process :initarg :process :accessor process :initform nil)))
 
+(defmethod print-object ((obj listener) s)
+  (print-unreadable-object (obj s :type t :identity nil)
+    (format s "port ~A" (port obj))))
 
+(defmethod print-object ((obj worker) s)
+  (print-unreadable-object (obj s :type t :identity nil)
+    (format s "port ~A" (port (listener obj)))))
+  
 ;; High-level API
 
 (defun init/listener (listener state)
        (return-from init/listener listener))
      (dolist (worker (workers listener))
        (close-active-socket (connection worker))
-       (destroy-process (process worker)))
+       (destroy-process (process worker))
+       (setf (connection worker) nil)
+       (setf (process worker) nil))
      (setf (workers listener) nil)
      (with-slots (process socket) listener
        (errorset (close-passive-socket socket) t)
-       (errorset (destroy-process process) t))
+       (errorset (destroy-process process) t)
+       (setf process nil)
+       (setf socket nil))
      (setq *active-listeners* (remove listener *active-listeners*)))
     (:restart
      (init/listener listener :stop)