:see: :js:attr:`core.proxies`
:see: :js:attr:`core.backends`
+.. js:attribute:: core.thread
+
+ **context**: task, action, sample-fetch, converter, applet
+
+ This variable contains the executing thread number starting at 1. 0 is a
+ special case for the common lua context. So, if thread is 0, Lua scope is
+ shared by all threads, otherwise the scope is dedicated to a single thread.
+ A program which needs to execute some parts exactly once regardless of the
+ number of threads can check that core.thread is 0 or 1.
+
.. js:function:: core.log(loglevel, msg)
**context**: body, init, task, action, sample-fetch, converter
return ptr;
}
-/* Ithis function can fail with an abort() due to an Lua critical error.
+/* This function can fail with an abort() due to a Lua critical error.
* We are in the initialisation process of HAProxy, this abort() is
* tolerated.
*/
-lua_State *hlua_init_state(void)
+lua_State *hlua_init_state(int thread_num)
{
int i;
int idx;
/* This table entry is the object "core" base. */
lua_newtable(L);
+ /* set the thread id */
+ hlua_class_const_int(L, "thread", thread_num);
+
/* Push the loglevel constants. */
for (i = 0; i < NB_LOG_LEVELS; i++)
hlua_class_const_int(L, log_levels[i], i);
}
void hlua_init(void) {
- gL.T = hlua_init_state();
+ gL.T = hlua_init_state(0);
}
static void hlua_deinit()