… | |
… | |
165 | x_cb (ev, revents); |
165 | x_cb (ev, revents); |
166 | } |
166 | } |
167 | |
167 | |
168 | void event_set (struct event *ev, int fd, short events, void (*cb)(int, short, void *), void *arg) |
168 | void event_set (struct event *ev, int fd, short events, void (*cb)(int, short, void *), void *arg) |
169 | { |
169 | { |
170 | printf ("event set %p\n", ev);//D |
|
|
171 | if (events & EV_SIGNAL) |
170 | if (events & EV_SIGNAL) |
172 | ev_watcher_init (&ev->iosig.sig, x_cb_sig); |
171 | ev_watcher_init (&ev->iosig.sig, x_cb_sig); |
173 | else |
172 | else |
174 | ev_watcher_init (&ev->iosig.io, x_cb_io); |
173 | ev_watcher_init (&ev->iosig.io, x_cb_io); |
175 | |
174 | |
… | |
… | |
189 | return event_base_once (x_cur, fd, events, cb, arg, tv); |
188 | return event_base_once (x_cur, fd, events, cb, arg, tv); |
190 | } |
189 | } |
191 | |
190 | |
192 | int event_add (struct event *ev, struct timeval *tv) |
191 | int event_add (struct event *ev, struct timeval *tv) |
193 | { |
192 | { |
194 | printf ("event add %p %p\n", ev, &ev->to);//D |
|
|
195 | dLOOPev; |
193 | dLOOPev; |
196 | |
194 | |
197 | /* disable all watchers */ |
195 | /* disable all watchers */ |
198 | event_del (ev); |
196 | event_del (ev); |
199 | |
197 | |
… | |
… | |
217 | return 0; |
215 | return 0; |
218 | } |
216 | } |
219 | |
217 | |
220 | int event_del (struct event *ev) |
218 | int event_del (struct event *ev) |
221 | { |
219 | { |
222 | printf ("event del %p\n", ev);//D |
|
|
223 | dLOOPev; |
220 | dLOOPev; |
224 | |
221 | |
225 | if (ev->ev_events & EV_SIGNAL) |
222 | if (ev->ev_events & EV_SIGNAL) |
226 | { |
223 | { |
227 | /* sig */ |
224 | /* sig */ |
228 | if (ev_is_active (&ev->iosig.sig)) |
225 | if (ev_is_active (&ev->iosig.sig)) |
229 | ev_signal_stop (EV_A_ &ev->iosig.sig); |
226 | ev_signal_stop (EV_A_ &ev->iosig.sig); |
230 | } |
227 | } |
231 | else |
228 | else if (ev->ev_events & (EV_READ | EV_WRITE)) |
232 | { |
229 | { |
233 | /* io */ |
230 | /* io */ |
234 | if (ev_is_active (&ev->iosig.io)) |
231 | if (ev_is_active (&ev->iosig.io)) |
235 | ev_io_stop (EV_A_ &ev->iosig.io); |
232 | ev_io_stop (EV_A_ &ev->iosig.io); |
236 | } |
233 | } |
237 | |
234 | |
238 | printf ("to %p %d\n", &ev->to, ev->to.active);//D |
|
|
239 | if (ev_is_active (&ev->to)) |
235 | if (ev_is_active (&ev->to)) |
240 | ev_timer_stop (EV_A_ &ev->to); |
236 | ev_timer_stop (EV_A_ &ev->to); |
241 | |
237 | |
242 | return 0; |
238 | return 0; |
243 | } |
239 | } |
… | |
… | |
252 | { |
248 | { |
253 | /* sig */ |
249 | /* sig */ |
254 | if (ev_is_active (&ev->iosig.sig) || ev_is_pending (&ev->iosig.sig)) |
250 | if (ev_is_active (&ev->iosig.sig) || ev_is_pending (&ev->iosig.sig)) |
255 | revents |= EV_SIGNAL; |
251 | revents |= EV_SIGNAL; |
256 | } |
252 | } |
257 | else |
253 | else if (ev->ev_events & (EV_READ | EV_WRITE)) |
258 | { |
254 | { |
259 | /* io */ |
255 | /* io */ |
260 | if (ev_is_active (&ev->iosig.io) || ev_is_pending (&ev->iosig.io)) |
256 | if (ev_is_active (&ev->iosig.io) || ev_is_pending (&ev->iosig.io)) |
261 | revents |= ev->ev_events & (EV_READ | EV_WRITE); |
257 | revents |= ev->ev_events & (EV_READ | EV_WRITE); |
262 | } |
258 | } |