Skip to content
fd-mixin.lisp 963 B
Newer Older
;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
Luís Oliveira's avatar
Luís Oliveira committed
;;;
;;; --- FD mixin definitions
Luís Oliveira's avatar
Luís Oliveira committed
;;;
(in-package :iolib.streams)
(defmethod shared-initialize :around ((stream dual-channel-fd-mixin) slot-names &key)
  (declare (ignore slot-names))
  (call-next-method)
  (setf (isys:fd-nonblock-p (fd-of stream)) t))
(defmethod close :before ((fd-mixin dual-channel-fd-mixin) &key abort)
  (declare (ignore abort))
  (when (fd-of fd-mixin)
    (isys:close (fd-of fd-mixin))
    (setf (fd-of fd-mixin) nil)))

;;;; Get and Set O_NONBLOCK

(defmethod fd-non-blocking ((fd-mixin dual-channel-fd-mixin))
Stelian Ionescu's avatar
Stelian Ionescu committed
  (isys:fd-nonblock-p (fd-of fd-mixin)))
(defobsolete fd-non-blocking "stream FDs are now always non-blocking.")

(defmethod (setf fd-non-blocking) (mode (fd-mixin dual-channel-fd-mixin))
  (check-type mode boolean "a boolean value")
Stelian Ionescu's avatar
Stelian Ionescu committed
  (setf (isys:fd-nonblock-p (fd-of fd-mixin)) mode))
(defobsolete (setf fd-non-blocking) "stream FDs are now always non-blocking.")