Mercurial > hg > nginx-quic
diff src/event/ngx_event.h @ 143:5526213be452
nginx-0.0.1-2003-10-10-19:10:50 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 10 Oct 2003 15:10:50 +0000 |
parents | 54307053f185 |
children | ef8c87afcfc5 |
line wrap: on
line diff
--- a/src/event/ngx_event.h +++ b/src/event/ngx_event.h @@ -379,6 +379,106 @@ void ngx_worker(ngx_cycle_t *cycle); #include <ngx_iocp_module.h> #endif + + +ngx_inline static int ngx_handle_read_event(ngx_event_t *rev) +{ + if (ngx_event_flags & (NGX_HAVE_AIO_EVENT|NGX_HAVE_EDGE_EVENT)) { + + /* aio, iocp, epoll */ + + return NGX_OK; + } + + if (ngx_event_flags & NGX_HAVE_CLEAR_EVENT) { + + /* kqueue */ + + if (!rev->active && !rev->ready) { + if (ngx_add_event(rev, NGX_READ_EVENT, NGX_CLEAR_EVENT) + == NGX_ERROR) { + return NGX_ERROR; + } + } + + return NGX_OK; + } + + /* select, poll, /dev/poll */ + + if (!rev->active && !rev->ready) { + if (ngx_add_event(rev, NGX_READ_EVENT, NGX_LEVEL_EVENT) == NGX_ERROR) { + return NGX_ERROR; + } + + return NGX_OK; + } + + if (rev->active && rev->ready) { + if (ngx_del_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) { + return NGX_ERROR; + } + + return NGX_OK; + } + + return NGX_OK; +} + + +ngx_inline static int ngx_handle_write_event(ngx_event_t *wev, int lowat) +{ + if (ngx_event_flags & (NGX_HAVE_AIO_EVENT|NGX_HAVE_EDGE_EVENT)) { + + /* aio, iocp, epoll */ + + return NGX_OK; + } + + if (ngx_event_flags & NGX_HAVE_CLEAR_EVENT) { + + /* kqueue */ + +#if (HAVE_LOWAT_EVENT) /* kqueue's NOTE_LOWAT */ + + if (ngx_event_flags & NGX_HAVE_LOWAT_EVENT) { + wev->lowat = lowat; + } + +#endif + if (!wev->active && !wev->ready) { + if (ngx_add_event(wev, NGX_WRITE_EVENT, NGX_CLEAR_EVENT) + == NGX_ERROR) { + return NGX_ERROR; + } + } + + return NGX_OK; + } + + /* select, poll, /dev/poll */ + + if (!wev->active && !wev->ready) { + if (ngx_add_event(wev, NGX_WRITE_EVENT, NGX_LEVEL_EVENT) == NGX_ERROR) { + return NGX_ERROR; + } + + return NGX_OK; + } + + if (wev->active && wev->ready) { + if (ngx_del_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) { + return NGX_ERROR; + } + + return NGX_OK; + } + + return NGX_OK; +} + + + /* ***************************** */