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);