blob: fcf07ac08d80d6d250596acf453d75e8d1507750 [file] [log] [blame] [raw]
/*
* Copyright (C) Yichun Zhang (agentzh)
*/
#include "ddebug.h"
#include "ngx_http_lua_common.h"
#include "api/ngx_http_lua_api.h"
#include "ngx_http_lua_util.h"
lua_State *
ngx_http_lua_get_global_state(ngx_conf_t *cf)
{
ngx_http_lua_main_conf_t *lmcf;
lmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_lua_module);
return lmcf->lua;
}
ngx_http_request_t *
ngx_http_lua_get_request(lua_State *L)
{
return ngx_http_lua_get_req(L);
}
ngx_int_t
ngx_http_lua_add_package_preload(ngx_conf_t *cf, const char *package,
lua_CFunction func)
{
lua_State *L;
ngx_http_lua_main_conf_t *lmcf;
ngx_http_lua_preload_hook_t *hook;
lmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_lua_module);
L = lmcf->lua;
if (L) {
lua_getglobal(L, "package");
lua_getfield(L, -1, "preload");
lua_pushcfunction(L, func);
lua_setfield(L, -2, package);
lua_pop(L, 2);
return NGX_OK;
}
/* L == NULL */
if (lmcf->preload_hooks == NULL) {
lmcf->preload_hooks =
ngx_array_create(cf->pool, 4,
sizeof(ngx_http_lua_preload_hook_t));
if (lmcf->preload_hooks == NULL) {
return NGX_ERROR;
}
}
hook = ngx_array_push(lmcf->preload_hooks);
if (hook == NULL) {
return NGX_ERROR;
}
hook->package = (u_char *) package;
hook->loader = func;
return NGX_OK;
}
/* vi:set ft=c ts=4 sw=4 et fdm=marker: */