comparison src/event/modules/ngx_select_module.c @ 92:19cc647ecd91

nginx-0.0.1-2003-05-20-19:37:55 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 20 May 2003 15:37:55 +0000
parents 637625a2acdb
children a23d010f356d
comparison
equal deleted inserted replaced
91:637625a2acdb 92:19cc647ecd91
107 } 107 }
108 108
109 109
110 static void ngx_select_done(ngx_log_t *log) 110 static void ngx_select_done(ngx_log_t *log)
111 { 111 {
112 ngx_event_timer_done(log);
113
112 ngx_free(event_index); 114 ngx_free(event_index);
113 ngx_free(ready_index); 115 ngx_free(ready_index);
114 } 116 }
115 117
116 118
147 } else if (event == NGX_WRITE_EVENT) { 149 } else if (event == NGX_WRITE_EVENT) {
148 FD_SET(c->fd, &master_write_fd_set); 150 FD_SET(c->fd, &master_write_fd_set);
149 max_write++; 151 max_write++;
150 } 152 }
151 #else 153 #else
152 if (event == NGX_READ_EVENT) 154 if (event == NGX_READ_EVENT) {
153 FD_SET(c->fd, &master_read_fd_set); 155 FD_SET(c->fd, &master_read_fd_set);
154 156
155 else if (event == NGX_WRITE_EVENT) 157 } else if (event == NGX_WRITE_EVENT) {
156 FD_SET(c->fd, &master_write_fd_set); 158 FD_SET(c->fd, &master_write_fd_set);
157 159 }
158 if (max_fd != -1 && max_fd < c->fd) 160
161 if (max_fd != -1 && max_fd < c->fd) {
159 max_fd = c->fd; 162 max_fd = c->fd;
163 }
160 164
161 #endif 165 #endif
162 166
163 ev->active = 1; 167 ev->active = 1;
164 ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1: 0; 168 ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1 : 0;
165 169
166 event_index[nevents] = ev; 170 event_index[nevents] = ev;
167 ev->index = nevents; 171 ev->index = nevents;
168 nevents++; 172 nevents++;
169 173
175 { 179 {
176 ngx_connection_t *c; 180 ngx_connection_t *c;
177 181
178 c = ev->data; 182 c = ev->data;
179 183
180 if (ev->index == NGX_INVALID_INDEX) 184 if (ev->index == NGX_INVALID_INDEX) {
181 return NGX_OK; 185 return NGX_OK;
186 }
182 187
183 #if (NGX_DEBUG_EVENT) 188 #if (NGX_DEBUG_EVENT)
184 ngx_log_debug(c->log, "del event: %d, %d" _ c->fd _ event); 189 ngx_log_debug(c->log, "del event: %d, %d" _ c->fd _ event);
185 #endif 190 #endif
186 191
187 #if (WIN32) 192 #if (WIN32)
193
188 if (event == NGX_READ_EVENT) { 194 if (event == NGX_READ_EVENT) {
189 FD_CLR(c->fd, &master_read_fd_set); 195 FD_CLR(c->fd, &master_read_fd_set);
190 max_read--; 196 max_read--;
191 197
192 } else if (event == NGX_WRITE_EVENT) { 198 } else if (event == NGX_WRITE_EVENT) {
193 FD_CLR(c->fd, &master_write_fd_set); 199 FD_CLR(c->fd, &master_write_fd_set);
194 max_write--; 200 max_write--;
195 } 201 }
196 #else 202
197 if (event == NGX_READ_EVENT) 203 #else
204
205 if (event == NGX_READ_EVENT) {
198 FD_CLR(c->fd, &master_read_fd_set); 206 FD_CLR(c->fd, &master_read_fd_set);
199 207
200 else if (event == NGX_WRITE_EVENT) 208 } else if (event == NGX_WRITE_EVENT) {
201 FD_CLR(c->fd, &master_write_fd_set); 209 FD_CLR(c->fd, &master_write_fd_set);
202 210 }
203 if (max_fd == c->fd) 211
212 if (max_fd == c->fd) {
204 max_fd = -1; 213 max_fd = -1;
214 }
215
205 #endif 216 #endif
206 217
207 if (ev->index < --nevents) { 218 if (ev->index < --nevents) {
208 event_index[ev->index] = event_index[nevents]; 219 event_index[ev->index] = event_index[nevents];
209 event_index[ev->index]->index = ev->index; 220 event_index[ev->index]->index = ev->index;
244 255
245 #if !(WIN32) 256 #if !(WIN32)
246 if (max_fd == -1) { 257 if (max_fd == -1) {
247 for (i = 0; i < nevents; i++) { 258 for (i = 0; i < nevents; i++) {
248 c = (ngx_connection_t *) event_index[i]->data; 259 c = (ngx_connection_t *) event_index[i]->data;
249 if (max_fd < c->fd) 260 if (max_fd < c->fd) {
250 max_fd = c->fd; 261 max_fd = c->fd;
262 }
251 } 263 }
252 264
253 #if (NGX_DEBUG_EVENT) 265 #if (NGX_DEBUG_EVENT)
254 ngx_log_debug(log, "change max_fd: %d" _ max_fd); 266 ngx_log_debug(log, "change max_fd: %d" _ max_fd);
255 #endif 267 #endif
342 if (ev->timer_set) { 354 if (ev->timer_set) {
343 ngx_del_timer(ev); 355 ngx_del_timer(ev);
344 ev->timer_set = 0; 356 ev->timer_set = 0;
345 } 357 }
346 358
347 if (ev->write) 359 if (ev->write) {
348 ngx_select_del_event(ev, NGX_WRITE_EVENT, 0); 360 ngx_select_del_event(ev, NGX_WRITE_EVENT, 0);
349 else 361 } else {
350 ngx_select_del_event(ev, NGX_READ_EVENT, 0); 362 ngx_select_del_event(ev, NGX_READ_EVENT, 0);
363 }
351 } 364 }
352 365
353 ev->event_handler(ev); 366 ev->event_handler(ev);
354 } 367 }
355 368