/* * Class: com_oracle_libuv_handles_TimerHandle * Method: _get_repeat * Signature: (J)J */ JNIEXPORT jlong JNICALL Java_com_oracle_libuv_handles_TimerHandle__1get_1repeat (JNIEnv *env, jobject that, jlong timer) { assert(timer); uv_timer_t* handle = reinterpret_cast<uv_timer_t*>(timer); return uv_timer_get_repeat(handle); }
static PyObject * Timer_repeat_get(Timer *self, void *closure) { UNUSED_ARG(closure); RAISE_IF_HANDLE_CLOSED(self, PyExc_HandleClosedError, NULL); return PyFloat_FromDouble(uv_timer_get_repeat((uv_timer_t *)UV_HANDLE(self))/1000.0); }
static int lua_time_interval(lua_State * L) { int ret = 0,t=lua_type(L,2); luatimer_t * tm = (luatimer_t *)luaL_checkudata(L, 1,UVLUA_TIMER_CLS); if(NULL != tm){ if(LUA_TNIL != t && LUA_TNONE !=t){ int repeat = lua_tointeger(L, 2); if(repeat > 0){ uv_loop_t * loop = tm->timer.loop; int restart = 0; if(uv_is_active((uv_handle_t *)&tm->timer)){ uv_timer_stop(&tm->timer); restart=1; } uv_timer_set_repeat(&tm->timer, repeat); if(restart) uv_timer_again(&tm->timer); } } lua_pushinteger(L, uv_timer_get_repeat(&tm->timer)); }else{ lua_pushinteger(L, 0); } return 1; }
static void repeat_2_cb(uv_timer_t* handle) { TUV_ASSERT(handle == &repeat_2); TUV_ASSERT(repeat_2_cb_allowed); repeat_2_cb_called++; if (uv_timer_get_repeat(&repeat_2) == 0) { TUV_ASSERT(0 == uv_is_active((uv_handle_t*) handle)); uv_close((uv_handle_t*)handle, close_cb); return; } TUV_ASSERT(uv_timer_get_repeat(&repeat_2) == 100); /* This shouldn't take effect immediately. */ uv_timer_set_repeat(&repeat_2, 0); }
/*int64_t uv_timer_get_repeat(uv_timer_t* timer); */ int luv_timer_get_repeat(lua_State* L) { uv_timer_t* timer = (uv_timer_t*)luv_checkudata(L, 1, "timer"); int64_t repeat = uv_timer_get_repeat(timer); lua_pushinteger(L, repeat); return 1; }
static PyObject * Timer_repeat_get(Timer *self, void *closure) { UNUSED_ARG(closure); RAISE_IF_HANDLE_NOT_INITIALIZED(self, NULL); return PyFloat_FromDouble(uv_timer_get_repeat(&self->timer_h)/1000.0); }
int lua_uv_timer_repeat(lua_State * L) { uv_timer_t * t = lua_generic_object<uv_timer_t>(L, 1); if (lua_isnumber(L, 2)) { uv_timer_set_repeat(t, lua_tonumber(L, 2)); lua_settop(L, 1); return 1; // return timer } else { lua_pushnumber(L, uv_timer_get_repeat(t)); return 1; } }
void on_timer(uv_timer_t* handle) { Timer* timer = (Timer*)handle->data; if (timer->cb) { timer->cb(); } if (uv_timer_get_repeat(handle) == 0) { timer->self.reset(); } }
static void repeat_2_cb(uv_timer_t* handle, int status) { ASSERT(handle == &repeat_2); ASSERT(status == 0); ASSERT(repeat_2_cb_allowed); LOGF("repeat_2_cb called after %ld ms\n", (long int)(uv_now() - start_time)); repeat_2_cb_called++; if (uv_timer_get_repeat(&repeat_2) == 0) { ASSERT(!uv_is_active((uv_handle_t*)handle)); uv_close((uv_handle_t*)handle, close_cb); return; } LOGF("uv_timer_get_repeat %ld ms\n", (long int)uv_timer_get_repeat(&repeat_2)); ASSERT(uv_timer_get_repeat(&repeat_2) == 100); /* This shouldn't take effect immediately. */ uv_timer_set_repeat(&repeat_2, 0); }
static void repeat_2_cb(uv_timer_t* handle) { ASSERT(handle == &repeat_2); ASSERT(repeat_2_cb_allowed); fprintf(stderr, "repeat_2_cb called after %ld ms\n", (long int)(uv_now(uv_default_loop()) - start_time)); fflush(stderr); repeat_2_cb_called++; if (uv_timer_get_repeat(&repeat_2) == 0) { ASSERT(0 == uv_is_active((uv_handle_t*) handle)); uv_close((uv_handle_t*)handle, close_cb); return; } fprintf(stderr, "uv_timer_get_repeat %ld ms\n", (long int)uv_timer_get_repeat(&repeat_2)); fflush(stderr); ASSERT(uv_timer_get_repeat(&repeat_2) == 100); /* This shouldn't take effect immediately. */ uv_timer_set_repeat(&repeat_2, 0); }
static void event_callback(uv_timer_t *timer) { struct worker_ctx *worker = timer->loop->data; lua_State *L = worker->engine->L; /* Retrieve callback and execute */ lua_rawgeti(L, LUA_REGISTRYINDEX, (intptr_t) timer->data); lua_rawgeti(L, -1, 1); lua_pushinteger(L, (intptr_t) timer->data); int ret = execute_callback(L, 1); /* Free callback if not recurrent or an error */ if (ret != 0 || uv_timer_get_repeat(timer) == 0) { if (!uv_is_closing((uv_handle_t *)timer)) { uv_close((uv_handle_t *)timer, (uv_close_cb) event_free); } } }
static void repeat_1_cb(uv_timer_t* handle) { int r; TUV_ASSERT(handle == &repeat_1); TUV_ASSERT(uv_timer_get_repeat((uv_timer_t*)handle) == 50); repeat_1_cb_called++; r = uv_timer_again(&repeat_2); TUV_ASSERT(r == 0); if (repeat_1_cb_called == 10) { uv_close((uv_handle_t*)handle, close_cb); /* We're not calling uv_timer_again on repeat_2 any more, so after this */ /* timer_2_cb is expected. */ repeat_2_cb_allowed = 1; return; } }
static void timer_callback(uv_timer_t *uv_timer) { skyray_timer_t *timer = (skyray_timer_t *)uv_timer; zval retval, params[1]; ZVAL_OBJ(¶ms[0], &timer->std); call_user_function(NULL, NULL, &timer->callback, &retval, 1, params); zval_ptr_dtor(&retval); if (EG(exception)) { skyray_handle_uncaught_exception(EG(exception), 0); } if (uv_timer_get_repeat(&timer->timer) == 0) { uv_close((uv_handle_t *)uv_timer, close_cb); } }
static void repeat_1_cb(uv_timer_t* handle) { int r; ASSERT(handle == &repeat_1); ASSERT(uv_timer_get_repeat((uv_timer_t*)handle) == 50); LOGF("repeat_1_cb called after %ld ms\n", (long int)(uv_now(uv_default_loop()) - start_time)); repeat_1_cb_called++; r = uv_timer_again(&repeat_2); ASSERT(r == 0); if (repeat_1_cb_called == 10) { uv_close((uv_handle_t*)handle, close_cb); /* We're not calling uv_timer_again on repeat_2 any more, so after this */ /* timer_2_cb is expected. */ repeat_2_cb_allowed = 1; return; } }
zend_bool skyray_timer_is_periodic(skyray_timer_t *self) { return uv_timer_get_repeat(&self->timer); }
std::int64_t Timer::interval() const { assert(_handle.get()); return std::min<std::int64_t>( uv_timer_get_repeat(_handle.get()), 0); }