comparison src/event/ngx_event_timer.c @ 51:a6afbb8a2ada

nginx-0.0.1-2003-01-24-09:20:47 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 24 Jan 2003 06:20:47 +0000
parents b288069a8696
children 9f2728644651
comparison
equal deleted inserted replaced
50:b288069a8696 51:a6afbb8a2ada
49 ngx_log_error(NGX_LOG_ALERT, ev->log, 0, "timer already set"); 49 ngx_log_error(NGX_LOG_ALERT, ev->log, 0, "timer already set");
50 return; 50 return;
51 } 51 }
52 52
53 n = timer % ngx_timer_hash_size; 53 n = timer % ngx_timer_hash_size;
54 #if (NGX_DEBUG_EVENT)
55 ngx_log_debug(ev->log, "timer slot: %d" _ n);
56 #endif
54 57
55 for (e = ngx_timer_queue[n].timer_next; 58 for (e = ngx_timer_queue[n].timer_next;
56 e != &ngx_timer_queue[n] && timer > e->timer_delta; 59 e != &ngx_timer_queue[n] && timer > e->timer_delta;
57 e = e->timer_next) 60 e = e->timer_next)
58 { 61 {
65 ev->timer_prev = e->timer_prev; 68 ev->timer_prev = e->timer_prev;
66 69
67 e->timer_prev->timer_next = ev; 70 e->timer_prev->timer_next = ev;
68 e->timer_prev = ev; 71 e->timer_prev = ev;
69 } 72 }
73
74
75 void ngx_event_expire_timers(ngx_msec_t timer)
76 {
77 int i;
78 ngx_msec_t delta;
79 ngx_event_t *ev;
80
81 for (i = 0; i < ngx_timer_hash_size; i++) {
82
83 delta = timer;
84
85 for ( ;; ) {
86 ev = ngx_timer_queue[i].timer_next;
87
88 if (ev == &ngx_timer_queue[i]) {
89 break;
90 }
91
92 if (ev->timer_delta > delta) {
93 ev->timer_delta -= delta;
94 break;
95 }
96
97 delta -= ev->timer_delta;
98
99 ngx_del_timer(ev);
100 ev->timedout = 1;
101
102 if (ev->event_handler(ev) == NGX_ERROR) {
103 ev->close_handler(ev);
104 }
105 }
106 }
107 }