+ redef fun free `{ event_base_free(self); `}
+end
+
+# Event, libevent's basic unit of operation
+extern class NativeEvent `{ struct event * `}
+
+ # Add to the set of pending events
+ #
+ # TODO support timeout
+ fun add `{ event_add(self, NULL); `}
+
+ # Remove from the set of monitored events
+ fun del `{ event_del(self); `}
+
+ redef fun free `{ event_free(self); `}
+end
+
+# Signal event
+extern class NativeEvSignal
+ super NativeEvent
+
+ new (base: NativeEventBase, signal: Int, handler: EventCallback)
+ import EventCallback.callback `{
+ EventCallback_incr_ref(handler);
+ return evsignal_new(base, signal, signal_cb, handler);
+ `}
+end
+
+# Receiver of event callbacks
+interface EventCallback
+
+ # Callback on an event
+ fun callback(events: Int) do end