ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/event.c
(Generate patch)

Comparing libev/event.c (file contents):
Revision 1.20 by root, Tue Nov 6 18:49:32 2007 UTC vs.
Revision 1.26 by root, Mon Nov 12 00:31:08 2007 UTC

35 35
36#ifndef WIN32 36#ifndef WIN32
37# include <sys/time.h> 37# include <sys/time.h>
38#endif 38#endif
39 39
40#include "ev.h" 40#ifdef EV_EVENT_H
41# include EV_EVENT_H
42#else
41#include "event.h" 43# include "event.h"
44#endif
42 45
43#if EV_MULTIPLICITY 46#if EV_MULTIPLICITY
44# define dLOOPev struct ev_loop *loop = (struct ev_loop *)ev->ev_base 47# define dLOOPev struct ev_loop *loop = (struct ev_loop *)ev->ev_base
45# define dLOOPbase struct ev_loop *loop = (struct ev_loop *)base 48# define dLOOPbase struct ev_loop *loop = (struct ev_loop *)base
46#else 49#else
136x_cb (struct event *ev, int revents) 139x_cb (struct event *ev, int revents)
137{ 140{
138 revents &= EV_READ | EV_WRITE | EV_TIMEOUT | EV_SIGNAL; 141 revents &= EV_READ | EV_WRITE | EV_TIMEOUT | EV_SIGNAL;
139 142
140 ev->ev_res = revents; 143 ev->ev_res = revents;
141 ev->ev_callback (ev->ev_fd, revents, ev->ev_arg); 144 ev->ev_callback (ev->ev_fd, (short)revents, ev->ev_arg);
142} 145}
143 146
144static void 147static void
145x_cb_sig (EV_P_ struct ev_signal *w, int revents) 148x_cb_sig (EV_P_ struct ev_signal *w, int revents)
146{ 149{
176} 179}
177 180
178void event_set (struct event *ev, int fd, short events, void (*cb)(int, short, void *), void *arg) 181void event_set (struct event *ev, int fd, short events, void (*cb)(int, short, void *), void *arg)
179{ 182{
180 if (events & EV_SIGNAL) 183 if (events & EV_SIGNAL)
181 ev_watcher_init (&ev->iosig.sig, x_cb_sig); 184 ev_init (&ev->iosig.sig, x_cb_sig);
182 else 185 else
183 ev_watcher_init (&ev->iosig.io, x_cb_io); 186 ev_init (&ev->iosig.io, x_cb_io);
184 187
185 ev_watcher_init (&ev->to, x_cb_to); 188 ev_init (&ev->to, x_cb_to);
186 189
187 ev->ev_base = x_cur; /* not threadsafe, but its like libevent works */ 190 ev->ev_base = x_cur; /* not threadsafe, but its like libevent works */
188 ev->ev_fd = fd; 191 ev->ev_fd = fd;
189 ev->ev_events = events; 192 ev->ev_events = events;
190 ev->ev_pri = 0; 193 ev->ev_pri = 0;
246 ev_timer_stop (EV_A_ &ev->to); 249 ev_timer_stop (EV_A_ &ev->to);
247 250
248 return 0; 251 return 0;
249} 252}
250 253
254void event_active (struct event *ev, int res, short ncalls)
255{
256 dLOOPev;
257
258 if (res & EV_TIMEOUT)
259 ev_feed_event (EV_A_ &ev->to, res & EV_TIMEOUT);
260
261 if (res & EV_SIGNAL)
262 ev_feed_event (EV_A_ &ev->iosig.sig, res & EV_SIGNAL);
263
264 if (res & (EV_READ | EV_WRITE))
265 ev_feed_event (EV_A_ &ev->iosig.io, res & (EV_READ | EV_WRITE));
266}
267
251int event_pending (struct event *ev, short events, struct timeval *tv) 268int event_pending (struct event *ev, short events, struct timeval *tv)
252{ 269{
253 short revents = 0; 270 short revents = 0;
254 dLOOPev; 271 dLOOPev;
255 272
339static void 356static void
340x_once_cb (int revents, void *arg) 357x_once_cb (int revents, void *arg)
341{ 358{
342 struct x_once *once = (struct x_once *)arg; 359 struct x_once *once = (struct x_once *)arg;
343 360
344 once->cb (once->fd, revents, once->arg); 361 once->cb (once->fd, (short)revents, once->arg);
345 free (once); 362 free (once);
346} 363}
347 364
348int event_base_once (struct event_base *base, int fd, short events, void (*cb)(int, short, void *), void *arg, struct timeval *tv) 365int event_base_once (struct event_base *base, int fd, short events, void (*cb)(int, short, void *), void *arg, struct timeval *tv)
349{ 366{

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines