Mercurial > hg > nginx
diff src/event/modules/ngx_kqueue_module.c @ 36:c14d7232b11f
nginx-0.0.1-2002-12-23-09:29:22 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 23 Dec 2002 06:29:22 +0000 |
parents | d45effe5854c |
children | 2ffaa35fba42 |
line wrap: on
line diff
--- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -61,6 +61,22 @@ int ngx_kqueue_add_event(ngx_event_t *ev { ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1: 0; +#if 1 + if (nchanges > 0 + && ev->index < nchanges + && change_list[ev->index].udata == ev) + { + /* DEBUG */ + ngx_connection_t *c = (ngx_connection_t *) ev->data; + ngx_log_debug(ev->log, "kqueue add event: %d: ft:%d" _ c->fd _ event); + + change_list[ev->index].filter = event; + change_list[ev->index].flags = flags; + + return NGX_OK; + } +#endif + return ngx_kqueue_set_event(ev, event, EV_ADD | flags); } @@ -69,12 +85,13 @@ int ngx_kqueue_del_event(ngx_event_t *ev { ngx_event_t *e; - if (nchanges > 0 && ev->index < nchanges + if (nchanges > 0 + && ev->index < nchanges && change_list[ev->index].udata == ev) { - ngx_connection_t *cn = (ngx_connection_t *) ev->data; - ngx_log_debug(ev->log, "kqueue del event: %d: ft:%d" _ - cn->fd _ event); + /* DEBUG */ + ngx_connection_t *c = (ngx_connection_t *) ev->data; + ngx_log_debug(ev->log, "kqueue del event: %d: ft:%d" _ c->fd _ event); if (ev->index < --nchanges) { e = (ngx_event_t *) change_list[nchanges].udata; @@ -95,12 +112,12 @@ int ngx_kqueue_del_event(ngx_event_t *ev int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags) { struct timespec ts; - ngx_connection_t *cn; + ngx_connection_t *c; - cn = (ngx_connection_t *) ev->data; + c = (ngx_connection_t *) ev->data; ngx_log_debug(ev->log, "kqueue set event: %d: ft:%d f:%08x" _ - cn->fd _ filter _ flags); + c->fd _ filter _ flags); if (nchanges >= nevents) { ngx_log_error(NGX_LOG_WARN, ev->log, 0, @@ -116,14 +133,16 @@ int ngx_kqueue_set_event(ngx_event_t *ev nchanges = 0; } - change_list[nchanges].ident = cn->fd; + change_list[nchanges].ident = c->fd; change_list[nchanges].filter = filter; change_list[nchanges].flags = flags; change_list[nchanges].fflags = 0; change_list[nchanges].data = 0; change_list[nchanges].udata = ev; +#if 0 if (flags == EV_ADD) +#endif ev->index = nchanges; nchanges++; @@ -140,10 +159,6 @@ int ngx_kqueue_process_events(ngx_log_t struct timeval tv; struct timespec ts, *tp; - timer = 0; - delta = 0; - tp = NULL; - if (timer_queue.timer_next != &timer_queue) { timer = timer_queue.timer_next->timer_delta; ts.tv_sec = timer / 1000; @@ -151,6 +166,11 @@ int ngx_kqueue_process_events(ngx_log_t tp = &ts; gettimeofday(&tv, NULL); delta = tv.tv_sec * 1000 + tv.tv_usec / 1000; + + } else { + timer = 0; + delta = 0; + tp = NULL; } ngx_log_debug(log, "kevent timer: %d" _ timer);