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)