]> granicus.if.org Git - libevent/commitdiff
r19599@catbus: nickm | 2008-05-05 11:26:18 -0400
authorNick Mathewson <nickm@torproject.org>
Mon, 5 May 2008 15:45:30 +0000 (15:45 +0000)
committerNick Mathewson <nickm@torproject.org>
Mon, 5 May 2008 15:45:30 +0000 (15:45 +0000)
 Turn event_initialized() and friends into a function; add function equivalents for EVENT_FD and EVENT_SIGNAL.

svn:r773

ChangeLog
event.c
include/event2/event.h
include/event2/event_struct.h

index de35c9b1890460852edc5285f8f37a0f15a84108..c2f3ebc60cd0ce65a17a9019fe2a0ab1b8802c87 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -89,6 +89,8 @@ Changes in current version:
  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.
diff --git a/event.c b/event.c
index 6386a942a64688fbf7561f0f25dff074976949ec..568a0afd4663e8f727361a860f6de65a24fbb847 100644 (file)
--- a/event.c
+++ b/event.c
@@ -796,13 +796,32 @@ event_pending(struct event *ev, short event, struct timeval *tv)
        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);
index 4eaf66b2361c53dd53cddb61695b21c5e254e3dc..4073cca4a9bc00485caff7d2d36a27d99dff9370 100644 (file)
@@ -226,7 +226,7 @@ void evperiodic_assign(struct event *ev, struct event_base *base,
  */
 #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.
@@ -254,7 +254,7 @@ void evperiodic_assign(struct event *ev, struct event_base *base,
 #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)     \
@@ -265,7 +265,7 @@ void evperiodic_assign(struct event *ev, struct event_base *base,
        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)
 
 
 /**
@@ -430,12 +430,19 @@ int event_pending(struct event *, short, struct timeval *);
   @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.
index 56e240772c097c071a2ed48f4d81b4a32f5c4805..2871d48659ccf8f6a833488d84f0aa3e6f29655d 100644 (file)
@@ -125,8 +125,8 @@ struct event {
        int ev_flags;
 };
 
-#define EVENT_SIGNAL(ev)       (int)(ev)->ev_fd
-#define EVENT_FD(ev)           (int)(ev)->ev_fd
+#define EVENT_SIGNAL(ev)       ((int)(ev)->ev_fd)
+#define EVENT_FD(ev)           ((int)(ev)->ev_fd)
 
 /*
  * Key-Value pairs.  Can be used for HTTP headers but also for