Mercurial > hg > nginx
comparison src/event/modules/ngx_select_module.c @ 13:2aba961a1d34
nginx-0.0.1-2002-09-16-19:01:44 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 16 Sep 2002 15:01:44 +0000 |
parents | 708f8bb772ec |
children | 8dd06e2844f5 |
comparison
equal
deleted
inserted
replaced
12:055ed05235ae | 13:2aba961a1d34 |
---|---|
184 | 184 |
185 ngx_log_debug(log, "change max_fd: %d" _ max_fd); | 185 ngx_log_debug(log, "change max_fd: %d" _ max_fd); |
186 } | 186 } |
187 #endif | 187 #endif |
188 | 188 |
189 ngx_log_debug(log, "ngx_select_process_events: timer: %d" _ timer); | 189 ngx_log_debug(log, "select timer: %d" _ timer); |
190 | 190 |
191 #if (WIN32) | 191 #if (WIN32) |
192 if ((ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp)) | 192 if ((ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp)) |
193 #else | 193 #else |
194 if ((ready = select(max_fd + 1, &work_read_fd_set, &work_write_fd_set, | 194 if ((ready = select(max_fd + 1, &work_read_fd_set, &work_write_fd_set, |
195 NULL, tp)) | 195 NULL, tp)) |
196 #endif | 196 #endif |
197 == -1) { | 197 == -1) { |
198 ngx_log_error(NGX_LOG_ALERT, log, ngx_socket_errno, | 198 ngx_log_error(NGX_LOG_ALERT, log, ngx_socket_errno, "select() failed"); |
199 "ngx_select_process_events: select failed"); | |
200 return NGX_ERROR; | 199 return NGX_ERROR; |
201 } | 200 } |
202 | 201 |
203 ngx_log_debug(log, "ngx_select_process_events: ready %d" _ ready); | 202 ngx_log_debug(log, "select ready %d" _ ready); |
204 | 203 |
205 if (timer) { | 204 if (timer) { |
206 delta = ngx_msec() - delta; | 205 delta = ngx_msec() - delta; |
207 | 206 |
208 } else { | 207 } else { |
209 ngx_assert((ready != 0), return NGX_ERROR, log, | 208 ngx_assert((ready != 0), return NGX_ERROR, log, |
210 "ngx_select_process_events: " | 209 "select() returns no events without timeout"); |
211 "select returns no events without timeout"); | 210 } |
212 } | 211 |
213 | 212 ngx_log_debug(log, "select timer: %d, delta: %d" _ timer _ delta); |
214 ngx_log_debug(log, "ngx_select_process_events: " | |
215 "timer: %d, delta: %d" _ timer _ delta); | |
216 | 213 |
217 if (timer) { | 214 if (timer) { |
218 if (delta >= timer) { | 215 if (delta >= timer) { |
219 for (ev = timer_queue.timer_next; | 216 for (ev = timer_queue.timer_next; |
220 ev != &timer_queue && delta >= ev->timer_delta; | 217 ev != &timer_queue && delta >= ev->timer_delta; |
232 } else { | 229 } else { |
233 timer_queue.timer_next->timer_delta -= delta; | 230 timer_queue.timer_next->timer_delta -= delta; |
234 } | 231 } |
235 } | 232 } |
236 | 233 |
237 for (ev = event_queue.next; ev != &event_queue; ev = ev->next) { | 234 for (ev = event_queue.next; ev != &event_queue; /* void */) { |
238 c = (ngx_connection_t *) ev->data; | 235 c = (ngx_connection_t *) ev->data; |
239 found = 0; | 236 found = 0; |
240 | 237 |
241 if (ev->write) { | 238 if (ev->write) { |
242 if (FD_ISSET(c->fd, &work_write_fd_set)) { | 239 if (FD_ISSET(c->fd, &work_write_fd_set)) { |
243 ngx_log_debug(log, "ngx_select_process_events: write %d" _ | 240 ngx_log_debug(log, "select write %d" _ |
244 c->fd); | 241 c->fd); |
245 found = 1; | 242 found = 1; |
246 } | 243 } |
247 | 244 |
248 } else { | 245 } else { |
249 if (FD_ISSET(c->fd, &work_read_fd_set)) { | 246 if (FD_ISSET(c->fd, &work_read_fd_set)) { |
250 ngx_log_debug(log, "ngx_select_process_events: read %d" _ | 247 ngx_log_debug(log, "select read %d" _ |
251 c->fd); | 248 c->fd); |
252 found = 1; | 249 found = 1; |
253 } | 250 } |
254 } | 251 } |
252 | |
253 nx = ev->next; | |
255 | 254 |
256 if (found) { | 255 if (found) { |
257 ev->ready = 1; | 256 ev->ready = 1; |
258 | 257 |
259 if (ev->oneshot) { | 258 if (ev->oneshot) { |
268 ev->close_handler(ev); | 267 ev->close_handler(ev); |
269 | 268 |
270 ready--; | 269 ready--; |
271 } | 270 } |
272 | 271 |
273 } | 272 ev = nx; |
274 | 273 } |
275 ngx_assert((ready == 0), /* void */ ; , log, | 274 |
276 "ngx_select_process_events: ready != events"); | 275 ngx_assert((ready == 0), /* void */ ; , log, "select ready != events"); |
277 | 276 |
278 return NGX_OK; | 277 return NGX_OK; |
279 } | 278 } |
280 | 279 |
281 void ngx_select_add_timer(ngx_event_t *ev, ngx_msec_t timer) | 280 void ngx_select_add_timer(ngx_event_t *ev, ngx_msec_t timer) |