summaryrefslogtreecommitdiffhomepage
path: root/src/event/ngx_event_timer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/ngx_event_timer.h')
-rw-r--r--src/event/ngx_event_timer.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
index 911667d14..ea8105ee3 100644
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -7,15 +7,59 @@
#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)
{
#if (NGX_DEBUG_EVENT)
@@ -45,5 +89,7 @@ ngx_inline static void ngx_event_del_timer(ngx_event_t *ev)
ev->timer_set = 0;
}
+#endif
+
#endif /* _NGX_EVENT_TIMER_H_INCLUDED_ */