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]>

Reply via email to