mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-03 20:39:41 -05:00
This system permits to execute some lua function after than HAProxy complete his initialisation. These functions are executed between the end of the configuration parsing and check and the begin of the scheduler.
52 lines
1.7 KiB
C
52 lines
1.7 KiB
C
#ifndef _TYPES_HLUA_H
|
|
#define _TYPES_HLUA_H
|
|
|
|
#include <lua.h>
|
|
|
|
#define CLASS_CORE "Core"
|
|
|
|
enum hlua_state {
|
|
HLUA_STOP = 0,
|
|
HLUA_RUN,
|
|
};
|
|
|
|
enum hlua_exec {
|
|
HLUA_E_OK = 0,
|
|
HLUA_E_AGAIN, /* LUA yield, must resume the stack execution later, when
|
|
the associatedtask is waked. */
|
|
HLUA_E_ERRMSG, /* LUA stack execution failed with a string error message
|
|
in the top of stack. */
|
|
HLUA_E_ERR, /* LUA stack execution failed without error message. */
|
|
};
|
|
|
|
struct hlua {
|
|
lua_State *T; /* The LUA stack. */
|
|
int Tref; /* The reference of the stack in coroutine case.
|
|
-1 for the main lua stack. */
|
|
int Mref; /* The reference of the memory context in coroutine case.
|
|
-1 if the memory context is not used. */
|
|
int nargs; /* The number of arguments in the stack at the start of execution. */
|
|
enum hlua_state state; /* The current execution state. */
|
|
struct task *task; /* The task associated with the lua stack execution.
|
|
We must wake this task to continue the task execution */
|
|
struct list com; /* The list head of the signals attached to this task. */
|
|
struct ebpt_node node;
|
|
};
|
|
|
|
struct hlua_com {
|
|
struct list purge_me; /* Part of the list of signals to be purged in the
|
|
case of the LUA execution stack crash. */
|
|
struct list wake_me; /* Part of list of signals to be targeted if an
|
|
event occurs. */
|
|
struct task *task; /* The task to be wake if an event occurs. */
|
|
};
|
|
|
|
/* This is a part of the list containing references to functions
|
|
* called at the initialisation time.
|
|
*/
|
|
struct hlua_init_function {
|
|
struct list l;
|
|
int function_ref;
|
|
};
|
|
|
|
#endif /* _TYPES_HLUA_H */
|