diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-10-03 11:09:44 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-04-05 12:36:05 -0400 |
commit | 39cb04335f9fd5c3268c808bac549f531fe389a3 (patch) | |
tree | 493fabac57156ef8fe53304ded4ba50e25adf3dd /src/common/compat_libevent.c | |
parent | f0d2733b468984a7749fb7d506318200ca19e48f (diff) | |
download | tor-39cb04335f9fd5c3268c808bac549f531fe389a3.tar.gz tor-39cb04335f9fd5c3268c808bac549f531fe389a3.zip |
Add wrappers for event_base_loopexit and event_base_loopbreak.
Diffstat (limited to 'src/common/compat_libevent.c')
-rw-r--r-- | src/common/compat_libevent.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c index f453a8e87c..cb311ea462 100644 --- a/src/common/compat_libevent.c +++ b/src/common/compat_libevent.c @@ -363,6 +363,38 @@ tor_libevent_free_all(void) the_event_base = NULL; } +/** + * Run the event loop for the provided event_base, handling events until + * something stops it. If <b>once</b> is set, then just poll-and-run + * once, then exit. Return 0 on success, -1 if an error occurred, or 1 + * if we exited because no events were pending or active. + * + * This isn't reentrant or multithreaded. + */ +int +tor_libevent_run_event_loop(struct event_base *base, int once) +{ + const int flags = once ? EVLOOP_ONCE : 0; + return event_base_loop(base, flags); +} + +/** Tell the event loop to exit after <b>delay</b>. If <b>delay</b> is NULL, + * instead exit after we're done running the currently active events. */ +void +tor_libevent_exit_loop_after_delay(struct event_base *base, + const struct timeval *delay) +{ + event_base_loopexit(base, delay); +} + +/** Tell the event loop to exit after running whichever callback is currently + * active. */ +void +tor_libevent_exit_loop_after_callback(struct event_base *base) +{ + event_base_loopbreak(base); +} + #if defined(LIBEVENT_VERSION_NUMBER) && \ LIBEVENT_VERSION_NUMBER >= V(2,1,1) && \ !defined(TOR_UNIT_TESTS) |