;;;; 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)