Mercurial > hg > nginx-quic
comparison src/event/ngx_event.h @ 0:4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
The first code that uses "ngx_" prefix, the previous one used "gx_" prefix.
At that point the code is not yet usable. The first draft ideas are dated
back to 23.10.2001.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 06 Aug 2002 16:39:45 +0000 |
parents | |
children | d220029ac7f3 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4eff17414a43 |
---|---|
1 #ifndef _NGX_EVENT_H_INCLUDED_ | |
2 #define _NGX_EVENT_H_INCLUDED_ | |
3 | |
4 | |
5 #include <ngx_config.h> | |
6 #include <ngx_types.h> | |
7 #include <ngx_log.h> | |
8 | |
9 typedef struct ngx_event_s ngx_event_t; | |
10 | |
11 struct ngx_event_s { | |
12 void *data; | |
13 | |
14 int (*event_handler)(ngx_event_t *ev); | |
15 int (*close_handler)(ngx_event_t *ev); | |
16 void *context; | |
17 char *action; | |
18 | |
19 ngx_event_t *prev; /* queue in select(), poll() */ | |
20 ngx_event_t *next; | |
21 | |
22 int (*timer_handler)(ngx_event_t *ev); | |
23 ngx_event_t *timer_prev; | |
24 ngx_event_t *timer_next; | |
25 | |
26 u_int timer_delta; | |
27 u_int timer; | |
28 | |
29 ngx_log_t *log; | |
30 | |
31 int available; /* kqueue only: */ | |
32 /* accept: number of sockets that wait */ | |
33 /* to be accepted */ | |
34 /* read: bytes to read */ | |
35 /* write: available space in buffer */ | |
36 /* otherwise: */ | |
37 /* accept: 1 if accept many, 0 otherwise */ | |
38 | |
39 /* flags - int are probably faster on write then bits ??? */ | |
40 unsigned listening:1; | |
41 unsigned write:1; | |
42 | |
43 unsigned ready:1; | |
44 unsigned timedout:1; | |
45 unsigned process:1; | |
46 unsigned read_discarded:1; | |
47 | |
48 unsigned unexpected_eof:1; | |
49 | |
50 #if (HAVE_DEFERRED_ACCEPT) | |
51 unsigned accept_filter:1; | |
52 #endif | |
53 #if (HAVE_KQUEUE) | |
54 unsigned eof:1; | |
55 int errno; | |
56 #endif | |
57 }; | |
58 | |
59 typedef enum { | |
60 NGX_SELECT_EVENT = 0, | |
61 #if (HAVE_POLL) | |
62 NGX_POLL_EVENT, | |
63 #endif | |
64 #if (HAVE_KQUEUE) | |
65 NGX_KQUEUE_EVENT, | |
66 #endif | |
67 } ngx_event_type_e ; | |
68 | |
69 typedef struct { | |
70 int (*add)(ngx_event_t *ev, int event, u_int flags); | |
71 int (*del)(ngx_event_t *ev, int event); | |
72 int (*process)(ngx_log_t *log); | |
73 /* | |
74 int (*read)(ngx_event_t *ev, char *buf, size_t size); | |
75 int (*write)(ngx_event_t *ev, char *buf, size_t size); | |
76 */ | |
77 } ngx_event_actions_t; | |
78 | |
79 | |
80 #if (HAVE_KQUEUE) | |
81 | |
82 #define NGX_READ_EVENT EVFILT_READ | |
83 #define NGX_WRITE_EVENT EVFILT_WRITE | |
84 #define NGX_TIMER_EVENT (-EVFILT_SYSCOUNT - 1) | |
85 | |
86 #define NGX_ONESHOT_EVENT EV_ONESHOT | |
87 #define NGX_CLEAR_EVENT EV_CLEAR | |
88 | |
89 #else | |
90 | |
91 #define NGX_READ_EVENT 0 | |
92 #define NGX_WRITE_EVENT 1 | |
93 #define NGX_TIMER_EVENT 2 | |
94 | |
95 #define NGX_ONESHOT_EVENT 1 | |
96 #define NGX_CLEAR_EVENT 2 | |
97 | |
98 #endif | |
99 | |
100 | |
101 #if (USE_KQUEUE) | |
102 #define ngx_init_events ngx_kqueue_init | |
103 #define ngx_process_events ngx_kqueue_process_events | |
104 #define ngx_add_event ngx_kqueue_add_event | |
105 #define ngx_del_event ngx_kqueue_del_event | |
106 #else | |
107 #define ngx_init_events (ngx_event_init[ngx_event_type]) | |
108 #define ngx_process_events ngx_event_actions.process | |
109 #define ngx_add_event ngx_event_actions.add | |
110 #define ngx_del_event ngx_event_actions.del | |
111 #endif | |
112 | |
113 | |
114 extern ngx_event_t *ngx_read_events; | |
115 extern ngx_event_t *ngx_write_events; | |
116 extern ngx_connection_t *ngx_connections; | |
117 | |
118 #if !(USE_KQUEUE) | |
119 extern ngx_event_actions_t ngx_event_actions; | |
120 extern ngx_event_type_e ngx_event_type; | |
121 #endif | |
122 | |
123 | |
124 void ngx_worker(ngx_listen_t *sock, int n, ngx_pool_t *pool, ngx_log_t *log); | |
125 | |
126 | |
127 #endif /* _NGX_EVENT_H_INCLUDED_ */ |