cl-ev

2015-09-24

libev bindings

Upstream URL

github.com/sbryant/cl-ev

Author

Sean Bryant <sean@hackinggibsons.com

License

BSD
README

cl-ev

cl-ev is an attempt at cffi bindings for libev.

API Support

We support the following watchers:

  • Periodic
  • IO
  • Timer
  • Idle

TODO

Support the following watchers:

  • Signal
  • Child
  • Stat
  • Fork

Example Usage

This is a port of the example libev program.

(ql:quickload :ev)
(in-package :ev)

(defparameter *io-handler* (make-instance 'ev-io-watcher))
(defparameter *timer-handler* (make-instance 'ev-timer))
(defparameter *periodic-handler* (make-instance 'ev-periodic))

(defun io-cb (loop watcher events)
  (format t "IO Callback hit! loop ~S watcher ~S events ~S~%" loop watcher events))

(defun timer-cb (loop watcher events)
  (format t "Timer Callback hit! loop ~S watcher ~S events ~S~%" loop watcher events))

(defun periodic-cb (loop watcher events)
  (format t "Periodic Callback hit! loop ~S watcher ~S events ~S~%" loop watcher events))

(defun run-loop ()
  (let ((l (make-instance 'ev-loop)))
    (set-timer l *timer-handler* #'timer-cb 5.5d0)
    (set-io-watcher l *io-handler* 0 EV_READ #'io-cb)
    (set-perodic l *periodic-handler* #'periodic-cb 0.0d0 10.0d0 nil)
    (event-dispatch l)))

Dependencies (2)

  • cffi
  • trivial-garbage

Dependents (0)

    • GitHub
    • Quicklisp