27 #ifndef EVENT2_EVENT_H_INCLUDED_ 28 #define EVENT2_EVENT_H_INCLUDED_ 185 #include <event2/visibility.h> 191 #include <event2/event-config.h> 192 #ifdef EVENT__HAVE_SYS_TYPES_H 193 #include <sys/types.h> 195 #ifdef EVENT__HAVE_SYS_TIME_H 196 #include <sys/time.h> 218 #ifdef EVENT_IN_DOXYGEN_
277 #ifdef EVENT_IN_DOXYGEN_
296 #ifdef EVENT_IN_DOXYGEN_
413 #define EVENT_BASE_COUNT_ACTIVE 1U 416 #define EVENT_BASE_COUNT_VIRTUAL 2U 419 #define EVENT_BASE_COUNT_ADDED 4U 662 const struct timeval *max_interval,
int max_callbacks,
706 #define EVENT_LOG_DEBUG 0 707 #define EVENT_LOG_MSG 1 708 #define EVENT_LOG_WARN 2 709 #define EVENT_LOG_ERR 3 714 #define _EVENT_LOG_DEBUG EVENT_LOG_DEBUG 715 #define _EVENT_LOG_MSG EVENT_LOG_MSG 716 #define _EVENT_LOG_WARN EVENT_LOG_WARN 717 #define _EVENT_LOG_ERR EVENT_LOG_ERR 760 #define EVENT_DBG_ALL 0xffffffffu 761 #define EVENT_DBG_NONE 0 799 #define EVLOOP_ONCE 0x01 802 #define EVLOOP_NONBLOCK 0x02 807 #define EVLOOP_NO_EXIT_ON_EMPTY 0x04 924 #define EV_TIMEOUT 0x01 928 #define EV_WRITE 0x04 930 #define EV_SIGNAL 0x08 937 #define EV_PERSIST 0x10 951 #define EV_FINALIZE 0x40 960 #define EV_CLOSED 0x80 968 #define evtimer_assign(ev, b, cb, arg) \ 969 event_assign((ev), (b), -1, 0, (cb), (arg)) 970 #define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg)) 971 #define evtimer_add(ev, tv) event_add((ev), (tv)) 972 #define evtimer_del(ev) event_del(ev) 973 #define evtimer_pending(ev, tv) event_pending((ev), EV_TIMEOUT, (tv)) 974 #define evtimer_initialized(ev) event_initialized(ev) 983 #define evsignal_add(ev, tv) event_add((ev), (tv)) 984 #define evsignal_assign(ev, b, x, cb, arg) \ 985 event_assign((ev), (b), (x), EV_SIGNAL|EV_PERSIST, cb, (arg)) 986 #define evsignal_new(b, x, cb, arg) \ 987 event_new((b), (x), EV_SIGNAL|EV_PERSIST, (cb), (arg)) 988 #define evsignal_del(ev) event_del(ev) 989 #define evsignal_pending(ev, tv) event_pending((ev), EV_SIGNAL, (tv)) 990 #define evsignal_initialized(ev) event_initialized(ev) 1028 EVENT2_EXPORT_SYMBOL
1079 EVENT2_EXPORT_SYMBOL
1121 EVENT2_EXPORT_SYMBOL
1130 EVENT2_EXPORT_SYMBOL
1175 EVENT2_EXPORT_SYMBOL
1177 EVENT2_EXPORT_SYMBOL
1205 EVENT2_EXPORT_SYMBOL
1229 EVENT2_EXPORT_SYMBOL
1241 EVENT2_EXPORT_SYMBOL
1255 EVENT2_EXPORT_SYMBOL
1266 EVENT2_EXPORT_SYMBOL
1276 EVENT2_EXPORT_SYMBOL
1293 EVENT2_EXPORT_SYMBOL
1309 EVENT2_EXPORT_SYMBOL
1318 EVENT2_EXPORT_SYMBOL
1336 EVENT2_EXPORT_SYMBOL
1342 #define event_get_signal(ev) ((int)event_get_fd(ev)) 1348 EVENT2_EXPORT_SYMBOL
1354 EVENT2_EXPORT_SYMBOL
1360 EVENT2_EXPORT_SYMBOL
1366 EVENT2_EXPORT_SYMBOL
1372 EVENT2_EXPORT_SYMBOL
1379 EVENT2_EXPORT_SYMBOL
1389 EVENT2_EXPORT_SYMBOL
1391 struct event_base **base_out, evutil_socket_t *fd_out,
short *events_out,
1407 EVENT2_EXPORT_SYMBOL
1419 EVENT2_EXPORT_SYMBOL
1433 EVENT2_EXPORT_SYMBOL
1437 #define LIBEVENT_VERSION EVENT__VERSION 1440 #define LIBEVENT_VERSION_NUMBER EVENT__NUMERIC_VERSION 1443 #define EVENT_MAX_PRIORITIES 256 1471 EVENT2_EXPORT_SYMBOL
1481 EVENT2_EXPORT_SYMBOL
1492 EVENT2_EXPORT_SYMBOL
1514 EVENT2_EXPORT_SYMBOL
1516 const struct timeval *duration);
1518 #if !defined(EVENT__DISABLE_MM_REPLACEMENT) || defined(EVENT_IN_DOXYGEN_) 1541 EVENT2_EXPORT_SYMBOL
1543 void *(*malloc_fn)(
size_t sz),
1544 void *(*realloc_fn)(
void *ptr,
size_t sz),
1545 void (*free_fn)(
void *ptr));
1548 #define EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED 1561 EVENT2_EXPORT_SYMBOL
1575 EVENT2_EXPORT_SYMBOL
1587 EVENT2_EXPORT_SYMBOL
1620 EVENT2_EXPORT_SYMBOL
1635 EVENT2_EXPORT_SYMBOL
1637 struct timeval *tv);
1651 EVENT2_EXPORT_SYMBOL
1668 EVENT2_EXPORT_SYMBOL
EVENT2_EXPORT_SYMBOL void event_config_free(struct event_config *cfg)
Deallocates all memory associated with an event configuration object.
EVENT2_EXPORT_SYMBOL int event_base_get_max_events(struct event_base *, unsigned int, int)
Get the maximum number of events in a given event_base as specified in the flags. ...
EVENT2_EXPORT_SYMBOL int event_base_gettimeofday_cached(struct event_base *base, struct timeval *tv)
Sets 'tv' to the current time (as returned by gettimeofday()), looking at the cached value in 'base' ...
EVENT2_EXPORT_SYMBOL int event_assign(struct event *, struct event_base *, evutil_socket_t, short, event_callback_fn, void *)
Prepare a new, already-allocated event structure to be added.
EVENT2_EXPORT_SYMBOL int event_priority_set(struct event *, int)
Assign a priority to an event.
Do not check the EVENT_* environment variables when configuring an event_base.
Definition: event.h:539
EVENT2_EXPORT_SYMBOL struct event * event_new(struct event_base *, evutil_socket_t, short, event_callback_fn, void *)
Allocate and asssign a new event structure, ready to be added.
EVENT2_EXPORT_SYMBOL void event_free(struct event *)
Deallocate a struct event * returned by event_new().
EVENT2_EXPORT_SYMBOL short event_get_events(const struct event *ev)
Return the events (EV_READ, EV_WRITE, etc) assigned to an event.
EVENT2_EXPORT_SYMBOL void event_set_log_callback(event_log_cb cb)
Redirect Libevent's log messages.
Configuration for an event_base.
Definition: event.h:295
EVENT2_EXPORT_SYMBOL void * event_get_callback_arg(const struct event *ev)
Return the callback argument assigned to an event.
EVENT2_EXPORT_SYMBOL int event_base_get_features(const struct event_base *base)
Return a bitmask of the features implemented by an event base.
EVENT2_EXPORT_SYMBOL ev_uint32_t event_get_version_number(void)
Return a numeric representation of Libevent's version.
EVENT2_EXPORT_SYMBOL const char * event_get_version(void)
Get the Libevent version.
int(* event_base_foreach_event_cb)(const struct event_base *, const struct event *, void *)
Callback for iterating events in an event base via event_base_foreach_event.
Definition: event.h:1593
EVENT2_EXPORT_SYMBOL int event_config_avoid_method(struct event_config *cfg, const char *method)
Enters an event method that should be avoided into the configuration.
EVENT2_EXPORT_SYMBOL int event_config_require_features(struct event_config *cfg, int feature)
Enters a required event method feature that the application demands.
EVENT2_EXPORT_SYMBOL struct event * event_base_get_running_event(struct event_base *base)
If called from within the callback for an event, returns that event.
void(* event_log_cb)(int severity, const char *msg)
A callback function used to intercept Libevent's log messages.
Definition: event.h:724
EVENT2_EXPORT_SYMBOL void event_debug_unassign(struct event *)
When debugging mode is enabled, informs Libevent that an event should no longer be considered as assi...
EVENT2_EXPORT_SYMBOL struct event_base * event_base_new_with_config(const struct event_config *)
Initialize the event API.
Require an event method where having one event triggered among many is [approximately] an O(1) operat...
Definition: event.h:508
EVENT2_EXPORT_SYMBOL void event_base_dump_events(struct event_base *, FILE *)
Writes a human-readable description of all inserted and/or active events to a provided stdio stream...
Structure to represent a single event.
Definition: event.h:276
EVENT2_EXPORT_SYMBOL size_t event_get_struct_event_size(void)
Return the size of struct event that the Libevent library was compiled with.
Windows only: enable the IOCP dispatcher at startup.
Definition: event.h:546
void(* event_fatal_cb)(int err)
A function to be called if Libevent encounters a fatal internal error.
Definition: event.h:743
event_base_config_flag
A flag passed to event_config_set_flag().
Definition: event.h:529
EVENT2_EXPORT_SYMBOL int event_base_got_break(struct event_base *)
Checks if the event loop was told to abort immediately by event_base_loopbreak(). ...
EVENT2_EXPORT_SYMBOL int event_base_loopcontinue(struct event_base *)
Tell the active event_base_loop() to scan for new events immediately.
EVENT2_EXPORT_SYMBOL void event_base_free_nofinalize(struct event_base *)
As event_free, but do not run finalizers.
EVENT2_EXPORT_SYMBOL int event_gettime_monotonic(struct event_base *base, struct timeval *tp)
Query the current monotonic time from a the timer for a struct event_base.
EVENT2_EXPORT_SYMBOL int event_base_got_exit(struct event_base *)
Checks if the event loop was told to exit by event_base_loopexit().
EVENT2_EXPORT_SYMBOL const char * event_base_get_method(const struct event_base *)
Get the kernel event notification mechanism used by Libevent.
#define evutil_socket_t
A type wide enough to hold the output of "socket()" or "accept()".
Definition: util.h:312
EVENT2_EXPORT_SYMBOL int event_add(struct event *ev, const struct timeval *timeout)
Add an event to the set of pending events.
EVENT2_EXPORT_SYMBOL void event_enable_debug_logging(ev_uint32_t which)
Turn on debugging logs and have them sent to the default log handler.
EVENT2_EXPORT_SYMBOL int event_base_dispatch(struct event_base *)
Event dispatching loop.
EVENT2_EXPORT_SYMBOL void libevent_global_shutdown(void)
Release up all globally-allocated resources allocated by Libevent.
EVENT2_EXPORT_SYMBOL int event_base_once(struct event_base *, evutil_socket_t, short, event_callback_fn, void *, const struct timeval *)
Schedule a one-time event.
EVENT2_EXPORT_SYMBOL int event_del(struct event *)
Remove an event from the set of monitored events.
EVENT2_EXPORT_SYMBOL int event_base_loop(struct event_base *, int)
Wait for events to become active, and run their callbacks.
EVENT2_EXPORT_SYMBOL int event_initialized(const struct event *ev)
Test if an event structure might be initialized.
EVENT2_EXPORT_SYMBOL void event_base_active_by_fd(struct event_base *base, evutil_socket_t fd, short events)
Activates all pending events for the given fd and event mask.
EVENT2_EXPORT_SYMBOL const struct timeval * event_base_init_common_timeout(struct event_base *base, const struct timeval *duration)
Prepare an event_base to use a large number of timeouts with the same duration.
EVENT2_EXPORT_SYMBOL int event_config_set_max_dispatch_interval(struct event_config *cfg, const struct timeval *max_interval, int max_callbacks, int min_priority)
Record an interval and/or a number of callbacks after which the event base should check for new event...
event_method_feature
A flag used to describe which features an event_base (must) provide.
Definition: event.h:501
EVENT2_EXPORT_SYMBOL void event_enable_debug_mode(void)
Enable some relatively expensive debugging checks in Libevent that would normally be turned off...
void(* event_callback_fn)(evutil_socket_t, short, void *)
A callback function for an event.
Definition: event.h:1004
EVENT2_EXPORT_SYMBOL void event_get_assignment(const struct event *event, struct event_base **base_out, evutil_socket_t *fd_out, short *events_out, event_callback_fn *callback_out, void **arg_out)
Extract all of arguments given to construct a given event.
Common convenience functions for cross-platform portability and related socket manipulations.
EVENT2_EXPORT_SYMBOL int event_del_block(struct event *ev)
As event_del(), but always blocks while the event's callback is running in another thread...
EVENT2_EXPORT_SYMBOL int event_base_get_num_events(struct event_base *, unsigned int)
Gets the number of events in event_base, as specified in the flags.
EVENT2_EXPORT_SYMBOL int event_base_set(struct event_base *, struct event *)
Associate a different event base with an event.
Ordinarily, Libevent implements its time and timeout code using the fastest monotonic timer that we h...
Definition: event.h:573
EVENT2_EXPORT_SYMBOL struct event_base * event_get_base(const struct event *ev)
Get the event_base associated with an event.
EVENT2_EXPORT_SYMBOL int event_remove_timer(struct event *ev)
Remove a timer from a pending event without removing the event itself.
EVENT2_EXPORT_SYMBOL event_callback_fn event_get_callback(const struct event *ev)
Return the callback assigned to an event.
Do not allocate a lock for the event base, even if we have locking set up.
Definition: event.h:536
EVENT2_EXPORT_SYMBOL int event_config_set_flag(struct event_config *cfg, int flag)
Sets one or more flags to configure what parts of the eventual event_base will be initialized...
EVENT2_EXPORT_SYMBOL int event_base_loopexit(struct event_base *, const struct timeval *)
Exit the event loop after the specified time.
EVENT2_EXPORT_SYMBOL int event_base_foreach_event(struct event_base *base, event_base_foreach_event_cb fn, void *arg)
Iterate over all added or active events events in an event loop, and invoke a given callback on each ...
void(* event_finalize_callback_fn)(struct event *, void *)
Callback type for event_finalize and event_free_finalize().
Definition: event.h:1140
EVENT2_EXPORT_SYMBOL void event_set_fatal_callback(event_fatal_cb cb)
Override Libevent's behavior in the event of a fatal internal error.
EVENT2_EXPORT_SYMBOL void event_active(struct event *ev, int res, short ncalls)
Make an event active.
Require an event method that allows you to use EV_CLOSED to detect connection close without the neces...
Definition: event.h:518
EVENT2_EXPORT_SYMBOL void event_base_active_by_signal(struct event_base *base, int sig)
Activates all pending signals with a given signal number.
EVENT2_EXPORT_SYMBOL int event_base_get_npriorities(struct event_base *eb)
Get the number of different event priorities.
EVENT2_EXPORT_SYMBOL int event_config_set_num_cpus_hint(struct event_config *cfg, int cpus)
Records a hint for the number of CPUs in the system.
EVENT2_EXPORT_SYMBOL int event_reinit(struct event_base *base)
Reinitialize the event base after a fork.
EVENT2_EXPORT_SYMBOL int event_del_noblock(struct event *ev)
As event_del(), but never blocks while the event's callback is running in another thread...
EVENT2_EXPORT_SYMBOL void * event_self_cbarg(void)
Return a value used to specify that the event itself must be used as the callback argument...
Instead of checking the current time every time the event loop is ready to run timeout callbacks...
Definition: event.h:550
EVENT2_EXPORT_SYMBOL const char ** event_get_supported_methods(void)
Gets all event notification mechanisms supported by Libevent.
If we are using the epoll backend, this flag says that it is safe to use Libevent's internal change-l...
Definition: event.h:566
EVENT2_EXPORT_SYMBOL void event_base_free(struct event_base *)
Deallocate all memory associated with an event_base, and free the base.
EVENT2_EXPORT_SYMBOL struct event_base * event_base_new(void)
Create and return a new event_base to use with the rest of Libevent.
EVENT2_EXPORT_SYMBOL int event_get_priority(const struct event *ev)
Return the priority of an event.
EVENT2_EXPORT_SYMBOL int event_base_priority_init(struct event_base *, int)
Set the number of different event priorities.
EVENT2_EXPORT_SYMBOL void event_set_mem_functions(void *(*malloc_fn)(size_t sz), void *(*realloc_fn)(void *ptr, size_t sz), void(*free_fn)(void *ptr))
Override the functions that Libevent uses for memory management.
EVENT2_EXPORT_SYMBOL struct event_config * event_config_new(void)
Allocates a new event configuration object.
EVENT2_EXPORT_SYMBOL evutil_socket_t event_get_fd(const struct event *ev)
Get the socket or signal assigned to an event, or -1 if the event has no socket.
Structure to hold information and state for a Libevent dispatch loop.
Definition: event.h:217
EVENT2_EXPORT_SYMBOL int event_base_loopbreak(struct event_base *)
Abort the active event_base_loop() immediately.
EVENT2_EXPORT_SYMBOL int event_pending(const struct event *ev, short events, struct timeval *tv)
Checks if a specific event is pending or scheduled.
Require an event method that allows edge-triggered events with EV_ET.
Definition: event.h:503
EVENT2_EXPORT_SYMBOL int event_base_update_cache_time(struct event_base *base)
Update cached_tv in the 'base' to the current time.
Require an event method that allows file descriptors as well as sockets.
Definition: event.h:511