costin 01/12/06 15:00:44
Modified: jk/native2/common jk_workerEnv.c
Log:
Added the createWebapp method.
Updates, pools, small fixes.
Revision Changes Path
1.5 +62 -12 jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c
Index: jk_workerEnv.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- jk_workerEnv.c 2001/12/05 20:48:20 1.4
+++ jk_workerEnv.c 2001/12/06 23:00:44 1.5
@@ -59,7 +59,7 @@
* Description: Workers controller *
* Author: Gal Shachor <[EMAIL PROTECTED]> *
* Author: Henri Gomez <[EMAIL PROTECTED]> *
- * Version: $Revision: 1.4 $ *
+ * Version: $Revision: 1.5 $ *
***************************************************************************/
#include "jk_workerEnv.h"
@@ -68,7 +68,7 @@
#define DEFAULT_WORKER ("ajp13")
-int JK_METHOD jk_workerEnv_factory( jk_env_t *env, void **result,
+int JK_METHOD jk_workerEnv_factory( jk_env_t *env, jk_pool_t *pool, void **result,
const char *type, const char *name);
static void jk_workerEnv_close(jk_workerEnv_t *_this);
@@ -88,11 +88,12 @@
/* _this->init_data=init_data; */
- worker_list = map_get_string_list(init_data,
+ worker_list = map_get_string_list(init_data,
+ NULL,
"worker.list",
&_this->num_of_workers,
DEFAULT_WORKER );
- if(worker_list==NULL || _this->num_of_workers<= 0 ) {
+ if(worker_list==NULL || _this->num_of_workers<= 0 ) {
/* assert() - we pass default worker, we should get something back */
return JK_FALSE;
}
@@ -175,6 +176,42 @@
return rc;
}
+
+static jk_webapp_t *jk_workerEnv_createWebapp(jk_workerEnv_t *_this,
+ const char *vhost,
+ const char *name,
+ jk_map_t *init_data)
+{
+ jk_pool_t *webappPool;
+ jk_webapp_t *webapp;
+
+ webappPool=(jk_pool_t *)_this->pool->create( _this->pool,
+ HUGE_POOL_SIZE);
+
+ webapp=(jk_webapp_t *)webappPool->calloc(webappPool,
+ sizeof( jk_webapp_t ));
+
+ webapp->pool=webappPool;
+
+ webapp->context=_this->pool->pstrdup( _this->pool, name);
+ webapp->virtual=_this->pool->pstrdup( _this->pool, vhost);
+
+ if( name==NULL ) {
+ webapp->ctxt_len=0;
+ } else {
+ webapp->ctxt_len = strlen(name);
+ }
+
+
+ /* XXX Find it if it's already allocated */
+
+ /* Add vhost:name to the map */
+
+ return webapp;
+
+}
+
+
static jk_worker_t *jk_workerEnv_createWorker(jk_workerEnv_t *_this,
const char *name,
jk_map_t *init_data)
@@ -184,10 +221,16 @@
jk_env_objectFactory_t fac;
jk_logger_t *l=_this->l;
jk_worker_t *w = NULL;
+ jk_pool_t *workerPool;
+ workerPool=_this->pool->create(_this->pool, HUGE_POOL_SIZE);
+
type=map_getStrProp( init_data,"worker",name,"type",NULL );
+
+ /* Each worker has it's own pool */
+
- w=(jk_worker_t *)_this->env->getInstance(_this->env, "worker", type );
+ w=(jk_worker_t *)_this->env->getInstance(_this->env, workerPool, "worker", type
);
if( w == NULL ) {
l->jkLog(l, JK_LOG_ERROR,
@@ -196,11 +239,10 @@
return NULL;
}
+ w->pool=workerPool;
w->name=(char *)name;
w->workerEnv=_this;
- jk_pool_create( & w->pool, NULL, 1024 );
-
err=w->validate(w, init_data, _this, l);
if( err!=JK_TRUE ) {
@@ -226,20 +268,23 @@
return w;
}
-int JK_METHOD jk_workerEnv_factory( jk_env_t *env, void **result,
+int JK_METHOD jk_workerEnv_factory( jk_env_t *env, jk_pool_t *pool, void **result,
const char *type, const char *name)
{
jk_logger_t *l=env->logger;
jk_workerEnv_t *_this;
int err;
+ jk_pool_t *uriMapPool;
l->jkLog(l, JK_LOG_DEBUG, "Creating workerEnv \n");
- _this=(jk_workerEnv_t *)calloc( 1, sizeof( jk_workerEnv_t ));
+ _this=(jk_workerEnv_t *)pool->calloc( pool, sizeof( jk_workerEnv_t ));
+ _this->pool=pool;
*result=_this;
_this->init_data = NULL;
- map_alloc(& _this->init_data);
+ map_alloc(& _this->init_data, pool);
+
_this->worker_file = NULL;
_this->log_file = NULL;
@@ -286,16 +331,19 @@
_this->secret_key = NULL;
_this->envvars_in_use = JK_FALSE;
- map_alloc(&_this->envvars);
+ map_alloc(&_this->envvars, pool);
_this->l=l;
_this->env=env;
- if(!map_alloc(&_this->worker_map)) {
+ if(!map_alloc(&_this->worker_map, _this->pool)) {
return JK_FALSE;
}
+ uriMapPool = _this->pool->create(_this->pool, HUGE_POOL_SIZE);
+
_this->uriMap=_this->env->getInstance( _this->env,
+ uriMapPool,
"uriMap",
"default");
@@ -312,7 +360,9 @@
_this->getWorkerForName=&jk_workerEnv_getWorkerForName;
_this->close=&jk_workerEnv_close;
_this->createWorker=&jk_workerEnv_createWorker;
+ _this->createWebapp=&jk_workerEnv_createWebapp;
+ _this->rootWebapp=_this->createWebapp( _this, NULL, "/", NULL );
return JK_TRUE;
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>