Branch data Line data Source code
1 : : #define DDEBUG 0
2 : :
3 : : #include "ddebug.h"
4 : :
5 : : #include "ngx_http_echo_timer.h"
6 : :
7 : : #include <stdlib.h>
8 : : #include <ngx_log.h>
9 : :
10 : : ngx_int_t
11 : 0 : ngx_http_echo_timer_elapsed_variable(ngx_http_request_t *r,
12 : : ngx_http_variable_value_t *v, uintptr_t data)
13 : : {
14 : : ngx_http_echo_ctx_t *ctx;
15 : : ngx_msec_int_t ms;
16 : : u_char *p;
17 : : ngx_time_t *tp;
18 : : size_t size;
19 : :
20 : 0 : ctx = ngx_http_get_module_ctx(r, ngx_http_echo_module);
21 [ # # ]: 0 : if (ctx->timer_begin.sec == 0) {
22 : 0 : ctx->timer_begin.sec = r->start_sec;
23 : 0 : ctx->timer_begin.msec = (ngx_msec_t) r->start_msec;
24 : : }
25 : :
26 : : /* force the ngx timer to update */
27 : :
28 : : #if defined nginx_version && (nginx_version >= 8035 \
29 : : || (nginx_version < 8000 && nginx_version >= 7066))
30 : 0 : ngx_time_update();
31 : : #else
32 : : ngx_time_update(0, 0);
33 : : #endif
34 : :
35 : 0 : tp = ngx_timeofday();
36 : :
37 : : dd("old sec msec: %ld %d\n", ctx->timer_begin.sec, ctx->timer_begin.msec);
38 : : dd("new sec msec: %ld %d\n", tp->sec, tp->msec);
39 : :
40 : 0 : ms = (ngx_msec_int_t)
41 : 0 : ((tp->sec - ctx->timer_begin.sec) * 1000 +
42 : 0 : (tp->msec - ctx->timer_begin.msec));
43 : 0 : ms = (ms >= 0) ? ms : 0;
44 : :
45 : 0 : size = sizeof("-9223372036854775808.000") - 1;
46 : 0 : p = ngx_palloc(r->pool, size);
47 : 0 : v->len = ngx_snprintf(p, size, "%T.%03M",
48 : : ms / 1000, ms % 1000) - p;
49 : 0 : v->data = p;
50 : :
51 : 0 : v->valid = 1;
52 : 0 : v->no_cacheable = 1;
53 : 0 : v->not_found = 0;
54 : 0 : return NGX_OK;
55 : : }
56 : :
57 : :
58 : : ngx_int_t
59 : 0 : ngx_http_echo_exec_echo_reset_timer(ngx_http_request_t *r,
60 : : ngx_http_echo_ctx_t *ctx)
61 : : {
62 : : dd("Exec timer...");
63 : :
64 : : /* force the ngx timer to update */
65 : :
66 : : #if defined nginx_version && (nginx_version >= 8035 \
67 : : || (nginx_version < 8000 && nginx_version >= 7066))
68 : 0 : ngx_time_update();
69 : : #else
70 : : ngx_time_update(0, 0);
71 : : #endif
72 : :
73 : 0 : ctx->timer_begin = *ngx_timeofday();
74 : 0 : return NGX_OK;
75 : : }
76 : :
|