| |
| /* |
| * 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: */ |