windows: align uv_run code with unix
This commit is contained in:
parent
ce1a266c05
commit
79880121ce
@ -249,10 +249,13 @@ static void uv_poll_ex(uv_loop_t* loop, int block) {
|
||||
}
|
||||
}
|
||||
|
||||
#define UV_LOOP_ALIVE(loop) \
|
||||
((loop)->active_handles > 0 || \
|
||||
!ngx_queue_empty(&(loop)->active_reqs) || \
|
||||
(loop)->endgame_handles != NULL)
|
||||
|
||||
static int uv__loop_alive(uv_loop_t* loop) {
|
||||
return loop->active_handles > 0 ||
|
||||
!ngx_queue_empty(&loop->active_reqs) ||
|
||||
loop->endgame_handles != NULL;
|
||||
}
|
||||
|
||||
|
||||
int uv_run(uv_loop_t *loop, uv_run_mode mode) {
|
||||
int r;
|
||||
@ -263,8 +266,10 @@ int uv_run(uv_loop_t *loop, uv_run_mode mode) {
|
||||
else
|
||||
poll = &uv_poll;
|
||||
|
||||
r = UV_LOOP_ALIVE(loop);
|
||||
while (r) {
|
||||
if (!uv__loop_alive(loop))
|
||||
return 0;
|
||||
|
||||
do {
|
||||
uv_update_time(loop);
|
||||
uv_process_timers(loop);
|
||||
|
||||
@ -282,14 +287,13 @@ int uv_run(uv_loop_t *loop, uv_run_mode mode) {
|
||||
(*poll)(loop, loop->idle_handles == NULL &&
|
||||
loop->pending_reqs_tail == NULL &&
|
||||
loop->endgame_handles == NULL &&
|
||||
UV_LOOP_ALIVE(loop) &&
|
||||
(loop->active_handles > 0 ||
|
||||
!ngx_queue_empty(&loop->active_reqs)) &&
|
||||
!(mode & UV_RUN_NOWAIT));
|
||||
|
||||
uv_check_invoke(loop);
|
||||
r = UV_LOOP_ALIVE(loop);
|
||||
r = uv__loop_alive(loop);
|
||||
} while (r && !(mode & (UV_RUN_ONCE | UV_RUN_NOWAIT)));
|
||||
|
||||
if (mode & (UV_RUN_ONCE | UV_RUN_NOWAIT))
|
||||
break;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user