Mercurial > hg > nginx
diff 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 |
line wrap: on
line diff
--- a/src/event/ngx_event.c +++ b/src/event/ngx_event.c @@ -12,16 +12,24 @@ #include <ngx_event_accept.h> #include <ngx_select_module.h> + #if (HAVE_POLL) #include <ngx_poll_module.h> #endif + #if (HAVE_DEVPOLL) #include <ngx_devpoll_module.h> #endif + #if (HAVE_KQUEUE) #include <ngx_kqueue_module.h> #endif +#if (HAVE_IOCP) +#include <ngx_event_acceptex.h> +#include <ngx_iocp_module.h> +#endif + ngx_connection_t *ngx_connections; ngx_event_t *ngx_read_events, *ngx_write_events; @@ -68,7 +76,10 @@ static int (*ngx_event_init[]) (int max_ ngx_devpoll_init, #endif #if (HAVE_KQUEUE) - ngx_kqueue_init + ngx_kqueue_init, +#endif +#if (HAVE_IOCP) + ngx_iocp_init #endif }; @@ -86,6 +97,10 @@ void ngx_pre_thread(ngx_array_t *ls, ngx /* STUB */ int max_connections = 512; +#if (HAVE_IOCP) + ngx_event_type = NGX_IOCP_EVENT; +#endif + if (ngx_init_events(max_connections, log) == NGX_ERROR) { exit(1); } @@ -127,16 +142,38 @@ void ngx_pre_thread(ngx_array_t *ls, ngx ngx_memcpy(ev->log, c->log, sizeof(ngx_log_t)); c->read = ev; ev->data = c; - ev->event_handler = &ngx_event_accept; + ev->index = NGX_INVALID_INDEX; +#if 0 ev->listening = 1; - ev->index = NGX_INVALID_INDEX; +#endif ev->available = 0; #if (HAVE_DEFERRED_ACCEPT) ev->deferred_accept = s[i].deferred_accept; #endif + +#if (HAVE_IOCP) + + if (ngx_event_flags & NGX_HAVE_IOCP_EVENT) { + ev->event_handler = &ngx_event_acceptex; + + if (ngx_iocp_add_event(ev) == NGX_ERROR) { + return NGX_ERROR; + } + + ngx_event_post_acceptex(&s[i], 1); + + } else { + ev->event_handler = &ngx_event_accept; + } + +#else + + ev->event_handler = &ngx_event_accept; ngx_add_event(ev, NGX_READ_EVENT, 0); + +#endif } }