anchor.diff:     (output-byte-count :accessor output-byte-count :initform 0)))
   
   (defmethod initialize-instance :after ((client tcp-client) &key)
  -  (multiple-value-bind (ip port)
  +  (multiple-value-bind (name port)
         (iolib:remote-name (socket client))
  -    (setf (ip-address client) ip
  +    (setf (remote-name client) name
             (port client) port
             (input-buffer client) (make-array (max-buffer-bytes client)
                                               :element-type '(unsigned-byte 8)))))
   
   (defmethod print-object ((client tcp-client) s)
     (print-unreadable-object (client s :type t :identity t)
  -    (format s "~A:~A" (ip-address client) (port client))))
  +    (format s "~A:~A" (remote-name client) (port client))))
   
   (defgeneric disconnect (client &rest events)
     (:method ((client tcp-client) &rest events)
  
positive.code:                 (setf (output-buffer client) nil
                        (output-byte-count client) 0)))))
        (iolib:socket-connection-reset-error ()
          (format t "Got a reset from client.~%")
          (finish-output)
          (disconnect client :close))
        (isys:ewouldblock ()
          (format t "Got an EWOULDBLOCK.~%")
          (finish-output))
        (isys:epipe ()
          (format t "Got a hangup on write.~%")
          (disconnect client :close)))))
  
  (defgeneric write-to-client (client data)
  
negative.code:           (incf (input-buffer-fill client) bytes-read))
        (iolib:socket-connection-reset-error ()
          ;; Should do something here
          (format t "Got a reset from ~A.~%" client)
          (finish-output)
          (disconnect client :close))
        (end-of-file ()
          ;; Should do something here, too.
          (format t "Received unexpected EOF from ~A.~%" client)
          (finish-output)
          (disconnect client :close)))))
  
  