コード例 #1
0
ファイル: core.c プロジェクト: magreenblatt/node
int uv_run_prework(uv_run_state* state) {
  BOOL block;
 
  uv_update_time(state->loop);
  uv_process_timers(state->loop);

  // Call idle callbacks if nothing to do.
  if (state->loop->pending_reqs_tail == NULL &&
      state->loop->endgame_handles == NULL) {
    uv_idle_invoke(state->loop);
  }

  uv_process_reqs(state->loop);
  uv_process_endgames(state->loop);

  if (!UV_LOOP_ALIVE(state->loop))
    return FALSE;

  uv_prepare_invoke(state->loop);

  block = (state->loop->idle_handles == NULL &&
           state->loop->pending_reqs_tail == NULL &&
           state->loop->endgame_handles == NULL &&
           UV_LOOP_ALIVE(state->loop));
  if (block)
    state->timeout = uv_get_poll_timeout(state->loop);
  else
    state->timeout = 0;

  state->count = 0;

  return TRUE;
}
コード例 #2
0
int uv_run_once(uv_loop_t* loop) {
  if (pGetQueuedCompletionStatusEx) {
    UV_LOOP_ONCE(loop, uv_poll_ex);
  } else {
    UV_LOOP_ONCE(loop, uv_poll);
  }
  return UV_LOOP_ALIVE(loop);
}
コード例 #3
0
int uv_run(uv_loop_t* loop) {
  if (pGetQueuedCompletionStatusEx) {
    UV_LOOP(loop, uv_poll_ex);
  } else {
    UV_LOOP(loop, uv_poll);
  }

  assert(!UV_LOOP_ALIVE((loop)));
  return 0;
}
コード例 #4
0
ファイル: core.c プロジェクト: magreenblatt/node
int uv_run_alive(uv_run_state* state) {
  return UV_LOOP_ALIVE(state->loop);
}