diff options
Diffstat (limited to 'src/event/ngx_event_timer.h')
| -rw-r--r-- | src/event/ngx_event_timer.h | 46 |
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_ */ |
