From ee318bdea1c87412ed6e5c10d2b5165924dc0420 Mon Sep 17 00:00:00 2001 From: "hechee@blackhole.universe.org" <> Date: Wed, 25 Oct 2006 21:58:21 +0200 Subject: [PATCH] New function: finalize-object-closing-fd, sockets and epoll mux interface use it. --- io-multiplex/common.lisp | 4 ++++ io-multiplex/defpackage.lisp | 4 +++- io-multiplex/epoll.lisp | 5 +---- sockets/socket-methods.lisp | 5 +---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/io-multiplex/common.lisp b/io-multiplex/common.lisp index 8e48e6b..9aeda2b 100644 --- a/io-multiplex/common.lisp +++ b/io-multiplex/common.lisp @@ -85,6 +85,10 @@ (declare (ignore err)) nil)))) +(defun finalize-object-closing-fd (object fd) + (sb-ext:finalize object #'(lambda () (et:close fd)))) + + ;;; ;;; Base methods diff --git a/io-multiplex/defpackage.lisp b/io-multiplex/defpackage.lisp index 344b402..049917e 100644 --- a/io-multiplex/defpackage.lisp +++ b/io-multiplex/defpackage.lisp @@ -35,4 +35,6 @@ #:*multiplex-best-interface* #:add-fd-handlers #:remove-fd-handlers - #:modify-fd #:serve-fd-events)) + #:modify-fd #:serve-fd-events + + #:finalize-object-closing-fd)) diff --git a/io-multiplex/epoll.lisp b/io-multiplex/epoll.lisp index da8b021..ddf5307 100644 --- a/io-multiplex/epoll.lisp +++ b/io-multiplex/epoll.lisp @@ -35,14 +35,11 @@ (eval-when (:compile-toplevel :load-toplevel :execute) (defvar *epoll-max-events* 200)) -(defun set-finalizer-on-epoll-interface (epoll-interface fd) - (sb-ext:finalize epoll-interface #'(lambda () (et:close fd)))) - (defmethod initialize-instance :after ((interface epoll-multiplex-interface) &key (size +epoll-default-size-hint+)) (let ((epoll-fd (et:epoll-create size))) (setf (slot-value interface 'epoll-fd) epoll-fd) - (set-finalizer-on-epoll-interface interface epoll-fd))) + (finalize-object-closing-fd interface epoll-fd))) (defmethod monitor-fd progn ((interface epoll-multiplex-interface) handler) (let ((flags (logior (if (handler-read-func handler) et:epollin 0) diff --git a/sockets/socket-methods.lisp b/sockets/socket-methods.lisp index f219614..3fa0090 100644 --- a/sockets/socket-methods.lisp +++ b/sockets/socket-methods.lisp @@ -61,9 +61,6 @@ (string protocol)))))))) (values sf st sp))) -(defun set-finalizer-on-socket (socket fd) - (sb-ext:finalize socket #'(lambda () (et:close fd)))) - (defmethod shared-initialize :after ((socket socket) slot-names &key file-descriptor family type (protocol :default)) @@ -78,7 +75,7 @@ (et:socket sf st sp)))) (setf fam family) (setf proto protocol) - (set-finalizer-on-socket socket fd)))) + (iomux:finalize-object-closing-fd socket fd)))) (defmethod shared-initialize :after ((socket stream-socket) slot-names &key) (setf (slot-value socket 'lisp-stream) -- 2.11.4.GIT