X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/9c3ea2c67ff2082780a7323fa5df445469faf0b4..d68da9db1b34dbd6f29a0576bc897a9c49e4d7ed:/event.h diff --git a/event.h b/event.h index 18aa3a6..48c34e6 100644 --- a/event.h +++ b/event.h @@ -31,18 +31,24 @@ #ifndef _EVENT_H_ #define _EVENT_H_ +#ifndef EV_EMBED +# include "ev.h" +#endif + #ifdef __cplusplus extern "C" { #endif -#include "ev.h" - struct event - { - struct ev_io io; +{ + /* libev watchers we map onto */ + union { + struct ev_io io; + struct ev_signal sig; + } iosig; struct ev_timer to; - struct ev_signal sig; + /* compatibility slots */ struct event_base *ev_base; void (*ev_callback)(int, short, void *arg); void *ev_arg; @@ -50,6 +56,8 @@ struct event int ev_pri; int ev_res; short ev_events; + + char initialised; /* flag to work around some idiosynchrasies in the API */ }; #define EV_PERSIST 0x10 @@ -57,7 +65,7 @@ struct event #define EVENT_SIGNAL(ev) ((int) (ev)->ev_fd) #define EVENT_FD(ev) ((int) (ev)->ev_fd) -#define event_initialized(ev) 1 +#define event_initialized(ev) ((ev)->initialised) #define evtimer_add(ev,tv) event_add (ev, tv) #define evtimer_set(ev,cb,data) event_set (ev, -1, 0, cb, data) @@ -115,4 +123,13 @@ int event_base_dispatch (struct event_base *base); int event_base_once (struct event_base *base, int fd, short events, void (*cb)(int, short, void *), void *arg, struct timeval *tv); int event_base_priority_init (struct event_base *base, int fd); +#ifndef EV_EMBED +# include "event_compat.h" +#endif + +#ifdef __cplusplus +} #endif + +#endif +