summaryrefslogtreecommitdiff
path: root/ev.h
diff options
context:
space:
mode:
authorroot <root>2007-11-04 00:24:16 +0000
committerroot <root>2007-11-04 00:24:16 +0000
commit678c8c54d0ce967d8f1db3e575aed61879279975 (patch)
treea2feeabbc2a22bd63f6395361adb80230c1d903b /ev.h
parent60a7a3c0029fc0a57c6548e3175af0a362a37a52 (diff)
wow the event api is broken
Diffstat (limited to 'ev.h')
-rw-r--r--ev.h28
1 files changed, 23 insertions, 5 deletions
diff --git a/ev.h b/ev.h
index 208ee70..d98fe8e 100644
--- a/ev.h
+++ b/ev.h
@@ -44,8 +44,12 @@ typedef double ev_tstamp;
# define EV_MAXPRI +2
#endif
+#ifndef EV_MULTIPLICITY
+# define EV_MULTIPLICITY 1
+#endif
+
/* support multiple event loops? */
-#ifdef EV_MULTIPLICITY
+#if EV_MULTIPLICITY
struct ev_loop;
# define EV_P struct ev_loop *loop
# define EV_P_ EV_P,
@@ -56,7 +60,6 @@ struct ev_loop;
# define EV_P_
# define EV_A
# define EV_A_
-
#endif
/* eventmask, revents, events... */
@@ -155,6 +158,9 @@ struct ev_io
struct ev_signal
{
EV_WATCHER_LIST (ev_signal);
+#if EV_MULTIPLICITY
+ struct ev_loop *loop;
+#endif
int signum; /* ro */
};
@@ -201,9 +207,8 @@ struct ev_child
#define EVMETHOD_DEVPOLL 16 /* NYI */
#define EVMETHOD_PORT 32 /* NYI */
#define EVMETHOD_ANY ~0 /* any method, do not consult env */
+
#if EV_PROTOTYPES
-int ev_method (EV_P);
-int ev_init (EV_P_ int methods); /* returns ev_method */
int ev_version_major (void);
int ev_version_minor (void);
@@ -213,13 +218,26 @@ void ev_fork_parent (void);
void ev_fork_child (void);
ev_tstamp ev_time (void);
+
+# if EV_MULTIPLICITY
+struct ev_loop *ev_loop_new (int methods);
+void ev_loop_delete (EV_P);
+# else
+int ev_init (int methods); /* returns ev_method */
+# endif
+
+int ev_method (EV_P);
+
#endif
#define EVLOOP_NONBLOCK 1 /* do not block/wait */
#define EVLOOP_ONESHOT 2 /* block *once* only */
+#define EVUNLOOP_ONCE 1 /* unloop once */
+#define EVUNLOOP_ALL 2 /* unloop all loops */
+
#if EV_PROTOTYPES
void ev_loop (EV_P_ int flags);
-void ev_unloop (EV_P_ int status); /* set to 1 to break out of event loop, set to 2 to break out of all event loops */
+void ev_unloop (EV_P_ int how); /* set to 1 to break out of event loop, set to 2 to break out of all event loops */
ev_tstamp ev_now (EV_P); /* time w.r.t. timers and the eventloop, updated after each poll */