comparison src/event/modules/ngx_kqueue_module.c @ 11:f323b4f74e4a

nginx-0.0.1-2002-09-12-18:42:29 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 12 Sep 2002 14:42:29 +0000
parents 708f8bb772ec
children 055ed05235ae
comparison
equal deleted inserted replaced
10:4f3879d9b6f6 11:f323b4f74e4a
55 55
56 } 56 }
57 57
58 int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) 58 int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags)
59 { 59 {
60 ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1: 0;
61
60 return ngx_kqueue_set_event(ev, event, EV_ADD | flags); 62 return ngx_kqueue_set_event(ev, event, EV_ADD | flags);
61 } 63 }
62 64
63 int ngx_kqueue_del_event(ngx_event_t *ev, int event) 65 int ngx_kqueue_del_event(ngx_event_t *ev, int event)
64 { 66 {
184 if (event_list[i].flags & EV_EOF) { 186 if (event_list[i].flags & EV_EOF) {
185 ev->eof = 1; 187 ev->eof = 1;
186 ev->error = event_list[i].fflags; 188 ev->error = event_list[i].fflags;
187 } 189 }
188 190
191 if (ev->oneshot)
192 ngx_del_timer(ev);
193
189 if (ev->event_handler(ev) == NGX_ERROR) 194 if (ev->event_handler(ev) == NGX_ERROR)
190 ev->close_handler(ev); 195 ev->close_handler(ev);
191 196
192 break; 197 break;
193 198
205 { 210 {
206 ngx_event_t *e; 211 ngx_event_t *e;
207 212
208 ngx_log_debug(ev->log, "set timer: %d" _ timer); 213 ngx_log_debug(ev->log, "set timer: %d" _ timer);
209 214
215 ngx_assert((!ev->timer_next && !ev->timer_prev), return, ev->log,
216 "timer already set");
217
210 for (e = timer_queue.timer_next; 218 for (e = timer_queue.timer_next;
211 e != &timer_queue && timer > e->timer_delta; 219 e != &timer_queue && timer > e->timer_delta;
212 e = e->timer_next) 220 e = e->timer_next)
213 timer -= e->timer_delta; 221 timer -= e->timer_delta;
214 222