git.fiddlerwoaroof.com
Raw Blame History
(in-package :fwoar.event-loop)

(defclass chanl-event-loop ()
  ((%queue :initarg :queue :reader queue :initform (make-instance 'chanl:bounded-channel :size *task-depth*))
   (%finish-callbaack :reader finish-cb :writer register-finish-cb)))

(defmethod tick ((event-loop chanl-event-loop))
  (prog1 event-loop
    (let ((task (chanl:recv (queue event-loop))))
      (when task
        (funcall task)))))

(defmethod enqueue ((queue chanl:channel) fn)
  (chanl:send queue fn))