1.ngx_event_s可以是普通的epoll读写事件(参考ngx_event_connect_peer->ngx_add_conn或者ngx_add_event),通过读写事件触发 2.也可以是普通定时器事件(参考ngx_cache_manager_process_handler->ngx_add_timer(ngx_event_add_timer)),通过ngx_process_events_and_timers中的 epoll_wait返回,可以是读写事件触发返...
timer 为 NGX_TIMER_INFINITE, 表示 事件阻塞为永久, 当 事件阻塞为永久时,由于 ngx 设置了定时器,所以能实现周期检查超时。 ngx_event_process_init() 设置了定时器 SIGALRM 的回调函数会设置 ngx_event_timer_alarm = 1。 由于ngx_event_timer_alarm 为 1 , 所以会调用 ngx_time_update() 由于更新了时间...
"timer delta: %M", delta); /* ngx_posted_accept_events是一个事件队列,暂存epoll从监听套接口wait到的accept事件。 前文提到的NGX_POST_EVENTS标志被使用后,会将所有的accept事件暂存到这个队列 */ if (ngx_posted_accept_events) { ngx_event_process_posted(cycle, &ngx_posted_accept_events); } //...
ngx_add_timer(&ngx_cleaner_event, 30000); ngx_cleaner_event.timer_set = 1; } ... */ unsigned delayed:1; /* 标志位,delayed为1表示需要延迟处理这个事件,它仅用于限速功能 */ unsigned deferred_accept:1; /* 标志位,为1表示延迟建立TCP连接,也就是TCP三次握手后并不建立连接,而是等到真正收到数...
// 由ngx_event_expire_timers遍历定时器红黑树,找出所有过期的事件设置此标志位 unsigned timedout:1; // 事件是否在定时器里 // ngx_add_timer加入定时器时设置 // 处理完定时器事件后清除标记 unsigned timer_set:1; // 需要延迟处理,用于限速,nginx会暂不写数据 // 参考ngx_http_write_filter_...
r->read_event_handler = ngx_http_test_reading; r->write_event_handler = ngx_http_limit_req_delay; /* 添加到定时器红黑树上,等到过期时调用 ngx_http_limit_req_delay */ ngx_add_timer(r->connection->write, delay); /* * 这里返回 NGX_AGAIN,让这个模块有机会再介入这个请求, ...
static void ngx_http_dyups_read_msg_locked(ngx_event_t *ev) { ... sh = ngx_dyups_global_ctx.sh; shpool = ngx_dyups_global_ctx.shpool; for (i = 0; i < ccf->worker_processes; i++) { status = &sh->status[i]; if (status->pid == 0 || status->pid == ngx_pid) { ...
static void ngx_http_dyups_read_msg_locked(ngx_event_t *ev) { ... sh = ngx_dyups_global_ctx.sh; shpool = ngx_dyups_global_ctx.shpool; for (i = 0; i < ccf->worker_processes; i++) { status = &sh->status[i]; if (status->pid == 0 || status->pid == ngx_pid) { ...
ngx_event_t *ev; /* entry lctx sleep event */ void *data; const char *code; Expand All @@ -43,7 +48,9 @@ struct ngx_wasm_lua_ctx_s { #endif } ctx; unsigned yielded:1; unsigned entry:1; /* is entry lctx */ unsigned yielded:1; /* has yielded at least once */ unsigned...
ngx_add_timer(c->write, s->timeout); if (ngx_handle_write_event(c->write, 0) != NGX_OK) { ngx_rtmp_finalize_session(s); } return; } if (n < 0) { ngx_rtmp_finalize_session(s); return; } s->out_bytes += n; ...