"""
libevent cdef's
"""
from qmsk.net.libc cimport *
cdef extern from "sys/time.h" :
struct timeval :
int tv_sec
int tv_usec
cdef extern from "event2/util.h" :
# XXX: WIN32 !?
ctypedef int evutil_socket_t
# utility methods needed for some internal behaviour
int evutil_socketpair (int domain, int type, int protocol, evutil_socket_t sv[2])
int evutil_make_socket_nonblocking (evutil_socket_t sock)
ctypedef void (*_ev_callback_t)(int, short, void *)
cdef extern from "event2/event_struct.h" :
# bits of internal event struct
struct event :
# internal EVLIST_* flags
short ev_flags
# internal ev_flags, we shouldn't really be using these, but...
enum :
# do not count this event if the event queue is otherwise empty
EVLIST_INTERNAL
cdef extern from "event2/event.h" :
struct event_base :
pass
# struct event :
# pass
struct event_config :
pass
# construct new event_base without setting global event base
event_base *event_base_new ()
# misc event_base stuff
int event_reinit (event_base *)
int event_base_dispatch (event_base *)
char *event_base_get_method (event_base *)
# event_get_supported_methods
# event_config_new
# event_config_free
# event_config_avoid_method
# event_method_feature
# event_base_config_flag
# event_base_get_features
# event_config_require_features
# event_config_set_flag
# event_base_new_with_config
# release event_base, note: does not release resources associated with events (fds, args)
void event_base_free (event_base *)
# event_log_cb
# event_set_log_callback
# map event -> event_base
int event_base_set (event_base *, event *)
# mainloop
enum :
EVLOOP_ONCE
EVLOOP_NONBLOCK
int event_base_loop (event_base *, int)
int event_base_loopexit (event_base *, timeval *)
int event_base_loopbreak (event_base *)
# event flags for event_new/event_cb
enum :
EV_TIMEOUT
EV_READ
EV_WRITE
EV_SIGNAL
EV_PERSIST
EV_ET
# core event assign/new/free
void event_assign (event *, event_base *, evutil_socket_t, short, _ev_callback_t, void *)
event *event_new (event_base *, evutil_socket_t, short, _ev_callback_t, void *)
void event_free (event *)
# one-time event convenience
#int event_base_once (event_base *, evutil_socket_t, short, _ev_callback_t, void *, timeval *)
# add/del event as pending
int event_add (event *, timeval *)
int event_del (event *)
# make an event active - results in callback being called
void event_active (event *, int, short)
# query add/del status
int event_pending (event *, short, timeval *)
# field accessors
evutil_socket_t event_get_fd (event *)
#event_base *event_get_base (event *)
# libevent version
char *event_get_version ()
uint32_t event_get_version_number ()
char *LIBEVENT_VERSION
enum :
LIBEVENT_VERSION_NUMBER
# priority support
enum :
EVENT_MAX_PRIORITIES
int event_base_priority_set (event_base *, int)
int event_priority_set (event *, int)