annotate src/event/ngx_event_timer.h @ 214:e0c502f15852

nginx-0.0.1-2003-12-22-12:40:48 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 22 Dec 2003 09:40:48 +0000
parents f536f91e8e99
children 05592fd7a436
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1 #ifndef _NGX_EVENT_TIMER_H_INCLUDED_
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 #define _NGX_EVENT_TIMER_H_INCLUDED_
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5 #include <ngx_config.h>
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
6 #include <ngx_core.h>
50
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7 #include <ngx_event.h>
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
10 /*
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
11 * 32 bit timer key value resolution
206
9aa426375256 nginx-0.0.1-2003-12-05-10:11:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
12 *
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
13 * 1 msec - 49 days
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
14 * 10 msec - 1 years 4 months
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
15 * 50 msec - 6 years 10 months
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
16 * 100 msec - 13 years 8 months
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
17 */
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
18
213
f536f91e8e99 nginx-0.0.1-2003-12-19-15:45:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
19 #define NGX_TIMER_RESOLUTION 1
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
20
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
21
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 207
diff changeset
22 #if 0
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 207
diff changeset
23 int ngx_event_timer_init(void);
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 207
diff changeset
24 #endif
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 207
diff changeset
25 /* STUB */ int ngx_event_timer_init(ngx_cycle_t *cycle);
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 207
diff changeset
26 /* STUB */ void ngx_event_timer_done(ngx_cycle_t *cycle);
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 207
diff changeset
27
206
9aa426375256 nginx-0.0.1-2003-12-05-10:11:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
28 ngx_msec_t ngx_event_find_timer(void);
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
29 void ngx_event_expire_timers(ngx_msec_t timer);
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
30
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
31
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
32 extern ngx_rbtree_t *ngx_event_timer_rbtree;
207
6e0fef527732 nginx-0.0.1-2003-12-05-20:07:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 206
diff changeset
33 extern ngx_rbtree_t ngx_event_timer_sentinel;
6e0fef527732 nginx-0.0.1-2003-12-05-20:07:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 206
diff changeset
34
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
35
214
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
36 #define ngx_event_ident(p) ((ngx_connection_t *) (p))->fd
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
37
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
38
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
39 ngx_inline static void ngx_event_del_timer(ngx_event_t *ev)
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
40 {
214
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
41 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
42 "event timer del: %d: %d",
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
43 ngx_event_ident(ev->data), ev->rbtree_key);
213
f536f91e8e99 nginx-0.0.1-2003-12-19-15:45:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
44
207
6e0fef527732 nginx-0.0.1-2003-12-05-20:07:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 206
diff changeset
45 ngx_rbtree_delete(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
206
9aa426375256 nginx-0.0.1-2003-12-05-10:11:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
46 (ngx_rbtree_t *) &ev->rbtree_key);
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
47
214
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
48 #if (NGX_DEBUG)
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
49 ev->rbtree_left = NULL;
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
50 ev->rbtree_right = NULL;
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
51 ev->rbtree_parent = NULL;
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
52 #endif
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
53
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
54 ev->timer_set = 0;
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
55 }
50
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
56
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
57
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
58 ngx_inline static void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
59 {
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
60 if (ev->timer_set) {
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
61 ngx_del_timer(ev);
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
62 }
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
63
206
9aa426375256 nginx-0.0.1-2003-12-05-10:11:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
64 ev->rbtree_key = (ngx_int_t)
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
65 (ngx_elapsed_msec / NGX_TIMER_RESOLUTION * NGX_TIMER_RESOLUTION
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
66 + timer) / NGX_TIMER_RESOLUTION;
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
67 #if 0
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
68 (ngx_elapsed_msec + timer) / NGX_TIMER_RESOLUTION;
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 209
diff changeset
69 #endif
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
70
214
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
71 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
72 "event timer add: %d: %d",
e0c502f15852 nginx-0.0.1-2003-12-22-12:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 213
diff changeset
73 ngx_event_ident(ev->data), ev->rbtree_key);
213
f536f91e8e99 nginx-0.0.1-2003-12-19-15:45:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
74
207
6e0fef527732 nginx-0.0.1-2003-12-05-20:07:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 206
diff changeset
75 ngx_rbtree_insert(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
206
9aa426375256 nginx-0.0.1-2003-12-05-10:11:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
76 (ngx_rbtree_t *) &ev->rbtree_key);
205
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
77
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
78 ev->timer_set = 1;
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
79 }
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
80
4a9a2b1dd6fa nginx-0.0.1-2003-12-04-17:53:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
81
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 53
diff changeset
82 #endif /* _NGX_EVENT_TIMER_H_INCLUDED_ */