comparison src/event/ngx_event.h @ 8:708f8bb772ec

nginx-0.0.1-2002-09-02-18:48:24 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 02 Sep 2002 14:48:24 +0000
parents b5481d6fbbd4
children 6f58641241bb
comparison
equal deleted inserted replaced
7:b5481d6fbbd4 8:708f8bb772ec
2 #define _NGX_EVENT_H_INCLUDED_ 2 #define _NGX_EVENT_H_INCLUDED_
3 3
4 4
5 #include <ngx_config.h> 5 #include <ngx_config.h>
6 #include <ngx_types.h> 6 #include <ngx_types.h>
7 #include <ngx_time.h>
7 #include <ngx_socket.h> 8 #include <ngx_socket.h>
8 #include <ngx_log.h> 9 #include <ngx_log.h>
9 #include <ngx_alloc.h> 10 #include <ngx_alloc.h>
10 #include <ngx_array.h> 11 #include <ngx_array.h>
11 12
38 /* write: available space in buffer */ 39 /* write: available space in buffer */
39 /* otherwise: */ 40 /* otherwise: */
40 /* accept: 1 if accept many, 0 otherwise */ 41 /* accept: 1 if accept many, 0 otherwise */
41 42
42 /* flags - int are probably faster on write then bits ??? */ 43 /* flags - int are probably faster on write then bits ??? */
44 #if !(USE_KQUEUE)
45 unsigned oneshot:1;
46 #endif
43 unsigned listening:1; 47 unsigned listening:1;
44 unsigned write:1; 48 unsigned write:1;
45 49
46 unsigned ready:1; 50 unsigned ready:1;
47 unsigned timedout:1; 51 unsigned timedout:1;
52 unsigned blocked:1;
53
48 unsigned process:1; 54 unsigned process:1;
49 unsigned read_discarded:1; 55 unsigned read_discarded:1;
50 56
51 unsigned unexpected_eof:1; 57 unsigned unexpected_eof:1;
52 58
70 } ngx_event_type_e ; 76 } ngx_event_type_e ;
71 77
72 typedef struct { 78 typedef struct {
73 int (*add)(ngx_event_t *ev, int event, u_int flags); 79 int (*add)(ngx_event_t *ev, int event, u_int flags);
74 int (*del)(ngx_event_t *ev, int event); 80 int (*del)(ngx_event_t *ev, int event);
81 void (*timer)(ngx_event_t *ev, ngx_msec_t timer);
75 int (*process)(ngx_log_t *log); 82 int (*process)(ngx_log_t *log);
76 int (*read)(ngx_event_t *ev, char *buf, size_t size); 83 int (*read)(ngx_event_t *ev, char *buf, size_t size);
77 /* 84 /*
78 int (*write)(ngx_event_t *ev, char *buf, size_t size); 85 int (*write)(ngx_event_t *ev, char *buf, size_t size);
79 */ 86 */
91 98
92 #if (HAVE_KQUEUE) 99 #if (HAVE_KQUEUE)
93 100
94 #define NGX_READ_EVENT EVFILT_READ 101 #define NGX_READ_EVENT EVFILT_READ
95 #define NGX_WRITE_EVENT EVFILT_WRITE 102 #define NGX_WRITE_EVENT EVFILT_WRITE
96 #define NGX_TIMER_EVENT (-EVFILT_SYSCOUNT - 1)
97 103
98 #define NGX_LEVEL_EVENT 0 104 #define NGX_LEVEL_EVENT 0
99 #define NGX_ONESHOT_EVENT EV_ONESHOT 105 #define NGX_ONESHOT_EVENT EV_ONESHOT
106
107 #ifndef HAVE_CLEAR_EVENT
108 #define HAVE_CLEAR_EVENT 1
100 #define NGX_CLEAR_EVENT EV_CLEAR 109 #define NGX_CLEAR_EVENT EV_CLEAR
110 #endif
101 111
102 #else 112 #else
103 113
104 #define NGX_READ_EVENT 0 114 #define NGX_READ_EVENT 0
105 #define NGX_WRITE_EVENT 1 115 #define NGX_WRITE_EVENT 1
106 #define NGX_TIMER_EVENT 2
107 116
108 #define NGX_LEVEL_EVENT 0 117 #define NGX_LEVEL_EVENT 0
109 #define NGX_ONESHOT_EVENT 1 118 #define NGX_ONESHOT_EVENT 1
110 #define NGX_CLEAR_EVENT 2
111 119
112 #endif 120 #endif
113 121
114 122
115 #if (USE_KQUEUE) 123 #if (USE_KQUEUE)
116 124
117 #define ngx_init_events ngx_kqueue_init 125 #define ngx_init_events ngx_kqueue_init
118 #define ngx_process_events ngx_kqueue_process_events 126 #define ngx_process_events ngx_kqueue_process_events
119 #define ngx_add_event ngx_kqueue_add_event 127 #define ngx_kqueue_add_event(ev, event) \
120 #define ngx_del_event ngx_kqueue_del_event 128 ngx_kqueue_set_event(ev, event, EV_ADD | flags)
129 #define ngx_kqueue_del_event(ev, event) \
130 ngx_kqueue_set_event(ev, event, EV_DELETE)
131 #define ngx_add_timer ngx_kqueue_add_timer
121 #define ngx_event_recv ngx_event_recv_core 132 #define ngx_event_recv ngx_event_recv_core
122 133
123 #else 134 #else
124 135
125 #define ngx_init_events (ngx_event_init[ngx_event_type]) 136 #define ngx_init_events (ngx_event_init[ngx_event_type])
126 #define ngx_process_events ngx_event_actions.process 137 #define ngx_process_events ngx_event_actions.process
127 #define ngx_add_event ngx_event_actions.add 138 #define ngx_add_event ngx_event_actions.add
128 #define ngx_del_event ngx_event_actions.del 139 #define ngx_del_event ngx_event_actions.del
140 #define ngx_add_timer ngx_event_actions.timer
129 #define ngx_event_recv ngx_event_recv_core 141 #define ngx_event_recv ngx_event_recv_core
130 142
131 #endif 143 #endif
132 144
133
134 #define ngx_add_timer(ev, time) ngx_add_event(ev, NGX_TIMER_EVENT, time)
135 145
136 static void ngx_inline ngx_del_timer(ngx_event_t *ev) 146 static void ngx_inline ngx_del_timer(ngx_event_t *ev)
137 { 147 {
138 if (ev->timer_prev) 148 if (ev->timer_prev)
139 ev->timer_prev->timer_next = ev->timer_next; 149 ev->timer_prev->timer_next = ev->timer_next;