comparison src/event/ngx_event_timer.c @ 144:ef8c87afcfc5

nginx-0.0.1-2003-10-12-20:49:16 import
author Igor Sysoev <igor@sysoev.ru>
date Sun, 12 Oct 2003 16:49:16 +0000
parents cd54bcbaf3b5
children e92c2c647c57
comparison
equal deleted inserted replaced
143:5526213be452 144:ef8c87afcfc5
2 #include <ngx_config.h> 2 #include <ngx_config.h>
3 #include <ngx_core.h> 3 #include <ngx_core.h>
4 #include <ngx_event.h> 4 #include <ngx_event.h>
5 5
6 6
7 /* in multithreaded enviroment all timer operations must be 7 /* TODO: in multithreaded enviroment all timer operations must be
8 protected by the single mutex */ 8 protected by the single mutex */
9 9
10 10
11 static ngx_event_t *ngx_timer_queue, ngx_temp_timer_queue; 11 static ngx_event_t *ngx_timer_queue, ngx_temp_timer_queue;
12 static int ngx_timer_cur_queue; 12 static int ngx_timer_cur_queue;
68 68
69 69
70 void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer) 70 void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
71 { 71 {
72 ngx_event_t *e, *queue; 72 ngx_event_t *e, *queue;
73
74 #if (NGX_DEBUG_EVENT) 73 #if (NGX_DEBUG_EVENT)
75 ngx_connection_t *c = ev->data; 74 ngx_connection_t *c;
76 ngx_log_debug(ev->log, "set timer: %d:%d, slot: %d" _ 75 #endif
77 c->fd _ timer _ ngx_timer_cur_queue); 76
77 if (ev->timer_set) {
78 ngx_del_timer(ev);
79 }
80
81 #if (NGX_DEBUG_EVENT)
82 c = ev->data;
83 ngx_log_debug(ev->log, "set timer: %d:%d:%d, slot: %d" _
84 c->fd _ ev->write _ timer _ ngx_timer_cur_queue);
78 #endif 85 #endif
79 86
80 if (ev->timer_next || ev->timer_prev) { 87 if (ev->timer_next || ev->timer_prev) {
81 ngx_log_error(NGX_LOG_ALERT, ev->log, 0, "timer already set"); 88 ngx_log_error(NGX_LOG_ALERT, ev->log, 0, "timer already set");
82 return; 89 return;
105 ev->timer_next = e; 112 ev->timer_next = e;
106 ev->timer_prev = e->timer_prev; 113 ev->timer_prev = e->timer_prev;
107 114
108 e->timer_prev->timer_next = ev; 115 e->timer_prev->timer_next = ev;
109 e->timer_prev = ev; 116 e->timer_prev = ev;
117
118 ev->timer_set = 1;
119
120 return;
110 } 121 }
111 122
112 123
113 int ngx_event_find_timer(void) 124 int ngx_event_find_timer(void)
114 { 125 {
127 } 138 }
128 } 139 }
129 140
130 if (timer == NGX_MAX_MSEC) { 141 if (timer == NGX_MAX_MSEC) {
131 return 0; 142 return 0;
132 } else { 143 }
133 return timer; 144
134 } 145 return timer;
135 } 146 }
136 147
137 148
138 void ngx_event_expire_timers(ngx_msec_t timer) 149 void ngx_event_expire_timers(ngx_msec_t timer)
139 { 150 {
188 199
189 while (ngx_temp_timer_queue.timer_next != &ngx_temp_timer_queue) { 200 while (ngx_temp_timer_queue.timer_next != &ngx_temp_timer_queue) {
190 timer += ngx_temp_timer_queue.timer_next->timer_delta; 201 timer += ngx_temp_timer_queue.timer_next->timer_delta;
191 ev = ngx_temp_timer_queue.timer_next; 202 ev = ngx_temp_timer_queue.timer_next;
192 203
204 #if (NGX_DEBUG_EVENT)
205 ngx_log_debug(ev->log, "process temp timer queue");
206 #endif
207
193 ngx_del_timer(ev); 208 ngx_del_timer(ev);
194 ngx_add_timer(ev, timer); 209 ngx_add_timer(ev, timer);
195 } 210 }
196 } 211 }