| 400 | } |
| 401 | |
| 402 | static int |
| 403 | ts_lua_sleep_ms(lua_State *L) |
| 404 | { |
| 405 | int msec; |
| 406 | TSAction action; |
| 407 | TSCont contp; |
| 408 | ts_lua_async_item *ai; |
| 409 | ts_lua_cont_info *ci; |
| 410 | |
| 411 | ci = ts_lua_get_cont_info(L); |
| 412 | if (ci == nullptr) { |
| 413 | TSError("[ts_lua][%s] no cont info found", __FUNCTION__); |
| 414 | TSReleaseAssert(!"Unexpected fetch of cont info"); |
| 415 | return 0; |
| 416 | } |
| 417 | |
| 418 | msec = luaL_checknumber(L, 1); |
| 419 | if (msec < 1) { |
| 420 | msec = 1; |
| 421 | } |
| 422 | |
| 423 | contp = TSContCreate(ts_lua_sleep_handler, ci->mutex); |
| 424 | action = TSContScheduleOnPool(contp, msec, TS_THREAD_POOL_NET); |
| 425 | |
| 426 | ai = ts_lua_async_create_item(contp, ts_lua_sleep_cleanup, (void *)action, ci); |
| 427 | TSContDataSet(contp, ai); |
| 428 | |
| 429 | return lua_yield(L, 0); |
| 430 | } |
| 431 | |
| 432 | static int |
| 433 | ts_lua_sleep(lua_State *L) |
nothing calls this directly
no test coverage detected