#ifndef _TYPES_HLUA_H #define _TYPES_HLUA_H #include #define CLASS_CORE "Core" #define CLASS_TXN "TXN" struct session; 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; }; /* This struct contains the pointer provided on the most * of internal HAProxy calls during the processing of * rules, converters and sample-fetches. This struct is * associated with the lua object called "TXN". */ struct hlua_txn { struct session *s; struct proxy *p; void *l7; }; /* This struct is used as a closure argument associated * with dynamic sample-fetch created fucntions. This contains * a pointer to the original sample_fetch struct. It is used * to identify the function to execute with the sample fetch * wrapper. */ struct hlua_sample_fetch { struct sample_fetch *f; }; #endif /* _TYPES_HLUA_H */