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;