Mercurial > hg > nginx
comparison src/event/ngx_event_timer.c @ 207:6e0fef527732
nginx-0.0.1-2003-12-05-20:07:27 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 05 Dec 2003 17:07:27 +0000 |
parents | 9aa426375256 |
children | e1c815be05ae |
comparison
equal
deleted
inserted
replaced
206:9aa426375256 | 207:6e0fef527732 |
---|---|
3 #include <ngx_core.h> | 3 #include <ngx_core.h> |
4 #include <ngx_event.h> | 4 #include <ngx_event.h> |
5 | 5 |
6 | 6 |
7 ngx_rbtree_t *ngx_event_timer_rbtree; | 7 ngx_rbtree_t *ngx_event_timer_rbtree; |
8 ngx_rbtree_t ngx_event_timer_sentinel; | |
8 | 9 |
9 | 10 |
10 int ngx_event_timer_init(ngx_cycle_t *cycle) | 11 int ngx_event_timer_init(ngx_cycle_t *cycle) |
11 { | 12 { |
12 ngx_event_timer_rbtree = &sentinel; | 13 ngx_event_timer_rbtree = &ngx_event_timer_sentinel; |
13 sentinel.left = &sentinel; | 14 ngx_event_timer_sentinel.left = &ngx_event_timer_sentinel; |
14 sentinel.right = &sentinel; | 15 ngx_event_timer_sentinel.right = &ngx_event_timer_sentinel; |
15 sentinel.parent = &sentinel; | 16 ngx_event_timer_sentinel.parent = &ngx_event_timer_sentinel; |
16 | 17 |
17 return NGX_OK; | 18 return NGX_OK; |
18 } | 19 } |
19 | 20 |
20 | 21 |
25 | 26 |
26 ngx_msec_t ngx_event_find_timer(void) | 27 ngx_msec_t ngx_event_find_timer(void) |
27 { | 28 { |
28 ngx_rbtree_t *node; | 29 ngx_rbtree_t *node; |
29 | 30 |
30 node = ngx_rbtree_min(ngx_event_timer_rbtree); | 31 node = ngx_rbtree_min(ngx_event_timer_rbtree, &ngx_event_timer_sentinel); |
31 | 32 |
32 if (node == &sentinel) { | 33 if (node == &ngx_event_timer_sentinel) { |
33 return 0; | 34 return 0; |
34 | 35 |
35 } else { | 36 } else { |
36 return (ngx_msec_t) | 37 return (ngx_msec_t) |
37 (node->key * NGX_TIMER_RESOLUTION - ngx_elapsed_msec); | 38 (node->key * NGX_TIMER_RESOLUTION - ngx_elapsed_msec); |
43 { | 44 { |
44 ngx_event_t *ev; | 45 ngx_event_t *ev; |
45 ngx_rbtree_t *node; | 46 ngx_rbtree_t *node; |
46 | 47 |
47 for ( ;; ) { | 48 for ( ;; ) { |
48 node = ngx_rbtree_min(ngx_event_timer_rbtree); | 49 node = ngx_rbtree_min(ngx_event_timer_rbtree, |
49 | 50 &ngx_event_timer_sentinel); |
50 if (node == &sentinel) { | 51 |
52 if (node == &ngx_event_timer_sentinel) { | |
51 break; | 53 break; |
52 } | 54 } |
53 | 55 |
54 if ((ngx_msec_t) node->key <= (ngx_msec_t) | 56 if ((ngx_msec_t) node->key <= (ngx_msec_t) |
55 (ngx_elapsed_msec + timer) / NGX_TIMER_RESOLUTION) | 57 (ngx_old_elapsed_msec + timer) / NGX_TIMER_RESOLUTION) |
56 { | 58 { |
57 ev = (ngx_event_t *) | 59 ev = (ngx_event_t *) |
58 ((char *) node - offsetof(ngx_event_t, rbtree_key)); | 60 ((char *) node - offsetof(ngx_event_t, rbtree_key)); |
59 | 61 |
60 ngx_del_timer(ev); | 62 ngx_del_timer(ev); |