コード例 #1
0
ファイル: timer.cpp プロジェクト: luojunqiang/libuv-java
/*
 * 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);
}
コード例 #2
0
ファイル: timer.c プロジェクト: SongJLG/johan-doc
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);
}
コード例 #3
0
ファイル: timer.c プロジェクト: yinlei/libuv-lua
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;
}
コード例 #4
0
ファイル: test_timer_raw_again.c プロジェクト: Samsung/libtuv
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);
}
コード例 #5
0
ファイル: luv_timer.c プロジェクト: Theintercooler/luvit
/*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;
}
コード例 #6
0
ファイル: timer.c プロジェクト: iyedb/pyuv
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);
}
コード例 #7
0
ファイル: lua_uv_timer.cpp プロジェクト: grrrwaaa/luauv
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;
	}
}
コード例 #8
0
ファイル: Timer.cpp プロジェクト: rioki/async
 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();
     }
 }
コード例 #9
0
ファイル: test-timer-again.c プロジェクト: AlexChesser/node
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);
}
コード例 #10
0
ファイル: test-timer-again.c プロジェクト: 0-wiz-0/libuv
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);
}
コード例 #11
0
ファイル: bindings.c プロジェクト: PaulosV/knot-resolver
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);
        }
    }
}
コード例 #12
0
ファイル: test_timer_raw_again.c プロジェクト: Samsung/libtuv
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;
  }
}
コード例 #13
0
ファイル: timer.c プロジェクト: Lucups/Skyray
static void timer_callback(uv_timer_t *uv_timer)
{
    skyray_timer_t *timer = (skyray_timer_t *)uv_timer;
    zval retval, params[1];

    ZVAL_OBJ(&params[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);
    }
}
コード例 #14
0
ファイル: test-timer-again.c プロジェクト: 1048046563/node
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;
  }
}
コード例 #15
0
ファイル: timer.c プロジェクト: Lucups/Skyray
zend_bool skyray_timer_is_periodic(skyray_timer_t *self)
{
    return uv_timer_get_repeat(&self->timer);
}
コード例 #16
0
ファイル: timer.cpp プロジェクト: sourcey/libsourcey
std::int64_t Timer::interval() const
{
    assert(_handle.get());
    return std::min<std::int64_t>(
        uv_timer_get_repeat(_handle.get()), 0);
}