diff src/event/ngx_event_timer.h @ 205:4a9a2b1dd6fa

nginx-0.0.1-2003-12-04-17:53:00 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 04 Dec 2003 14:53:00 +0000
parents 8dee38ea9117
children 9aa426375256
line wrap: on
line diff
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -7,14 +7,58 @@
 #include <ngx_event.h>
 
 
+/*
+ * 1 msec - 49 days
+ * 10 msec - 1 years 4 months
+ * 50 msec - 6 years 10 months
+ * 100 msec - 13 years 8 months
+ */
+
+#define NGX_TIMER_RESOLUTION  50
+
+
+int  ngx_event_timer_init(ngx_cycle_t *cycle);
+void ngx_event_timer_done(ngx_cycle_t *cycle);
+int  ngx_event_find_timer(void);
+void ngx_event_expire_timers(ngx_msec_t timer);
+
+#if 0
 int  ngx_event_timer_init(ngx_cycle_t *cycle);
 void ngx_event_timer_done(ngx_cycle_t *cycle);
 void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer);
 int  ngx_event_find_timer(void);
 void ngx_event_set_timer_delta(ngx_msec_t timer);
 void ngx_event_expire_timers(ngx_msec_t timer);
+#endif
+
+
+extern ngx_rbtree_t  *ngx_event_timer_rbtree;
+
+
+ngx_inline static void ngx_event_del_timer(ngx_event_t *ev)
+{
+    ngx_rbtree_delete(&ngx_event_timer_rbtree, &ev->rbtree);
+
+    ev->timer_set = 0;
+}
 
 
+ngx_inline static void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer)
+{
+    if (ev->timer_set) {
+        ngx_del_timer(ev);
+    }
+
+    ev->rbtree.key = (ngx_int_t)
+                             (ngx_elapsed_msec + timer) / NGX_TIMER_RESOLUTION;
+
+    ngx_rbtree_insert(&ngx_event_timer_rbtree, &ev->rbtree);
+
+    ev->timer_set = 1;
+}
+
+
+#if 0
 
 ngx_inline static void ngx_event_del_timer(ngx_event_t *ev)
 {
@@ -45,5 +89,7 @@ ngx_inline static void ngx_event_del_tim
     ev->timer_set = 0;
 }
 
+#endif
+
 
 #endif /* _NGX_EVENT_TIMER_H_INCLUDED_ */