comparison src/event/ngx_event.c @ 59:e8cdc2989cee

nginx-0.0.1-2003-02-06-20:21:13 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 06 Feb 2003 17:21:13 +0000
parents a499e0d1f16e
children 50186b49f2ad
comparison
equal deleted inserted replaced
58:6b13b1cadabe 59:e8cdc2989cee
10 #include <ngx_connection.h> 10 #include <ngx_connection.h>
11 #include <ngx_event.h> 11 #include <ngx_event.h>
12 #include <ngx_event_accept.h> 12 #include <ngx_event_accept.h>
13 13
14 #include <ngx_select_module.h> 14 #include <ngx_select_module.h>
15
15 #if (HAVE_POLL) 16 #if (HAVE_POLL)
16 #include <ngx_poll_module.h> 17 #include <ngx_poll_module.h>
17 #endif 18 #endif
19
18 #if (HAVE_DEVPOLL) 20 #if (HAVE_DEVPOLL)
19 #include <ngx_devpoll_module.h> 21 #include <ngx_devpoll_module.h>
20 #endif 22 #endif
23
21 #if (HAVE_KQUEUE) 24 #if (HAVE_KQUEUE)
22 #include <ngx_kqueue_module.h> 25 #include <ngx_kqueue_module.h>
26 #endif
27
28 #if (HAVE_IOCP)
29 #include <ngx_event_acceptex.h>
30 #include <ngx_iocp_module.h>
23 #endif 31 #endif
24 32
25 33
26 ngx_connection_t *ngx_connections; 34 ngx_connection_t *ngx_connections;
27 ngx_event_t *ngx_read_events, *ngx_write_events; 35 ngx_event_t *ngx_read_events, *ngx_write_events;
66 #endif 74 #endif
67 #if (HAVE_DEVPOLL) 75 #if (HAVE_DEVPOLL)
68 ngx_devpoll_init, 76 ngx_devpoll_init,
69 #endif 77 #endif
70 #if (HAVE_KQUEUE) 78 #if (HAVE_KQUEUE)
71 ngx_kqueue_init 79 ngx_kqueue_init,
80 #endif
81 #if (HAVE_IOCP)
82 ngx_iocp_init
72 #endif 83 #endif
73 }; 84 };
74 85
75 #endif /* USE_KQUEUE */ 86 #endif /* USE_KQUEUE */
76 87
83 ngx_event_t *ev; 94 ngx_event_t *ev;
84 ngx_connection_t *c; 95 ngx_connection_t *c;
85 96
86 /* STUB */ 97 /* STUB */
87 int max_connections = 512; 98 int max_connections = 512;
99
100 #if (HAVE_IOCP)
101 ngx_event_type = NGX_IOCP_EVENT;
102 #endif
88 103
89 if (ngx_init_events(max_connections, log) == NGX_ERROR) { 104 if (ngx_init_events(max_connections, log) == NGX_ERROR) {
90 exit(1); 105 exit(1);
91 } 106 }
92 107
125 ngx_test_null(ev->log, 140 ngx_test_null(ev->log,
126 ngx_palloc(pool, sizeof(ngx_log_t)), /* void */ ; ); 141 ngx_palloc(pool, sizeof(ngx_log_t)), /* void */ ; );
127 ngx_memcpy(ev->log, c->log, sizeof(ngx_log_t)); 142 ngx_memcpy(ev->log, c->log, sizeof(ngx_log_t));
128 c->read = ev; 143 c->read = ev;
129 ev->data = c; 144 ev->data = c;
130 ev->event_handler = &ngx_event_accept; 145 ev->index = NGX_INVALID_INDEX;
146 #if 0
131 ev->listening = 1; 147 ev->listening = 1;
132 ev->index = NGX_INVALID_INDEX; 148 #endif
133 149
134 ev->available = 0; 150 ev->available = 0;
135 151
136 #if (HAVE_DEFERRED_ACCEPT) 152 #if (HAVE_DEFERRED_ACCEPT)
137 ev->deferred_accept = s[i].deferred_accept; 153 ev->deferred_accept = s[i].deferred_accept;
138 #endif 154 #endif
155
156 #if (HAVE_IOCP)
157
158 if (ngx_event_flags & NGX_HAVE_IOCP_EVENT) {
159 ev->event_handler = &ngx_event_acceptex;
160
161 if (ngx_iocp_add_event(ev) == NGX_ERROR) {
162 return NGX_ERROR;
163 }
164
165 ngx_event_post_acceptex(&s[i], 1);
166
167 } else {
168 ev->event_handler = &ngx_event_accept;
169 }
170
171 #else
172
173 ev->event_handler = &ngx_event_accept;
139 ngx_add_event(ev, NGX_READ_EVENT, 0); 174 ngx_add_event(ev, NGX_READ_EVENT, 0);
175
176 #endif
140 } 177 }
141 } 178 }
142 179
143 void ngx_worker(ngx_log_t *log) 180 void ngx_worker(ngx_log_t *log)
144 { 181 {