event_base_loop and some event logging fixes.

svn:r140
This commit is contained in:
Niels Provos 2005-04-02 08:43:55 +00:00
parent 32bed8f9b6
commit 720f7fcc0d
4 changed files with 25 additions and 7 deletions

10
event.3
View File

@ -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 ,
@ -81,6 +83,10 @@
.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 ,

15
event.c
View File

@ -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;

View File

@ -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)

6
log.c
View File

@ -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));
}
}