o separate signal events from io events; making the code less complex.
o support for periodic timeouts
o support for virtual HTTP hosts.
+ o turn event_initialized() into a function, and add function equivalents to EVENT_SIGNAL and EVENT_FD so that people don't need to include event_struct.h
+
Changes in 1.4.0:
o allow \r or \n individually to separate HTTP headers instead of the standard "\r\n"; from Charles Kerr.
return (flags & event);
}
+int
+_event_initialized(struct event *ev, int need_fd)
+{
+ if (!(ev->ev_flags & EVLIST_INIT))
+ return 0;
+#ifdef WIN32
+ /* XXX Is this actually a sensible thing to check? -NM */
+ if (need_fd && (ev)->ev_fd == INVALID_HANDLE_VALUE)
+ return 0;
+#endif
+ return 1;
+}
+
+evutil_socket_t
+event_get_fd(struct event *ev)
+{
+ return ev->ev_fd;
+}
+
int
event_add(struct event *ev, struct timeval *tv)
{
int res;
EVTHREAD_ACQUIRE_LOCK(ev->ev_base, EVTHREAD_WRITE, th_base_lock);
-
+
res = event_add_internal(ev, tv);
EVTHREAD_RELEASE_LOCK(ev->ev_base, EVTHREAD_WRITE, th_base_lock);
*/
#define evtimer_del(ev) event_del(ev)
#define evtimer_pending(ev, tv) event_pending(ev, EV_TIMEOUT, tv)
-#define evtimer_initialized(ev) ((ev)->ev_flags & EVLIST_INIT)
+#define evtimer_initialized(ev) _event_initialized((ev), 0)
/**
* Add a timeout event.
#define timeout_del(ev) event_del(ev)
#define timeout_pending(ev, tv) event_pending(ev, EV_TIMEOUT, tv)
-#define timeout_initialized(ev) ((ev)->ev_flags & EVLIST_INIT)
+#define timeout_initialized(ev) _event_initialized((ev), 0)
#define signal_add(ev, tv) event_add(ev, tv)
#define signal_set(ev, x, cb, arg) \
event_new(b, x, EV_SIGNAL|EV_PERSIST, cb, arg)
#define signal_del(ev) event_del(ev)
#define signal_pending(ev, tv) event_pending(ev, EV_SIGNAL, tv)
-#define signal_initialized(ev) ((ev)->ev_flags & EVLIST_INIT)
+#define signal_initialized(ev) _event_initialized((ev), 0)
/**
@return 1 if the structure has been initialized, or 0 if it has not been
initialized
*/
-#ifdef WIN32
-#define event_initialized(ev) ((ev)->ev_flags & EVLIST_INIT && (ev)->ev_fd != (int)INVALID_HANDLE_VALUE)
-#else
-#define event_initialized(ev) ((ev)->ev_flags & EVLIST_INIT)
-#endif
+#define event_initialized(ev) _event_initialized((ev), 1)
+
+int _event_initialized(struct event *, int check_fd);
+
+/**
+ Get the signal number assigned to an event.
+*/
+#define event_get_signal(ev) ((int)event_get_fd(ev))
+/**
+ Get the socket assigned to an event.
+*/
+evutil_socket_t event_get_fd(struct event *ev);
/**
Get the libevent version number.