qmsk/net/lib/event2/lib.pxd
author Tero Marttila <terom@fixme.fi>
Sat, 26 Sep 2009 21:46:36 +0300
changeset 51 c6b4abfc21da
parent 39 075eaafa80a7
permissions -rw-r--r--
qmsk/net/lib/event2/base.pxd
"""
    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)