diff options
author | Igor Sysoev <igor@sysoev.ru> | 2002-12-23 06:29:22 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2002-12-23 06:29:22 +0000 |
commit | a6717c4e59a24bb11dab29b12fb9851bb41293c0 (patch) | |
tree | 3752e2a2fa8f5097b43d946b5b43e4aa90fbe98c /src/event/modules/ngx_kqueue_module.c | |
parent | 41d5a4f2ae515a62008d22997c431ff54cfc7500 (diff) | |
download | nginx-a6717c4e59a24bb11dab29b12fb9851bb41293c0.tar.gz nginx-a6717c4e59a24bb11dab29b12fb9851bb41293c0.zip |
nginx-0.0.1-2002-12-23-09:29:22 import
Diffstat (limited to 'src/event/modules/ngx_kqueue_module.c')
-rw-r--r-- | src/event/modules/ngx_kqueue_module.c | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c index e3c9e3a4f..028dfe767 100644 --- 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, int event, u_int flags) { 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, int event, u_int flags) { 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 event, u_int flags) 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, int filter, u_int flags) 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 *log) 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 *log) 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); |