libevent
event.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
3  * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 3. The name of the author may not be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 #ifndef EVENT2_EVENT_H_INCLUDED_
28 #define EVENT2_EVENT_H_INCLUDED_
29 
185 #include <event2/visibility.h>
186 
187 #ifdef __cplusplus
188 extern "C" {
189 #endif
190 
191 #include <event2/event-config.h>
192 #ifdef EVENT__HAVE_SYS_TYPES_H
193 #include <sys/types.h>
194 #endif
195 #ifdef EVENT__HAVE_SYS_TIME_H
196 #include <sys/time.h>
197 #endif
198 
199 #include <stdio.h>
200 
201 /* For int types. */
202 #include <event2/util.h>
203 
218 #ifdef EVENT_IN_DOXYGEN_
219 {/*Empty body so that doxygen will generate documentation here.*/}
220 #endif
221 ;
222 
276 struct event
277 #ifdef EVENT_IN_DOXYGEN_
278 {/*Empty body so that doxygen will generate documentation here.*/}
279 #endif
280 ;
281 
296 #ifdef EVENT_IN_DOXYGEN_
297 {/*Empty body so that doxygen will generate documentation here.*/}
298 #endif
299 ;
300 
321 EVENT2_EXPORT_SYMBOL
322 void event_enable_debug_mode(void);
323 
333 EVENT2_EXPORT_SYMBOL
334 void event_debug_unassign(struct event *);
335 
343 EVENT2_EXPORT_SYMBOL
344 struct event_base *event_base_new(void);
345 
356 EVENT2_EXPORT_SYMBOL
357 int event_reinit(struct event_base *base);
358 
372 EVENT2_EXPORT_SYMBOL
373 int event_base_dispatch(struct event_base *);
374 
381 EVENT2_EXPORT_SYMBOL
382 const char *event_base_get_method(const struct event_base *);
383 
396 EVENT2_EXPORT_SYMBOL
397 const char **event_get_supported_methods(void);
398 
402 EVENT2_EXPORT_SYMBOL
403 int event_gettime_monotonic(struct event_base *base, struct timeval *tp);
404 
413 #define EVENT_BASE_COUNT_ACTIVE 1U
414 
416 #define EVENT_BASE_COUNT_VIRTUAL 2U
417 
419 #define EVENT_BASE_COUNT_ADDED 4U
420 
440 EVENT2_EXPORT_SYMBOL
441 int event_base_get_num_events(struct event_base *, unsigned int);
442 
453 EVENT2_EXPORT_SYMBOL
454 int event_base_get_max_events(struct event_base *, unsigned int, int);
455 
466 EVENT2_EXPORT_SYMBOL
467 struct event_config *event_config_new(void);
468 
474 EVENT2_EXPORT_SYMBOL
475 void event_config_free(struct event_config *cfg);
476 
489 EVENT2_EXPORT_SYMBOL
490 int event_config_avoid_method(struct event_config *cfg, const char *method);
491 
519 };
520 
551 
567 
574 };
575 
583 EVENT2_EXPORT_SYMBOL
584 int event_base_get_features(const struct event_base *base);
585 
608 EVENT2_EXPORT_SYMBOL
609 int event_config_require_features(struct event_config *cfg, int feature);
610 
617 EVENT2_EXPORT_SYMBOL
618 int event_config_set_flag(struct event_config *cfg, int flag);
619 
629 EVENT2_EXPORT_SYMBOL
630 int event_config_set_num_cpus_hint(struct event_config *cfg, int cpus);
631 
660 EVENT2_EXPORT_SYMBOL
662  const struct timeval *max_interval, int max_callbacks,
663  int min_priority);
664 
677 EVENT2_EXPORT_SYMBOL
678 struct event_base *event_base_new_with_config(const struct event_config *);
679 
691 EVENT2_EXPORT_SYMBOL
692 void event_base_free(struct event_base *);
693 
700 EVENT2_EXPORT_SYMBOL
702 
706 #define EVENT_LOG_DEBUG 0
707 #define EVENT_LOG_MSG 1
708 #define EVENT_LOG_WARN 2
709 #define EVENT_LOG_ERR 3
710 
712 /* Obsolete names: these are deprecated, but older programs might use them.
713  * They violate the reserved-identifier namespace. */
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
718 
724 typedef void (*event_log_cb)(int severity, const char *msg);
735 EVENT2_EXPORT_SYMBOL
737 
743 typedef void (*event_fatal_cb)(int err);
744 
757 EVENT2_EXPORT_SYMBOL
759 
760 #define EVENT_DBG_ALL 0xffffffffu
761 #define EVENT_DBG_NONE 0
762 
777 EVENT2_EXPORT_SYMBOL
778 void event_enable_debug_logging(ev_uint32_t which);
779 
789 EVENT2_EXPORT_SYMBOL
790 int event_base_set(struct event_base *, struct event *);
791 
799 #define EVLOOP_ONCE 0x01
800 
802 #define EVLOOP_NONBLOCK 0x02
803 
807 #define EVLOOP_NO_EXIT_ON_EMPTY 0x04
808 
828 EVENT2_EXPORT_SYMBOL
829 int event_base_loop(struct event_base *, int);
830 
846 EVENT2_EXPORT_SYMBOL
847 int event_base_loopexit(struct event_base *, const struct timeval *);
848 
862 EVENT2_EXPORT_SYMBOL
863 int event_base_loopbreak(struct event_base *);
864 
882 EVENT2_EXPORT_SYMBOL
883 int event_base_loopcontinue(struct event_base *);
884 
897 EVENT2_EXPORT_SYMBOL
898 int event_base_got_exit(struct event_base *);
899 
912 EVENT2_EXPORT_SYMBOL
913 int event_base_got_break(struct event_base *);
914 
924 #define EV_TIMEOUT 0x01
925 
926 #define EV_READ 0x02
927 
928 #define EV_WRITE 0x04
929 
930 #define EV_SIGNAL 0x08
931 
937 #define EV_PERSIST 0x10
938 
939 #define EV_ET 0x20
940 
951 #define EV_FINALIZE 0x40
952 
960 #define EV_CLOSED 0x80
961 
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)
975 
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)
991 
1004 typedef void (*event_callback_fn)(evutil_socket_t, short, void *);
1005 
1028 EVENT2_EXPORT_SYMBOL
1029 void *event_self_cbarg(void);
1030 
1079 EVENT2_EXPORT_SYMBOL
1080 struct event *event_new(struct event_base *, evutil_socket_t, short, event_callback_fn, void *);
1081 
1082 
1121 EVENT2_EXPORT_SYMBOL
1122 int event_assign(struct event *, struct event_base *, evutil_socket_t, short, event_callback_fn, void *);
1123 
1130 EVENT2_EXPORT_SYMBOL
1131 void event_free(struct event *);
1132 
1140 typedef void (*event_finalize_callback_fn)(struct event *, void *);
1175 EVENT2_EXPORT_SYMBOL
1176 int event_finalize(unsigned, struct event *, event_finalize_callback_fn);
1177 EVENT2_EXPORT_SYMBOL
1178 int event_free_finalize(unsigned, struct event *, event_finalize_callback_fn);
1205 EVENT2_EXPORT_SYMBOL
1206 int event_base_once(struct event_base *, evutil_socket_t, short, event_callback_fn, void *, const struct timeval *);
1207 
1229 EVENT2_EXPORT_SYMBOL
1230 int event_add(struct event *ev, const struct timeval *timeout);
1231 
1241 EVENT2_EXPORT_SYMBOL
1242 int event_remove_timer(struct event *ev);
1243 
1255 EVENT2_EXPORT_SYMBOL
1256 int event_del(struct event *);
1257 
1266 EVENT2_EXPORT_SYMBOL
1267 int event_del_noblock(struct event *ev);
1276 EVENT2_EXPORT_SYMBOL
1277 int event_del_block(struct event *ev);
1278 
1293 EVENT2_EXPORT_SYMBOL
1294 void event_active(struct event *ev, int res, short ncalls);
1295 
1309 EVENT2_EXPORT_SYMBOL
1310 int event_pending(const struct event *ev, short events, struct timeval *tv);
1311 
1318 EVENT2_EXPORT_SYMBOL
1319 struct event *event_base_get_running_event(struct event_base *base);
1320 
1336 EVENT2_EXPORT_SYMBOL
1337 int event_initialized(const struct event *ev);
1338 
1342 #define event_get_signal(ev) ((int)event_get_fd(ev))
1343 
1348 EVENT2_EXPORT_SYMBOL
1349 evutil_socket_t event_get_fd(const struct event *ev);
1350 
1354 EVENT2_EXPORT_SYMBOL
1355 struct event_base *event_get_base(const struct event *ev);
1356 
1360 EVENT2_EXPORT_SYMBOL
1361 short event_get_events(const struct event *ev);
1362 
1366 EVENT2_EXPORT_SYMBOL
1367 event_callback_fn event_get_callback(const struct event *ev);
1368 
1372 EVENT2_EXPORT_SYMBOL
1373 void *event_get_callback_arg(const struct event *ev);
1374 
1379 EVENT2_EXPORT_SYMBOL
1380 int event_get_priority(const struct event *ev);
1381 
1389 EVENT2_EXPORT_SYMBOL
1390 void event_get_assignment(const struct event *event,
1391  struct event_base **base_out, evutil_socket_t *fd_out, short *events_out,
1392  event_callback_fn *callback_out, void **arg_out);
1393 
1407 EVENT2_EXPORT_SYMBOL
1408 size_t event_get_struct_event_size(void);
1409 
1419 EVENT2_EXPORT_SYMBOL
1420 const char *event_get_version(void);
1421 
1433 EVENT2_EXPORT_SYMBOL
1434 ev_uint32_t event_get_version_number(void);
1435 
1437 #define LIBEVENT_VERSION EVENT__VERSION
1438 
1440 #define LIBEVENT_VERSION_NUMBER EVENT__NUMERIC_VERSION
1441 
1443 #define EVENT_MAX_PRIORITIES 256
1444 
1471 EVENT2_EXPORT_SYMBOL
1472 int event_base_priority_init(struct event_base *, int);
1473 
1481 EVENT2_EXPORT_SYMBOL
1482 int event_base_get_npriorities(struct event_base *eb);
1483 
1492 EVENT2_EXPORT_SYMBOL
1493 int event_priority_set(struct event *, int);
1494 
1514 EVENT2_EXPORT_SYMBOL
1515 const struct timeval *event_base_init_common_timeout(struct event_base *base,
1516  const struct timeval *duration);
1517 
1518 #if !defined(EVENT__DISABLE_MM_REPLACEMENT) || defined(EVENT_IN_DOXYGEN_)
1519 
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
1549 #endif
1550 
1561 EVENT2_EXPORT_SYMBOL
1562 void event_base_dump_events(struct event_base *, FILE *);
1563 
1564 
1575 EVENT2_EXPORT_SYMBOL
1576 void event_base_active_by_fd(struct event_base *base, evutil_socket_t fd, short events);
1577 
1587 EVENT2_EXPORT_SYMBOL
1588 void event_base_active_by_signal(struct event_base *base, int sig);
1589 
1593 typedef int (*event_base_foreach_event_cb)(const struct event_base *, const struct event *, void *);
1594 
1620 EVENT2_EXPORT_SYMBOL
1621 int event_base_foreach_event(struct event_base *base, event_base_foreach_event_cb fn, void *arg);
1622 
1623 
1635 EVENT2_EXPORT_SYMBOL
1637  struct timeval *tv);
1638 
1651 EVENT2_EXPORT_SYMBOL
1652 int event_base_update_cache_time(struct event_base *base);
1653 
1668 EVENT2_EXPORT_SYMBOL
1669 void libevent_global_shutdown(void);
1670 
1671 #ifdef __cplusplus
1672 }
1673 #endif
1674 
1675 #endif /* EVENT2_EVENT_H_INCLUDED_ */
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 &#39;tv&#39; to the current time (as returned by gettimeofday()), looking at the cached value in &#39;base&#39; ...
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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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 &#39;base&#39; to the current time.
Require an event method that allows file descriptors as well as sockets.
Definition: event.h:511