annotate src/event/ngx_event_timer.c @ 50:b288069a8696

nginx-0.0.1-2003-01-23-21:47:54 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 23 Jan 2003 18:47:54 +0000
parents c091d5b853c8
children a6afbb8a2ada
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: 49
diff changeset
1
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
2 #include <ngx_config.h>
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
3
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
4 #include <ngx_core.h>
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
5 #include <ngx_log.h>
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
6 #include <ngx_alloc.h>
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
7 #include <ngx_connection.h>
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
8 #include <ngx_event.h>
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
9
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
10 #include <ngx_event_timer.h>
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
11
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
12 /* STUB */
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
13 #define NGX_TIMER_HASH_SIZE 5
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
14
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
15 ngx_event_t *ngx_timer_queue;
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
16 int ngx_timer_hash_size;
49
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18
50
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
19 int ngx_event_init_timer(ngx_log_t *log)
49
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20 {
50
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
21 int i;
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
22
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
23 ngx_timer_hash_size = NGX_TIMER_HASH_SIZE;
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
24
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
25 ngx_test_null(ngx_timer_queue,
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
26 ngx_alloc(ngx_timer_hash_size * sizeof(ngx_event_t), log),
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
27 NGX_ERROR);
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
28
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
29 for (i = 0; i < ngx_timer_hash_size; i++) {
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
30 ngx_timer_queue[i].timer_prev = &ngx_timer_queue[i];
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
31 ngx_timer_queue[i].timer_next = &ngx_timer_queue[i];
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
32 }
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
33
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
34 return NGX_OK;
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
35 }
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
36
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
37
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
38 void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
39 {
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
40 int n;
49
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
41 ngx_event_t *e;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
42
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43 #if (NGX_DEBUG_EVENT)
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44 ngx_connection_t *c = (ngx_connection_t *) ev->data;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
45 ngx_log_debug(ev->log, "set timer: %d:%d" _ c->fd _ timer);
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
46 #endif
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
47
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
48 if (ev->timer_next || ev->timer_prev) {
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49 ngx_log_error(NGX_LOG_ALERT, ev->log, 0, "timer already set");
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
50 return;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
51 }
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
52
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
53 n = timer % ngx_timer_hash_size;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
54
50
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
55 for (e = ngx_timer_queue[n].timer_next;
b288069a8696 nginx-0.0.1-2003-01-23-21:47:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 49
diff changeset
56 e != &ngx_timer_queue[n] && timer > e->timer_delta;
49
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
57 e = e->timer_next)
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
58 {
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
59 timer -= e->timer_delta;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
60 }
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
61
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
62 ev->timer_delta = timer;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
63
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
64 ev->timer_next = e;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
65 ev->timer_prev = e->timer_prev;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
66
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
67 e->timer_prev->timer_next = ev;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
68 e->timer_prev = ev;
c091d5b853c8 nginx-0.0.1-2003-01-21-20:36:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
69 }