mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-14 23:05:03 -04:00
event_base_loop and some event logging fixes.
svn:r140
This commit is contained in:
parent
32bed8f9b6
commit
720f7fcc0d
10
event.3
10
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 ,
|
||||
@ -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
15
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;
|
||||
|
1
event.h
1
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)
|
||||
|
6
log.c
6
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));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user