Mirror of :pserver:anonymous@cvs.schmorp.de/schmorpforge libev http://software.schmorp.de/pkg/libev.html
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
4.8 KiB

  1. /*
  2. * libevent compatibility header, only core events supported
  3. *
  4. * Copyright (c) 2007 Marc Alexander Lehmann <libev@schmorp.de>
  5. * All rights reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions are
  9. * met:
  10. *
  11. * * Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. *
  14. * * Redistributions in binary form must reproduce the above
  15. * copyright notice, this list of conditions and the following
  16. * disclaimer in the documentation and/or other materials provided
  17. * with the distribution.
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  20. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  22. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  23. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  24. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  25. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  26. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  27. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  28. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  29. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30. */
  31. #ifndef EVENT_H__
  32. #define EVENT_H__
  33. #ifdef EV_H
  34. # include EV_H
  35. #else
  36. # include <ev.h>
  37. #endif
  38. #ifdef __cplusplus
  39. extern "C" {
  40. #endif
  41. struct event_base;
  42. #define EVLIST_TIMEOUT 0x01
  43. #define EVLIST_INSERTED 0x02
  44. #define EVLIST_SIGNAL 0x04
  45. #define EVLIST_ACTIVE 0x08
  46. #define EVLIST_INTERNAL 0x10
  47. #define EVLIST_INIT 0x80
  48. struct event
  49. {
  50. /* libev watchers we map onto */
  51. union {
  52. struct ev_io io;
  53. struct ev_signal sig;
  54. } iosig;
  55. struct ev_timer to;
  56. /* compatibility slots */
  57. struct event_base *ev_base;
  58. void (*ev_callback)(int, short, void *arg);
  59. void *ev_arg;
  60. int ev_fd;
  61. int ev_pri;
  62. int ev_res;
  63. int ev_flags;
  64. short ev_events;
  65. };
  66. #define EV_PERSIST 0x10
  67. #define EVENT_SIGNAL(ev) ((int) (ev)->ev_fd)
  68. #define EVENT_FD(ev) ((int) (ev)->ev_fd)
  69. #define event_initialized(ev) ((ev)->ev_flags & EVLIST_INIT)
  70. #define evtimer_add(ev,tv) event_add (ev, tv)
  71. #define evtimer_set(ev,cb,data) event_set (ev, -1, 0, cb, data)
  72. #define evtimer_del(ev) event_del (ev)
  73. #define evtimer_pending(ev,tv) event_pending (ev, EV_TIMEOUT, tv)
  74. #define evtimer_initialized(ev) event_initialized (ev)
  75. #define timeout_add(ev,tv) evtimer_add (ev, tv)
  76. #define timeout_set(ev,cb,data) evtimer_set (ev, cb, data)
  77. #define timeout_del(ev) evtimer_del (ev)
  78. #define timeout_pending(ev,tv) evtimer_pending (ev, tv)
  79. #define timeout_initialized(ev) evtimer_initialized (ev)
  80. #define signal_add(ev,tv) event_add (ev, tv)
  81. #define signal_set(ev,sig,cb,data) event_set (ev, sig, EV_SIGNAL | EV_PERSIST, cb, data)
  82. #define signal_del(ev) event_del (ev)
  83. #define signal_pending(ev,tv) event_pending (ev, EV_SIGNAL, tv)
  84. #define signal_initialized(ev) event_initialized (ev)
  85. const char *event_get_version (void);
  86. const char *event_get_method (void);
  87. void *event_init (void);
  88. void event_base_free (struct event_base *base);
  89. #define EVLOOP_ONCE EVLOOP_ONESHOT
  90. int event_loop (int);
  91. int event_loopexit (struct timeval *tv);
  92. int event_dispatch (void);
  93. #define _EVENT_LOG_DEBUG 0
  94. #define _EVENT_LOG_MSG 1
  95. #define _EVENT_LOG_WARN 2
  96. #define _EVENT_LOG_ERR 3
  97. typedef void (*event_log_cb)(int severity, const char *msg);
  98. void event_set_log_callback(event_log_cb cb);
  99. void event_set (struct event *ev, int fd, short events, void (*cb)(int, short, void *), void *arg);
  100. int event_once (int fd, short events, void (*cb)(int, short, void *), void *arg, struct timeval *tv);
  101. int event_add (struct event *ev, struct timeval *tv);
  102. int event_del (struct event *ev);
  103. void event_active (struct event *ev, int res, short ncalls); /* ncalls is being ignored */
  104. int event_pending (struct event *ev, short, struct timeval *tv);
  105. int event_priority_init (int npri);
  106. int event_priority_set (struct event *ev, int pri);
  107. int event_base_set (struct event_base *base, struct event *ev);
  108. int event_base_loop (struct event_base *base, int);
  109. int event_base_loopexit (struct event_base *base, struct timeval *tv);
  110. int event_base_dispatch (struct event_base *base);
  111. int event_base_once (struct event_base *base, int fd, short events, void (*cb)(int, short, void *), void *arg, struct timeval *tv);
  112. int event_base_priority_init (struct event_base *base, int fd);
  113. #ifndef EV_STANDALONE
  114. # include <event_compat.h>
  115. #endif
  116. #ifdef __cplusplus
  117. }
  118. #endif
  119. #endif