int uv_timer_again(uv_timer_t* timer) { if (!uv__timer_active(timer)) { uv__set_sys_error(timer->loop, EINVAL); return -1; } assert(uv__timer_repeating(timer)); ev_timer_again(timer->loop->ev, &timer->timer_watcher); return 0; }
static void uv__timer_cb(EV_P_ ev_timer* w, int revents) { uv_timer_t* timer = container_of(w, uv_timer_t, timer_watcher); if (!uv__is_active(timer)) return; if (!uv__timer_repeating(timer)) uv__handle_stop(timer); if (timer->timer_cb) timer->timer_cb(timer, 0); }
static void uv__timer_cb(EV_P_ ev_timer* w, int revents) { uv_timer_t* timer = container_of(w, uv_timer_t, timer_watcher); assert(uv__timer_active(timer)); if (!uv__timer_repeating(timer)) { timer->flags &= ~UV_TIMER_ACTIVE; ev_ref(EV_A); } if (timer->timer_cb) { timer->timer_cb(timer, 0); } }
static void uv__timer_cb(EV_P_ ev_timer* w, int revents) { uv_timer_t* timer = w->data; assert(uv__timer_active(timer)); if (!uv__timer_repeating(timer)) { timer->flags &= ~UV_TIMER_ACTIVE; ev_ref(EV_A); } if (timer->timer_cb) { timer->timer_cb(timer, 0); } }