Mercurial > hg > nginx-quic
comparison src/event/modules/ngx_select_module.c @ 6:669801705ab1
nginx-0.0.1-2002-08-26-19:18:19 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 26 Aug 2002 15:18:19 +0000 |
parents | 4eff17414a43 |
children | b5481d6fbbd4 |
comparison
equal
deleted
inserted
replaced
5:62b1a364857c | 6:669801705ab1 |
---|---|
21 | 21 |
22 static ngx_event_t event_queue; | 22 static ngx_event_t event_queue; |
23 static ngx_event_t timer_queue; | 23 static ngx_event_t timer_queue; |
24 | 24 |
25 | 25 |
26 static void ngx_add_timer(ngx_event_t *ev, u_int timer); | 26 static void ngx_add_timer_core(ngx_event_t *ev, u_int timer); |
27 static void ngx_inline ngx_del_timer(ngx_event_t *ev); | 27 static void ngx_inline ngx_del_timer(ngx_event_t *ev); |
28 | 28 |
29 static fd_set *ngx_select_get_fd_set(ngx_socket_t fd, int event, | 29 static fd_set *ngx_select_get_fd_set(ngx_socket_t fd, int event, |
30 ngx_log_t *log); | 30 ngx_log_t *log); |
31 | 31 |
32 void ngx_select_init(int max_connections, ngx_log_t *log) | 32 void ngx_select_init(int max_connections, ngx_log_t *log) |
33 { | 33 { |
34 #if (WIN32) | 34 if (max_connections > FD_SETSIZE) { |
35 if (max_connections > FD_SETSIZE) | |
36 ngx_log_error(NGX_LOG_EMERG, log, 0, | 35 ngx_log_error(NGX_LOG_EMERG, log, 0, |
37 "ngx_select_init: maximum number of descriptors " | 36 #if (WIN32) |
38 "supported by select() is %d", | 37 "maximum number of descriptors " |
39 FD_SETSIZE); | 38 "supported by select() is %d", FD_SETSIZE); |
40 #else | 39 #else |
41 if (max_connections >= FD_SETSIZE) | 40 "maximum descriptor number" |
42 ngx_log_error(NGX_LOG_EMERG, log, 0, | 41 "supported by select() is %d", FD_SETSIZE - 1); |
43 "ngx_select_init: maximum descriptor number" | 42 #endif |
44 "supported by select() is %d", | 43 exit(1); |
45 FD_SETSIZE - 1); | 44 } |
46 #endif | |
47 | 45 |
48 FD_ZERO(&master_read_fds); | 46 FD_ZERO(&master_read_fds); |
49 FD_ZERO(&master_write_fds); | 47 FD_ZERO(&master_write_fds); |
50 | 48 |
51 event_queue.prev = &event_queue; | 49 event_queue.prev = &event_queue; |
69 { | 67 { |
70 fd_set *fds; | 68 fd_set *fds; |
71 ngx_connection_t *cn = (ngx_connection_t *) ev->data; | 69 ngx_connection_t *cn = (ngx_connection_t *) ev->data; |
72 | 70 |
73 if (event == NGX_TIMER_EVENT) { | 71 if (event == NGX_TIMER_EVENT) { |
74 ngx_add_timer(ev, flags); | 72 ngx_add_timer_core(ev, flags); |
75 return 0; | 73 return 0; |
76 } | 74 } |
77 | 75 |
78 ngx_assert((flags != NGX_ONESHOT_EVENT), return -1, ev->log, | 76 ngx_assert((flags != NGX_ONESHOT_EVENT), return -1, ev->log, |
79 "ngx_select_add_event: NGX_ONESHOT_EVENT is not supported"); | 77 "ngx_select_add_event: NGX_ONESHOT_EVENT is not supported"); |
269 /* void */) | 267 /* void */) |
270 { | 268 { |
271 delta -= ev->timer_delta; | 269 delta -= ev->timer_delta; |
272 nx = ev->timer_next; | 270 nx = ev->timer_next; |
273 ngx_del_timer(ev); | 271 ngx_del_timer(ev); |
272 #if 1 | |
273 ev->timedout = 1; | |
274 if (ev->event_handler(ev) == -1) | |
275 ev->close_handler(ev); | |
276 #else | |
274 if (ev->timer_handler(ev) == -1) | 277 if (ev->timer_handler(ev) == -1) |
275 ev->close_handler(ev); | 278 ev->close_handler(ev); |
279 #endif | |
276 ev = nx; | 280 ev = nx; |
277 } | 281 } |
278 | 282 |
279 } else { | 283 } else { |
280 timer_queue.timer_next->timer_delta -= delta; | 284 timer_queue.timer_next->timer_delta -= delta; |
314 "ngx_select_process_events: ready != events"); | 318 "ngx_select_process_events: ready != events"); |
315 | 319 |
316 return 0; | 320 return 0; |
317 } | 321 } |
318 | 322 |
319 static void ngx_add_timer(ngx_event_t *ev, u_int timer) | 323 static void ngx_add_timer_core(ngx_event_t *ev, u_int timer) |
320 { | 324 { |
321 ngx_event_t *e; | 325 ngx_event_t *e; |
322 | 326 |
323 for (e = timer_queue.timer_next; | 327 for (e = timer_queue.timer_next; |
324 e != &timer_queue && timer > e->timer_delta; | 328 e != &timer_queue && timer > e->timer_delta; |