"Fossies" - the Fresh Open Source Software Archive

Member "libev-4.33/event.h" (25 Oct 2018, 6252 Bytes) of package /linux/misc/libev-4.33.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "event.h" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * libevent compatibility header, only core events supported
    3  *
    4  * Copyright (c) 2007,2008,2010,2012 Marc Alexander Lehmann <libev@schmorp.de>
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without modifica-
    8  * tion, are permitted provided that the following conditions are met:
    9  *
   10  *   1.  Redistributions of source code must retain the above copyright notice,
   11  *       this list of conditions and the following disclaimer.
   12  *
   13  *   2.  Redistributions in binary form must reproduce the above copyright
   14  *       notice, this list of conditions and the following disclaimer in the
   15  *       documentation and/or other materials provided with the distribution.
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
   18  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
   19  * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
   20  * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
   21  * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   22  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
   23  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
   25  * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   26  * OF THE POSSIBILITY OF SUCH DAMAGE.
   27  *
   28  * Alternatively, the contents of this file may be used under the terms of
   29  * the GNU General Public License ("GPL") version 2 or any later version,
   30  * in which case the provisions of the GPL are applicable instead of
   31  * the above. If you wish to allow the use of your version of this file
   32  * only under the terms of the GPL and not to allow others to use your
   33  * version of this file under the BSD license, indicate your decision
   34  * by deleting the provisions above and replace them with the notice
   35  * and other provisions required by the GPL. If you do not delete the
   36  * provisions above, a recipient may use your version of this file under
   37  * either the BSD or the GPL.
   38  */
   39 
   40 #ifndef EVENT_H_
   41 #define EVENT_H_
   42 
   43 #ifdef EV_H
   44 # include EV_H
   45 #else
   46 # include "ev.h"
   47 #endif
   48 
   49 #ifndef EVLOOP_NONBLOCK
   50 # define EVLOOP_NONBLOCK EVRUN_NOWAIT
   51 #endif
   52 #ifndef EVLOOP_ONESHOT
   53 # define EVLOOP_ONESHOT EVRUN_ONCE
   54 #endif
   55 #ifndef EV_TIMEOUT
   56 # define EV_TIMEOUT EV_TIMER
   57 #endif
   58 
   59 #ifdef __cplusplus
   60 extern "C" {
   61 #endif
   62 
   63 /* we need sys/time.h for struct timeval only */
   64 #if !defined (WIN32) || defined (__MINGW32__)
   65 # include <time.h> /* mingw seems to need this, for whatever reason */
   66 # include <sys/time.h>
   67 #endif
   68 
   69 struct event_base;
   70 
   71 #define EVLIST_TIMEOUT  0x01
   72 #define EVLIST_INSERTED 0x02
   73 #define EVLIST_SIGNAL   0x04
   74 #define EVLIST_ACTIVE   0x08
   75 #define EVLIST_INTERNAL 0x10
   76 #define EVLIST_INIT     0x80
   77 
   78 typedef void (*event_callback_fn)(int, short, void *);
   79 
   80 struct event
   81 {
   82   /* libev watchers we map onto */
   83   union {
   84     struct ev_io io;
   85     struct ev_signal sig;
   86   } iosig;
   87   struct ev_timer to;
   88 
   89   /* compatibility slots */
   90   struct event_base *ev_base;
   91   event_callback_fn ev_callback;
   92   void *ev_arg;
   93   int ev_fd;
   94   int ev_pri;
   95   int ev_res;
   96   int ev_flags;
   97   short ev_events;
   98 };
   99 
  100 event_callback_fn event_get_callback (const struct event *ev);
  101 
  102 #define EV_READ                    EV_READ
  103 #define EV_WRITE                   EV_WRITE
  104 #define EV_PERSIST                 0x10
  105 #define EV_ET                      0x20 /* nop */
  106 
  107 #define EVENT_SIGNAL(ev)           ((int) (ev)->ev_fd)
  108 #define EVENT_FD(ev)               ((int) (ev)->ev_fd)
  109 
  110 #define event_initialized(ev)      ((ev)->ev_flags & EVLIST_INIT)
  111 
  112 #define evtimer_add(ev,tv)         event_add (ev, tv)
  113 #define evtimer_set(ev,cb,data)    event_set (ev, -1, 0, cb, data)
  114 #define evtimer_del(ev)            event_del (ev)
  115 #define evtimer_pending(ev,tv)     event_pending (ev, EV_TIMEOUT, tv)
  116 #define evtimer_initialized(ev)    event_initialized (ev)
  117 
  118 #define timeout_add(ev,tv)         evtimer_add (ev, tv)
  119 #define timeout_set(ev,cb,data)    evtimer_set (ev, cb, data)
  120 #define timeout_del(ev)            evtimer_del (ev)
  121 #define timeout_pending(ev,tv)     evtimer_pending (ev, tv)
  122 #define timeout_initialized(ev)    evtimer_initialized (ev)
  123 
  124 #define signal_add(ev,tv)          event_add (ev, tv)
  125 #define signal_set(ev,sig,cb,data) event_set (ev, sig, EV_SIGNAL | EV_PERSIST, cb, data)
  126 #define signal_del(ev)             event_del (ev)
  127 #define signal_pending(ev,tv)      event_pending (ev, EV_SIGNAL, tv)
  128 #define signal_initialized(ev)     event_initialized (ev)
  129 
  130 const char *event_get_version (void);
  131 const char *event_get_method (void);
  132 
  133 void *event_init (void);
  134 void event_base_free (struct event_base *base);
  135 
  136 #define EVLOOP_ONCE      EVLOOP_ONESHOT
  137 int event_loop (int);
  138 int event_loopexit (struct timeval *tv);
  139 int event_dispatch (void);
  140 
  141 #define _EVENT_LOG_DEBUG 0
  142 #define _EVENT_LOG_MSG   1
  143 #define _EVENT_LOG_WARN  2
  144 #define _EVENT_LOG_ERR   3
  145 typedef void (*event_log_cb)(int severity, const char *msg);
  146 void event_set_log_callback(event_log_cb cb);
  147 
  148 void event_set (struct event *ev, int fd, short events, void (*cb)(int, short, void *), void *arg);
  149 int event_once (int fd, short events, void (*cb)(int, short, void *), void *arg, struct timeval *tv);
  150 
  151 int event_add (struct event *ev, struct timeval *tv);
  152 int event_del (struct event *ev);
  153 void event_active (struct event *ev, int res, short ncalls); /* ncalls is being ignored */
  154 
  155 int event_pending (struct event *ev, short, struct timeval *tv);
  156 
  157 int event_priority_init (int npri);
  158 int event_priority_set (struct event *ev, int pri);
  159 
  160 struct event_base *event_base_new (void);
  161 const char *event_base_get_method (const struct event_base *);
  162 int event_base_set (struct event_base *base, struct event *ev);
  163 int event_base_loop (struct event_base *base, int);
  164 int event_base_loopexit (struct event_base *base, struct timeval *tv);
  165 int event_base_dispatch (struct event_base *base);
  166 int event_base_once (struct event_base *base, int fd, short events, void (*cb)(int, short, void *), void *arg, struct timeval *tv);
  167 int event_base_priority_init (struct event_base *base, int fd);
  168 
  169 /* next line is different in the libevent+libev version */
  170 /*libevent-include*/
  171 
  172 #ifdef __cplusplus
  173 }
  174 #endif
  175 
  176 #endif
  177