anchor.diff:                                   :write
                                    (make-writer-function client)))))))
   
  -(defun make-reader-function (client)
  -  (lambda (fd event exception)
  -    (declare (ignorable fd event exception))
  +(defun make-listener-function (server)
  +  (lambda (&rest _)
  +    (declare (ignore _))
  +    (on-client-connection server)))
  +
  +(defgeneric on-read (client)
  +  (:method ((client client))
       (handler-case
           (let* ((buffer (input-buffer client))
                  (bytes-read
  
positive.code:       (deletef (clients (service-provider client))
                 client))))
  
  (defun make-listener-function (server)
    (lambda (fd event exception)
      (declare (ignorable fd event exception))
      (let ((client-socket (iolib:accept-connection (socket server))))
        (when client-socket
          (let ((client (make-instance 'client
  
negative.code:    (max-buffer-bytes :reader max-buffer-bytes :initarg :max-buffer-bytes :initform 16384)
     (input-buffer :accessor input-buffer)
     (input-buffer-fill :initform 0 :accessor input-buffer-fill)
     (output-buffer-queue :accessor output-buffer-queue :initform (make-queue))
     (output-buffer :accessor output-buffer :initform nil)
     (output-byte-count :accessor output-byte-count :initform 0)))
  
  (defmethod initialize-instance :after ((client client) &key)
    (multiple-value-bind (ip port)
  