]> granicus.if.org Git - libevent/commitdiff
event_base_loop and some event logging fixes.
authorNiels Provos <provos@gmail.com>
Sat, 2 Apr 2005 08:43:55 +0000 (08:43 +0000)
committerNiels Provos <provos@gmail.com>
Sat, 2 Apr 2005 08:43:55 +0000 (08:43 +0000)
svn:r140

event.3
event.c
event.h
log.c

diff --git a/event.3 b/event.3
index e6d41a582667664e86637aa75553d6b66e5aecfb..bb8b78739aa676ad8cecc9f0fea74b7747157fe3 100644 (file)
--- a/event.3
+++ b/event.3
@@ -34,6 +34,8 @@
 .Nm event_dispatch ,
 .Nm event_loop ,
 .Nm event_loopexit ,
+.Nm event_base_loop ,
+.Nm event_base_loopexit ,
 .Nm event_set ,
 .Nm event_add ,
 .Nm event_del ,
 .Fn "event_loop" "int flags"
 .Ft int
 .Fn "event_loopexit" "struct timeval *tv"
+.Ft int
+.Fn "event_base_loop" "struct event_base *" "int flags"
+.Ft int
+.Fn "event_base_loopexit" "struct event_base *" "struct timeval *tv"
 .Ft void
 .Fn "event_set" "struct event *ev" "int fd" "short event" "void (*fn)(int, short, void *)" "void *arg"
 .Ft int
@@ -421,8 +427,10 @@ When initializing the library via
 an event base is returned.
 This event base can be used in conjunction with calls to
 .Fn event_base_set
+.Fn event_base_dispatch ,
+.Fn event_base_loop ,
 and
-.Fn event_base_dispatch .
+.Fn event_base_loopexit .
 .Fn event_base_set 
 should be called after preparing an event with
 .Fn event_set , 
diff --git a/event.c b/event.c
index 7fec011bb0d04637134ccb2bcda27800e442a619..c632a1098b36d3a6122593e10a4ee8661a381900 100644 (file)
--- a/event.c
+++ b/event.c
@@ -290,6 +290,13 @@ event_loopexit(struct timeval *tv)
                    current_base, tv));
 }
 
+int
+event_base_loopexit(struct event_base *event_base, struct timeval *tv)
+{
+       return (event_once(-1, EV_TIMEOUT, event_loopexit_cb,
+                   event_base, tv));
+}
+
 /* not thread safe */
 
 int
@@ -347,8 +354,10 @@ event_base_loop(struct event_base *base, int flags)
                        timerclear(&tv);
                
                /* If we have no events, we just exit */
-               if (!event_haveevents(base))
+               if (!event_haveevents(base)) {
+                       event_debug(("%s: no events registered.", __func__));
                        return (1);
+               }
 
                res = evsel->dispatch(base, evbase, &tv);
 
@@ -368,6 +377,7 @@ event_base_loop(struct event_base *base, int flags)
                        return (-1);
        }
 
+       event_debug(("%s: asked to terminate loop.", __func__));
        return (0);
 }
 
@@ -715,8 +725,7 @@ event_queue_remove(struct event_base *base, struct event *ev, int queue)
        ev->ev_flags &= ~queue;
        switch (queue) {
        case EVLIST_ACTIVE:
-               if (docount)
-                       base->event_count_active--;
+               base->event_count_active--;
                TAILQ_REMOVE(base->activequeues[ev->ev_pri],
                    ev, ev_active_next);
                break;
diff --git a/event.h b/event.h
index 8ed23aeb9f0076f653a0a6bec4bc0be86106b806..799a266e2d2d161baed8334b34d5582c3f762644 100644 (file)
--- a/event.h
+++ b/event.h
@@ -142,6 +142,7 @@ int event_base_set(struct event_base *, struct event *);
 int event_loop(int);
 int event_base_loop(struct event_base *, int);
 int event_loopexit(struct timeval *);  /* Causes the loop to exit */
+int event_base_loopexit(struct event_base *, struct timeval *);
 
 #define evtimer_add(ev, tv)            event_add(ev, tv)
 #define evtimer_set(ev, cb, arg)       event_set(ev, -1, 0, cb, arg)
diff --git a/log.c b/log.c
index 6b5755f842689f6d67d48f072cbfe97cf5585113..d3e0f69a611a4916430929244ab5fdd88ed17dc7 100644 (file)
--- a/log.c
+++ b/log.c
@@ -162,9 +162,9 @@ _warn_helper(int severity, int log_errno, const char *fmt, va_list ap)
 
        if (log_errno >= 0) {
                len = strlen(buf);
-               if (len < sizeof(buf)-3) {
-                       event_vsnprintf(buf+len, sizeof(buf)-len, ": %s",
-                                       strerror(log_errno));
+               if (len < sizeof(buf) - 3) {
+                       snprintf(buf + len, sizeof(buf) - len, ": %s",
+                           strerror(log_errno));
                }
        }