Barracuda Application Server C/C++ Reference
NO
Lua C API

Detailed Description

balua.h is header file that provides the public symbols for creating, destroying and configuring an LSP VM.

Creating and initializing A Barracuda Lua VM consists of calling balua_create() and calling balua_loadconfig().

See the C startup source code for the two following examples for more information on how to initialize the LSP plugin:

Collaboration diagram for Lua C API:

Modules

 Weak Table reference
 Functions designed to be similar to using luaL_ref(L, LUA_REGISTRYINDEX), lua_rawgeti(L, LUA_REGISTRYINDEX, ix), and luaL_unref(L, LUA_REGISTRYINDEX, ix), but with weak references.
 
 Auxiliary API
 The optional Lua code in xrc/lua, header file xrc/lua/lxrc.h.
 

Classes

struct  BaLua_param
 The startup and runtime parameters for a Barracuda Server Lua VM. More...
 
struct  LHttpDir
 LHttpDir is the HttpDir instance used by Lua bindings and can be used by advanced Lua bindings creating new HttpDir type Lua interfaces. More...
 

Macros

#define balua_create(p)   _balua_create(p, BALUA_VERSION)
 Creates the Barracuda Lua VM.
 
#define balua_getmutex(L)   balua_getparam(L)->mutex
 Get the SoDisp mutex.
 
#define balua_releasemutex(m)   if(m) ThreadMutex_release(m)
 Release mutex 'm'.
 
#define balua_setmutex(m)   if(m) ThreadMutex_set(m)
 Set mutex 'm'.
 

Typedefs

typedef struct LHttpDir LHttpDir
 LHttpDir is the HttpDir instance used by Lua bindings and can be used by advanced Lua bindings creating new HttpDir type Lua interfaces. More...
 

Functions

BA_API void * baLMalloc (lua_State *L, size_t size)
 Same as baMalloc, but does an emergency GC if baMalloc returns NULL.
 
BA_API lua_State * _balua_create (const BaLua_param *p, int version)
 Creates the Barracuda Lua VM; Note: use macro balua_create(BaLua_param).
 
BA_API int balua_usertracker_create (lua_State *L, U32 noOfLoginTrackerNodes, U32 maxNumberOfLogins, BaTime banTime)
 Install Lua bindings for the default login tracker. More...
 
BA_API void balua_getuservalue (lua_State *L, int index)
 Pushes onto the stack the first user value associated with the full userdata at the given index. More...
 
BA_API int balua_loadconfig (lua_State *L, struct IoIntf *io, const char *filename)
 Load a Lua script and run the script at startup. More...
 
BA_API int balua_loadconfigExt (lua_State *L, struct IoIntf *io, const char *filename, int nresults)
 Load a Lua script and run the script at startup. More...
 
BA_API IoIntfbalua_iointf (lua_State *L, const char *name, struct IoIntf *newio)
 Register an IoIntf instance with the Lua VM. More...
 

Typedef Documentation

◆ LHttpDir

typedef struct LHttpDir LHttpDir

LHttpDir is the HttpDir instance used by Lua bindings and can be used by advanced Lua bindings creating new HttpDir type Lua interfaces.

LHttpDir and Lua userdata memory layout:
+-----------+
| LHttpDir  |
+-----------+
| HttpDir   | <- Any type that inherits from HttpDir
+-----------+

Function Documentation

◆ balua_getuservalue()

BA_API void balua_getuservalue ( lua_State *  L,
int  index 
)

Pushes onto the stack the first user value associated with the full userdata at the given index.

This function is similar to lua_getiuservalue(), but creates a table at the first user value if it does not exist. Note index must be absolute i.e. not < 0. A table is pushed on the stack when this function returns.

◆ balua_iointf()

BA_API IoIntf * balua_iointf ( lua_State *  L,
const char *  name,
struct IoIntf newio 
)

Register an IoIntf instance with the Lua VM.

You may install any number of I/O interfaces, but each I/O interface must be registered with a unique name.

Parameters
Lthe Lua state.
namethe name makes it possible to fetch the I/O using the Lua function ba.openio(name).
newiothe IoIntf instance, such as DiskIo, ZipIo, NetIo, or your own implementation.

◆ balua_loadconfig()

BA_API int balua_loadconfig ( lua_State *  L,
struct IoIntf io,
const char *  filename 
)

Load a Lua script and run the script at startup.

You may call this function multiple times during startup.

Parameters
Lthe Lua state.
iothe I/O interface to use when loading script 'filename'.
filenamethe path+name of the Lua script. The name defaults to .config if this parameter is NULL.

◆ balua_loadconfigExt()

BA_API int balua_loadconfigExt ( lua_State *  L,
struct IoIntf io,
const char *  filename,
int  nresults 
)

Load a Lua script and run the script at startup.

You may call this function multiple times during startup. This function is extends balua_loadconfig and enables you to get return values from the script.

Parameters
Lthe Lua state.
iothe I/O interface to use when loading script 'filename'.
filenamethe path+name of the Lua script. The name defaults to .config if this parameter is NULL.
nresultsvalue passed to lua_pcall

◆ balua_usertracker_create()

BA_API int balua_usertracker_create ( lua_State *  L,
U32  noOfLoginTrackerNodes,
U32  maxNumberOfLogins,
BaTime  banTime 
)

Install Lua bindings for the default login tracker.

See one of the two following C code examples for how to use this function: MakoMain.c or xedge.c

Parameters
Lthe state
noOfLoginTrackerNodestracker size
maxNumberOfLoginshow many login attempts before user (IP address) is banned
banTimehow long in seconds to ban an IP address
See also
LoginTracker LoginTrackerIntf