You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by br...@apache.org on 2008/11/06 17:31:08 UTC
svn commit: r711897 - in /httpd/mod_wombat/trunk: README vmprep.c vmprep.h
Author: brianm
Date: Thu Nov 6 08:30:53 2008
New Revision: 711897
URL: http://svn.apache.org/viewvc?rev=711897&view=rev
Log:
starting work on better lifecycle management
Modified:
httpd/mod_wombat/trunk/README
httpd/mod_wombat/trunk/vmprep.c
httpd/mod_wombat/trunk/vmprep.h
Modified: httpd/mod_wombat/trunk/README
URL: http://svn.apache.org/viewvc/httpd/mod_wombat/trunk/README?rev=711897&r1=711896&r2=711897&view=diff
==============================================================================
--- httpd/mod_wombat/trunk/README (original)
+++ httpd/mod_wombat/trunk/README Thu Nov 6 08:30:53 2008
@@ -4,7 +4,6 @@
** libapreq2 ( http://httpd.apache.org/apreq/download.cgi )
** Apache HTTPD 2.2 ( http://httpd.apache.org/ )
-
* Documentation
See docs/README
@@ -27,7 +26,8 @@
Could use apr_thread_data_(get|set) if I can find a way to hook into
thread destruction. Looks like apr threads let you use the standard
APR_POOL_DECLARE_ACCESSOR(thread); defined method, just need to look
- up what form that takes.
+ up what form that takes. -- apr_thread_pool_get -- just attach to
+ that pool.
Given that, we can associate a hash of lua_State instances with
arbitrary pools, such as the request pool, thread pool, server pool,
@@ -35,7 +35,7 @@
specify the handler function, can then make use of the same file
with different handlers to reuse states.
- Review Blue PiL 265-267 for cleaning up UserData stuff.
+
* Task List
** TODO Use r->file to determine file, doing rewriting in translate_name
Modified: httpd/mod_wombat/trunk/vmprep.c
URL: http://svn.apache.org/viewvc/httpd/mod_wombat/trunk/vmprep.c?rev=711897&r1=711896&r2=711897&view=diff
==============================================================================
--- httpd/mod_wombat/trunk/vmprep.c (original)
+++ httpd/mod_wombat/trunk/vmprep.c Thu Nov 6 08:30:53 2008
@@ -655,6 +655,26 @@
return lua_pcall(L, 0, LUA_MULTRET, 0);
}
+lua_State* apw_get_lua_state(apr_pool_t* lifecycle_pool, char* file) {
+
+ lua_State* L;
+ if (!apr_pool_userdata_get((void**)&L, file, lifecycle_pool)) {
+ // not available, so create
+ L = luaL_newstate();
+ luaL_openlibs(L);
+ apw_run_wombat_open(L, lifecycle_pool);
+
+ // munge_path(L, "path", "?.lua", "./?.lua", pool, spec->package_paths, spec->file);
+ // munge_path(L, "cpath", "?.so", "./?.so", pool, spec->package_cpaths, spec->file);
+ luaL_loadfile(L, file);
+ lua_pcall(L, 0, LUA_MULTRET, 0);
+ apr_pool_userdata_set(L, file, &cleanup_lua, lifecycle_pool);
+
+ lua_pushlightuserdata(L, lifecycle_pool);
+ lua_setfield(L, LUA_REGISTRYINDEX, "Apache2.Wombat.pool");
+ }
+ return L;
+}
Modified: httpd/mod_wombat/trunk/vmprep.h
URL: http://svn.apache.org/viewvc/httpd/mod_wombat/trunk/vmprep.h?rev=711897&r1=711896&r2=711897&view=diff
==============================================================================
--- httpd/mod_wombat/trunk/vmprep.h (original)
+++ httpd/mod_wombat/trunk/vmprep.h Thu Nov 6 08:30:53 2008
@@ -103,5 +103,8 @@
// returns NULL if the spec requires a request scope or conn scope
lua_State* apw_sgetvm(server_rec *r, apw_vm_spec *spec);
+// alternate means of getting lua_State
+lua_State* apw_get_lua_state(apr_pool_t* lifecycle_pool, char* file);
+
#endif