diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2003-10-10 15:10:50 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2003-10-10 15:10:50 +0000 |
| commit | b3e73d869ecef9248468e0ccc2d7d0abdbee495c (patch) | |
| tree | 78f032c1884aca4879ef86ce15f10f923111f66e /src/event/ngx_event.h | |
| parent | 1342d9cc29de7b6509a44a49cd66d1038d1e6d26 (diff) | |
| download | nginx-b3e73d869ecef9248468e0ccc2d7d0abdbee495c.tar.gz nginx-b3e73d869ecef9248468e0ccc2d7d0abdbee495c.tar.bz2 | |
nginx-0.0.1-2003-10-10-19:10:50 import
Diffstat (limited to 'src/event/ngx_event.h')
| -rw-r--r-- | src/event/ngx_event.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h index 029d185f5..8bb2017bd 100644 --- 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; +} + + + /* ***************************** */ |
