costin      02/02/28 15:28:33

  Modified:    jk/native2/common jk_workerEnv.c
  Log:
  Use setProperty() to pass all config information.
  
  One sideefect is that you can now specify multiple files and/or use that
  as an include ( set workerFile property and the file will be read ).
  Of course, abuse can hurt.
  
  Also removed webapp, uriEnv will be managed by uriMap.
  
  Revision  Changes    Path
  1.17      +118 -118  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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- jk_workerEnv.c    21 Feb 2002 11:13:59 -0000      1.16
  +++ jk_workerEnv.c    28 Feb 2002 23:28:33 -0000      1.17
  @@ -59,7 +59,7 @@
    * Description: Workers controller                                         *
    * Author:      Gal Shachor <[EMAIL PROTECTED]>                           *
    * Author:      Henri Gomez <[EMAIL PROTECTED]>                               *
  - * Version:     $Revision: 1.16 $                                           *
  + * Version:     $Revision: 1.17 $                                           *
    ***************************************************************************/
   
   #include "jk_workerEnv.h" 
  @@ -77,76 +77,112 @@
   static void jk2_workerEnv_initHandlers(jk_env_t *env, jk_workerEnv_t *_this);
   static int  jk2_workerEnv_init1(jk_env_t *env, jk_workerEnv_t *_this);
   
  -static int jk2_workerEnv_init(jk_env_t *env, jk_workerEnv_t *workerEnv)
  +/* ==================== Setup ==================== */
  +
  +static int jk2_workerEnv_setWorkerFile( struct jk_env *env,
  +                                        struct jk_workerEnv *workerEnv,
  +                                         char *workerFile)
   {
  +    struct stat statbuf;
       int err;
  -    char *opt;
  -    int options;
  -
  -    opt=jk2_map_getString( env, workerEnv->init_data, "workerFile", NULL );
  -    if( opt != NULL ) {
  -        struct stat statbuf;
  -        
  -        /* we need an absolut path (ap_server_root_relative does the ap_pstrdup) */
  -        workerEnv->worker_file = opt;
  -        /* We should make it relative to JK_HOME or absolute path.
  -           ap_server_root_relative(cmd->pool,opt); */
  -
  -        if (workerEnv->worker_file == NULL) {
  -            env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                          "JkWorkersFile file_name invalid %s", 
workerEnv->worker_file);
  -            return JK_FALSE;
  -        }
  -        
  -        if (stat(workerEnv->worker_file, &statbuf) == -1) {
  -            env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                          "Can't find the workers file specified");
  -            return JK_FALSE;
  -        }
  -        /** Read worker files
  -         */
  -        env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Reading map %s %d\n",
  -                      workerEnv->worker_file,
  -                      workerEnv->init_data->size(env, workerEnv->init_data) );
           
  -        err=jk2_map_readFileProperties(env, workerEnv->init_data,
  -                                          workerEnv->worker_file);
  -        if( err==JK_TRUE ) {
  -            env->l->jkLog(env, env->l, JK_LOG_INFO, 
  -                          "mod_jk.initJk() Reading worker properties %s %d\n", 
workerEnv->worker_file,
  -                          workerEnv->init_data->size( env, workerEnv->init_data ) );
  -        } else {
  -            env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                          "mod_jk.initJk() Error reading worker properties %s %d\n",
  -                          workerEnv->worker_file,
  -                          workerEnv->init_data->size( env, workerEnv->init_data ) );
  -        }
  +    /* We should make it relative to JK_HOME or absolute path.
  +       ap_server_root_relative(cmd->pool,opt); */
  +    
  +    if (stat(workerFile, &statbuf) == -1) {
  +        env->l->jkLog(env, env->l, JK_LOG_ERROR,
  +                      "Can't find the workers file %s", workerFile );
  +        return JK_FALSE;
       }
  -        
  -    opt=jk2_map_getString( env, workerEnv->init_data, "logLevel", "Error" );
  -
  -    if(0 == strcasecmp(opt, JK_LOG_INFO_VERB)) {
  -        env->l->level=JK_LOG_INFO_LEVEL;
  +    
  +    /** Read worker files
  +     */
  +    env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Reading properties %s %d\n",
  +                  workerFile,
  +                  workerEnv->initData->size(env, workerEnv->initData) );
  +    
  +    err=jk2_map_readFileProperties(env, workerEnv->initData, workerFile );
  +    
  +    if( err==JK_TRUE ) {
  +        env->l->jkLog(env, env->l, JK_LOG_INFO, 
  +                      "mod_jk.initJk() Reading worker properties %s %d\n",
  +                      workerFile,
  +                      workerEnv->initData->size( env, workerEnv->initData ) );
  +    } else {
  +        env->l->jkLog(env, env->l, JK_LOG_ERROR,
  +                      "mod_jk.initJk() Error reading worker properties %s %d\n",
  +                      workerFile,
  +                      workerEnv->initData->size( env, workerEnv->initData ) );
       }
  -    if(0 == strcasecmp(opt, JK_LOG_DEBUG_VERB)) {
  -        env->l->level=JK_LOG_DEBUG_LEVEL;
  +    return JK_TRUE;
  +}
  +
  +
  +static int jk2_workerEnv_setLogLevel( struct jk_env *env,
  +                                      struct jk_workerEnv *workerEnv,
  +                                      char *level)
  +{
  +     if(0 == strcasecmp(level, JK_LOG_INFO_VERB)) {
  +         env->l->level=JK_LOG_INFO_LEVEL;
  +     }
  +     if(0 == strcasecmp(level, JK_LOG_DEBUG_VERB)) {
  +         env->l->level=JK_LOG_DEBUG_LEVEL;
  +     }
  +}
  +
  +static int jk2_workerEnv_setProperty( struct jk_env *env,
  +                                      struct jk_workerEnv *_this,
  +                                      const char *name, char *value)
  +{
  +    jk_map_t *initData=_this->initData;
  +
  +    value = jk2_map_replaceProperties(env, initData, initData->pool, value);
  +
  +    /** XXX Do we need this ? How about removing/runtime changes/single value ?
  +     */
  +    initData->add( env, initData, name, value );
  +
  +    if( strcmp( name, "workerFile" ) == 0 ) {
  +        return jk2_workerEnv_setWorkerFile(env, _this, value);
  +    } else if( strcmp( name, "logLevel") == 0 ) {
  +        return jk2_workerEnv_setLogLevel( env, _this, value );
       }
  -    opt=jk2_map_getString( env, workerEnv->init_data, "logFile", NULL );
  +    return JK_TRUE;
  +}
   
  -    env->l->jkLog(env, env->l, JK_LOG_INFO, "mod_jk.init_jk()\n" ); 
  -    env->l->open( env, env->l, workerEnv->init_data );
   
  -    opt=jk2_map_getString( env, workerEnv->init_data, "sslEnable", NULL );
  +     
  +static char *jk2_workerEnv_getProperty( struct jk_env *env,
  +                                       struct jk_workerEnv *_this,
  +                                       const char *name)
  +{
  +
  +    return NULL;
  +}
  +
  +static int jk2_workerEnv_init(jk_env_t *env, jk_workerEnv_t *workerEnv)
  +{
  +    int err;
  +    char *opt;
  +    int options;
  +
  +    env->l->jkLog(env, env->l, JK_LOG_INFO, "mod_jk.init_jk()\n" );
  +    /** This will eventuall read logFile.
  +        XXX Config per 'component', log.level, log.file, etc
  +    */
  +    env->l->open( env, env->l, workerEnv->initData );
  +
  +    opt=jk2_map_getString( env, workerEnv->initData, "sslEnable", NULL );
       workerEnv->ssl_enable = JK_TRUE;
  -    opt=jk2_map_getString( env, workerEnv->init_data, "httpsIndicator", NULL );
  +    opt=jk2_map_getString( env, workerEnv->initData, "httpsIndicator", NULL );
       workerEnv->https_indicator = opt;
  -    opt=jk2_map_getString( env, workerEnv->init_data, "certsIndicator", NULL );
  +    opt=jk2_map_getString( env, workerEnv->initData, "certsIndicator", NULL );
       workerEnv->certs_indicator = opt;
  -    opt=jk2_map_getString( env, workerEnv->init_data, "cipherIndicator", NULL );
  +    opt=jk2_map_getString( env, workerEnv->initData, "cipherIndicator", NULL );
       workerEnv->cipher_indicator = opt;
  -    opt=jk2_map_getString( env, workerEnv->init_data, "sessionIndicator", NULL );
  +    opt=jk2_map_getString( env, workerEnv->initData, "sessionIndicator", NULL );
       workerEnv->session_indicator = opt;
  -    opt=jk2_map_getString( env, workerEnv->init_data, "keySizeIndicator", NULL );
  +    opt=jk2_map_getString( env, workerEnv->initData, "keySizeIndicator", NULL );
       workerEnv->key_size_indicator = opt;
   
       /* Small change in how we treat options: we have a default,
  @@ -154,18 +190,18 @@
          of overriding the default ( "-Option == no option, leave the
          default
       */
  -    if ( jk2_map_getBool(env, workerEnv->init_data,
  +    if ( jk2_map_getBool(env, workerEnv->initData,
                           "ForwardKeySize", NULL)) {
           workerEnv->options |= JK_OPT_FWDKEYSIZE;
  -    } else if(jk2_map_getBool(env, workerEnv->init_data,
  +    } else if(jk2_map_getBool(env, workerEnv->initData,
                                "ForwardURICompat", NULL)) {
           workerEnv->options &= ~JK_OPT_FWDURIMASK;
           workerEnv->options |=JK_OPT_FWDURICOMPAT;
  -    } else if(jk2_map_getBool(env, workerEnv->init_data,
  +    } else if(jk2_map_getBool(env, workerEnv->initData,
                                "ForwardURICompatUnparsed", NULL)) {
           workerEnv->options &= ~JK_OPT_FWDURIMASK;
           workerEnv->options |=JK_OPT_FWDURICOMPATUNPARSED;
  -    } else if (jk2_map_getBool(env, workerEnv->init_data,
  +    } else if (jk2_map_getBool(env, workerEnv->initData,
                                 "ForwardURIEscaped", NULL)) {
           workerEnv->options &= ~JK_OPT_FWDURIMASK;
           workerEnv->options |= JK_OPT_FWDURIESCAPED;
  @@ -176,7 +212,7 @@
   
       err=workerEnv->uriMap->init(env, workerEnv->uriMap,
                                   workerEnv,
  -                                workerEnv->init_data );
  +                                workerEnv->initData );
       return JK_TRUE;
   }
   
  @@ -187,18 +223,18 @@
    */
   static int jk2_workerEnv_init1(jk_env_t *env, jk_workerEnv_t *_this)
   {
  -    jk_map_t *init_data=_this->init_data;
  +    jk_map_t *initData=_this->initData;
       char **worker_list  = NULL;
       int i;
       int err;
       char *tmp;
       int declared_workers=0;
   
  -    /*     _this->init_data=init_data; */
  +    /*     _this->initData=initData; */
   
  -    tmp = jk2_map_getString(env, init_data, "worker.list",
  +    tmp = jk2_map_getString(env, initData, "worker.list",
                              DEFAULT_WORKER );
  -    worker_list=jk2_map_split( env, init_data, init_data->pool,
  +    worker_list=jk2_map_split( env, initData, initData->pool,
                                 tmp, NULL, & declared_workers );
   
       if(worker_list==NULL || declared_workers <= 0 ) {
  @@ -211,7 +247,7 @@
           jk_worker_t *oldw = NULL;
           const char *name=(const char*)worker_list[i];
   
  -        w=_this->createWorker(env, _this, name, init_data);
  +        w=_this->createWorker(env, _this, name, initData);
           if( w==NULL ) {
               env->l->jkLog(env, env->l, JK_LOG_ERROR,
                             "init failed to create worker %s\n", 
  @@ -276,42 +312,6 @@
       return rc;
   }
   
  -
  -static jk_webapp_t *jk2_workerEnv_createWebapp(jk_env_t *env,
  -                                               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( env, _this->pool,
  -                                                 HUGE_POOL_SIZE);
  -
  -    webapp=(jk_webapp_t *)webappPool->calloc(env, webappPool,
  -                                             sizeof( jk_webapp_t ));
  -
  -    webapp->pool=webappPool;
  -
  -    webapp->context=_this->pool->pstrdup( env, _this->pool, name);
  -    webapp->virtual=_this->pool->pstrdup( env, _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 void jk2_workerEnv_checkSpace(jk_env_t *env, jk_pool_t *pool,
                                        void ***tableP, int *sizeP, int id)
   {
  @@ -496,7 +496,7 @@
   static jk_worker_t *jk2_workerEnv_releasePool(jk_env_t *env,
                                                 jk_workerEnv_t *_this,
                                                 const char *name, 
  -                                              jk_map_t *init_data)
  +                                              jk_map_t *initData)
   {
       
   }
  @@ -505,7 +505,7 @@
   static jk_worker_t *jk2_workerEnv_createWorker(jk_env_t *env,
                                                  jk_workerEnv_t *_this,
                                                  const char *name, 
  -                                               jk_map_t *init_data)
  +                                               jk_map_t *initData)
   {
       int err=JK_TRUE;
       char *type;
  @@ -525,7 +525,7 @@
   
       workerPool=_this->pool->create(env, _this->pool, HUGE_POOL_SIZE);
   
  -    type=jk2_map_getStrProp( env, init_data,"worker",name,"type",NULL );
  +    type=jk2_map_getStrProp( env, initData,"worker",name,"type",NULL );
   
       /* Each worker has it's own pool */
       if( type == NULL ) type="ajp13";
  @@ -551,7 +551,7 @@
                                       1024 ); /* XXX make it unbound */
   
       if( w->validate!=NULL ) 
  -        err=w->validate(env, w, init_data, _this);
  +        err=w->validate(env, w, initData, _this);
       
       if( err!=JK_TRUE ) {
           env->l->jkLog(env, env->l, JK_LOG_ERROR,
  @@ -563,7 +563,7 @@
       }
   
       if( w->init != NULL )
  -        err=w->init(env, w, init_data, _this);
  +        err=w->init(env, w, initData, _this);
       
       if(err!=JK_TRUE) {
           if( w->destroy != NULL ) 
  @@ -605,24 +605,23 @@
       _this->pool=pool;
       *result=_this;
   
  -    _this->init_data = NULL;
  -    jk2_map_default_create(env, & _this->init_data, pool);
  +    _this->initData = NULL;
  +    jk2_map_default_create(env, & _this->initData, pool);
       
       /* Add 'compile time' settings. Those are defined in jk_global,
          with the other platform-specific settings. No need to ask
          the user what we can find ourself
       */
  -    _this->init_data->put( env, _this->init_data, "fs",
  +    _this->initData->put( env, _this->initData, "fs",
                              FILE_SEPARATOR_STR, NULL );
  -    _this->init_data->put( env, _this->init_data, "ps",
  +    _this->initData->put( env, _this->initData, "ps",
                              PATH_SEPARATOR_STR, NULL );
  -    _this->init_data->put( env, _this->init_data, "so",
  +    _this->initData->put( env, _this->initData, "so",
                              SO_EXTENSION, NULL );
  -    _this->init_data->put( env, _this->init_data, "arch",
  +    _this->initData->put( env, _this->initData, "arch",
                              ARCH, NULL );
   
   
  -    _this->worker_file     = NULL;
       _this->log_file        = NULL;
       _this->log_level       = -1;
       _this->mountcopy       = JK_FALSE;
  @@ -688,11 +687,12 @@
       _this->getWorkerForName=&jk2_workerEnv_getWorkerForName;
       _this->close=&jk2_workerEnv_close;
       _this->createWorker=&jk2_workerEnv_createWorker;
  -    _this->createWebapp=&jk2_workerEnv_createWebapp;
       _this->processCallbacks=&jk2_workerEnv_processCallbacks;
       _this->dispatch=&jk2_workerEnv_dispatch;
  +    _this->setProperty=&jk2_workerEnv_setProperty;
  +    _this->getProperty=&jk2_workerEnv_getProperty;
   
  -    _this->rootWebapp=_this->createWebapp( env, _this, NULL, "/", NULL );
  +    _this->rootWebapp=_this->uriMap->createUriEnv( env, _this->uriMap, NULL, "/" );
   
       _this->globalEnv=env;
       
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to