its work and wants to give back the control to HAProxy without executing the
remaining code. It can be seen as a multi-level "return".
+.. js:function:: core.wait()
+
+ **context**: task, action
+
+ Give back the hand at the HAProxy scheduler. Unlike :js:func:`core.yield`
+ the task will not be woken up automatically to resume as fast as possible.
+ Instead, it will wait for an event to wake the task.
+
.. js:function:: core.yield()
**context**: task, action
Give back the hand at the HAProxy scheduler. It is used when the LUA
- processing consumes a lot of processing time.
+ processing consumes a lot of processing time. Lua excecution will be resumed
+ automatically (automatic reschedule).
.. js:function:: core.parse_addr(address)
return 0;
}
+/* same as hlua_yield() but doesn't enforce CTRLYIELD so the Lua task won't be
+ * automatically woken up to resume ASAP, instead it means we will wait for
+ * an event to occur to wake the task. Only use when you're confident that
+ * something or someone will wake the task at some point.
+ */
+__LJMP static int hlua_wait(lua_State *L)
+{
+ MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_yield_yield, TICK_ETERNITY, 0));
+ return 0;
+}
+
/* This function change the nice of the currently executed
* task. It is used set low or high priority at the current
* task.
hlua_class_function(L, "register_cli", hlua_register_cli);
hlua_class_function(L, "register_filter", hlua_register_filter);
hlua_class_function(L, "yield", hlua_yield);
+ hlua_class_function(L, "wait", hlua_wait);
hlua_class_function(L, "set_nice", hlua_set_nice);
hlua_class_function(L, "sleep", hlua_sleep);
hlua_class_function(L, "msleep", hlua_msleep);