diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2003-01-24 06:20:47 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2003-01-24 06:20:47 +0000 |
| commit | 404326f68ffe52b6f166ac961f01bb8889945fa8 (patch) | |
| tree | 488580c11cab74a6294a62033e9a3eee16ef886d /src/event/ngx_event_timer.c | |
| parent | fcce8d529a6aa7930cc58a5ec84b735cfb72c7e7 (diff) | |
| download | nginx-404326f68ffe52b6f166ac961f01bb8889945fa8.tar.gz nginx-404326f68ffe52b6f166ac961f01bb8889945fa8.tar.bz2 | |
nginx-0.0.1-2003-01-24-09:20:47 import
Diffstat (limited to '')
| -rw-r--r-- | src/event/ngx_event_timer.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c index 4b5b83c83..5663f5481 100644 --- a/src/event/ngx_event_timer.c +++ b/src/event/ngx_event_timer.c @@ -51,6 +51,9 @@ void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer) } n = timer % ngx_timer_hash_size; +#if (NGX_DEBUG_EVENT) + ngx_log_debug(ev->log, "timer slot: %d" _ n); +#endif for (e = ngx_timer_queue[n].timer_next; e != &ngx_timer_queue[n] && timer > e->timer_delta; @@ -67,3 +70,38 @@ void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer) e->timer_prev->timer_next = ev; e->timer_prev = ev; } + + +void ngx_event_expire_timers(ngx_msec_t timer) +{ + int i; + ngx_msec_t delta; + ngx_event_t *ev; + + for (i = 0; i < ngx_timer_hash_size; i++) { + + delta = timer; + + for ( ;; ) { + ev = ngx_timer_queue[i].timer_next; + + if (ev == &ngx_timer_queue[i]) { + break; + } + + if (ev->timer_delta > delta) { + ev->timer_delta -= delta; + break; + } + + delta -= ev->timer_delta; + + ngx_del_timer(ev); + ev->timedout = 1; + + if (ev->event_handler(ev) == NGX_ERROR) { + ev->close_handler(ev); + } + } + } +} |
