costin      02/03/18 10:24:23

  Modified:    jk/native2/common jk_ajp14_worker.c jk_worker_run.c
                        jk_worker_status.c
  Log:
  Update the worker config mechanism
  
  Revision  Changes    Path
  1.18      +82 -57    jakarta-tomcat-connectors/jk/native2/common/jk_ajp14_worker.c
  
  Index: jk_ajp14_worker.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_ajp14_worker.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- jk_ajp14_worker.c 2 Mar 2002 06:06:54 -0000       1.17
  +++ jk_ajp14_worker.c 18 Mar 2002 18:24:23 -0000      1.18
  @@ -90,50 +90,60 @@
   /*
    * Initialize the worker.
    */
  -static int JK_METHOD
  -jk2_worker_ajp14_setProperty(jk_env_t *env, jk_worker_t *_this,
  -                             char *name, char *value )
  +static int 
  +jk2_worker_ajp14_setAttribute(jk_env_t *env, jk_bean_t *mbean, 
  +                              char *name, void *valueP )
   {
  +    jk_worker_t *ajp14=(jk_worker_t *)mbean->object;
  +    char *value=(char *)valueP;
       int    port;
       char * host;
       int err;
  -    jk_worker_t *p = _this;
       char * secret_key;
       char *channelType;
              
       if( strcmp( name, "secretkey" )==0 ) {
  -        _this->secret = value;
  +        ajp14->secret = value;
       } else if( strcmp( name, "cachesize" )==0 ) {
  -        _this->cache_sz=atoi( value );
  +        ajp14->cache_sz=atoi( value );
  +    } else if( strcmp( name, "lb_factor" )==0 ) {
  +        ajp14->lb_factor=atof( value );
       } else if( strcmp( name, "channel" )==0 ) {
  -        _this->channel=env->getInstance(env, _this->pool,"channel",
  -                                        value );
  -        if( _this->channel == NULL ) {
  +        if( strncmp( value, "channel.", 8 ) != 0 ) {
  +            char *newValue=(char *)ajp14->pool->calloc( env, ajp14->pool, 
strlen(value) + 10 );
  +            strcpy( newValue, "channel." );
  +            strcat( newValue, value );
  +            env->l->jkLog(env, env->l, JK_LOG_INFO, "ajp14.setProperty() auto 
replace %s %s\n",
  +                          value, newValue);
  +            value=newValue;
  +        }
  +        ajp14->channel=env->createInstance(env, ajp14->pool, value, NULL );
  +        if( ajp14->channel == NULL ) {
               env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                          "Error creating %s channel\n", channelType);
  +                          "Error creating %s channel\n", channelType );
               return JK_FALSE;
           }
  -        _this->channel->worker=_this;
  -        _this->channel->name=value;
  -        env->l->jkLog(env, env->l, JK_LOG_INFO, "endpoint.setProperty() channel 
%s\n",
  -                      value);
  -    } else {
  +        env->l->jkLog(env, env->l, JK_LOG_INFO, "ajp14.setProperty() channel: %s 
%s\n",
  +                      value,ajp14->channel->mbean->name);
  +
  +     } else {
           /* It's probably a channel property
            */
  -        if( _this->channel==NULL ) {
  +        if( ajp14->channel==NULL ) {
  +            
               env->l->jkLog(env, env->l, JK_LOG_ERROR,
                             "No channel for %s, set channel before other properties 
%s=%s\n",
  -                          _this->name, name, value );
  +                          mbean->name, name, value );
               return JK_FALSE;
           }
   
           env->l->jkLog(env, env->l, JK_LOG_INFO, "endpoint.setProperty() channel 
%s=%s\n",
                         name, value);
  -        _this->channel->setProperty( env, _this->channel, name, value );
  +        ajp14->channel->mbean->setAttribute( env, ajp14->channel->mbean, name, 
value );
       }
   
       env->l->jkLog(env, env->l, JK_LOG_INFO,
  -                  "ajp14.setProperty() %s %s %s\n", _this->name, name, value );
  +                  "ajp14.setProperty() %s %s %s\n", mbean->name, name, value );
       
       return JK_TRUE;
   }
  @@ -144,7 +154,7 @@
   static void jk2_close_endpoint(jk_env_t *env, jk_endpoint_t *ae)
   {
       env->l->jkLog(env, env->l, JK_LOG_INFO, "endpoint.close() %s\n",
  -                  ae->worker->name);
  +                  ae->worker->mbean->name);
   
       ae->reuse = JK_FALSE;
       ae->worker->channel->close( env, ae->worker->channel, ae );
  @@ -164,7 +174,7 @@
   
       if( err != JK_TRUE ) {
           env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                      "ajp14.connect() failed %s\n", ae->worker->name );
  +                      "ajp14.connect() failed %s\n", ae->worker->mbean->name );
           return JK_FALSE;
       }
   
  @@ -234,13 +244,13 @@
           if( e->recoverable != JK_TRUE ) {
               env->l->jkLog(env, env->l, JK_LOG_ERROR,
                        "ajp14.service() error sending request %s, giving up\n",
  -                     worker->name);
  +                     worker->mbean->name);
               return JK_FALSE;
           }
           
           env->l->jkLog(env, env->l, JK_LOG_ERROR,
                   "ajp14.service() error sending, retry on a new endpoint %s\n",
  -                      e->worker->name);
  +                      e->worker->mbean->name);
   
           channel->close( env, channel, e );
   
  @@ -384,7 +394,7 @@
       }
   
       env->l->jkLog(env, env->l, JK_LOG_INFO,
  -                  "ajp14.service() %s\n", e->worker->name);
  +                  "ajp14.service() %s\n", e->worker->mbean->name);
   
       if( w->channel->beforeRequest != NULL ) {
           w->channel->beforeRequest( env, w->channel, w, e, s );
  @@ -424,7 +434,7 @@
           if( err==JK_TRUE ) {
               env->l->jkLog(env, env->l, JK_LOG_INFO,
                             "ajp14.done() return to pool %s\n",
  -                          w->name );
  +                          w->mbean->name );
               return JK_TRUE;
           }
       }
  @@ -434,25 +444,25 @@
       jk2_close_endpoint(env, e);
       env->l->jkLog(env, env->l, JK_LOG_INFO,
                     "ajp14.done() close endpoint %s\n",
  -                  w->name );
  +                  w->mbean->name );
       
       return JK_TRUE;
   }
   
   static int JK_METHOD
   jk2_worker_ajp14_getEndpoint(jk_env_t *env,
  -                            jk_worker_t *_this,
  +                            jk_worker_t *ajp14,
                               jk_endpoint_t **eP)
   {
       jk_endpoint_t *e = NULL;
       jk_pool_t *endpointPool;
       
  -    if( _this->secret ==NULL ) {
  +    if( ajp14->secret ==NULL ) {
       }
   
  -    if (_this->endpointCache != NULL ) {
  +    if (ajp14->endpointCache != NULL ) {
   
  -        e=_this->endpointCache->get( env, _this->endpointCache );
  +        e=ajp14->endpointCache->get( env, ajp14->endpointCache );
   
           if (e!=NULL) {
               env->l->jkLog(env, env->l, JK_LOG_INFO,
  @@ -462,7 +472,7 @@
           }
       }
   
  -    endpointPool = _this->pool->create( env, _this->pool, HUGE_POOL_SIZE );
  +    endpointPool = ajp14->pool->create( env, ajp14->pool, HUGE_POOL_SIZE );
       
       e = (jk_endpoint_t *)endpointPool->alloc(env, endpointPool,
                                                 sizeof(jk_endpoint_t));
  @@ -484,7 +494,7 @@
   
       e->cPool=endpointPool->create(env, endpointPool, HUGE_POOL_SIZE );
   
  -    e->worker = _this;
  +    e->worker = ajp14;
       e->channelData = NULL;
       
       *eP = e;
  @@ -512,36 +522,48 @@
   
   
   static int JK_METHOD
  -jk2_worker_ajp14_init(jk_env_t *env, jk_worker_t *_this)
  +jk2_worker_ajp14_init(jk_env_t *env, jk_worker_t *ajp14)
   {
       int  rc;
   
  -    if( _this->cache_sz == -1 )
  -        _this->cache_sz=JK_OBJCACHE_DEFAULT_SZ;
  +    if( ajp14->cache_sz == -1 )
  +        ajp14->cache_sz=JK_OBJCACHE_DEFAULT_SZ;
   
  -    if (_this->cache_sz > 0) {
  -        _this->endpointCache=jk2_objCache_create( env, _this->pool  );
  +    if (ajp14->cache_sz > 0) {
  +        ajp14->endpointCache=jk2_objCache_create( env, ajp14->pool  );
           
  -        if( _this->endpointCache != NULL ) {
  -            rc=_this->endpointCache->init( env, _this->endpointCache,
  -                                           _this->cache_sz );
  +        if( ajp14->endpointCache != NULL ) {
  +            rc=ajp14->endpointCache->init( env, ajp14->endpointCache,
  +                                           ajp14->cache_sz );
               if( rc!= JK_TRUE ) {
  -                _this->endpointCache=NULL;
  +                ajp14->endpointCache=NULL;
               }
           }
       } else {
  -        _this->endpointCache=NULL;
  +        ajp14->endpointCache=NULL;
       }
   
  -    if( _this->channel == NULL ) {
  +    if( ajp14->channelName == NULL ) {
           /* Use default channel */
  -        _this->setProperty( env, _this, "channel", "socket" );
  +        ajp14->channelName="channel.default";
  +    }
  +
  +    ajp14->channel= env->getByName( env, ajp14->channelName );
  +    
  +    if( ajp14->channel == NULL ) {
  +        /* XXX  Create a default channel using socket/localhost/8009 ! */
  +        env->l->jkLog(env, env->l, JK_LOG_ERROR,
  +                      "ajp14.validate(): no channel found %s\n",
  +                      ajp14->channelName);
  +        return JK_FALSE;
       }
       
  -    rc=_this->channel->init( env, _this->channel );
  +    ajp14->channel->worker=ajp14;
  +
  +    rc=ajp14->channel->init( env, ajp14->channel );
       if( rc != JK_TRUE ) {
           env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                      "ajp14.validate(): channel init failed\n");
  +                      "ajp14.init(): channel init failed\n");
           return rc;
       }
   
  @@ -550,19 +572,19 @@
   
   
   static int JK_METHOD
  -jk2_worker_ajp14_destroy(jk_env_t *env, jk_worker_t *_this)
  +jk2_worker_ajp14_destroy(jk_env_t *env, jk_worker_t *ajp14)
   {
       int i;
       
       env->l->jkLog(env, env->l, JK_LOG_INFO,
                     "ajp14.destroy()\n");
   
  -    if( _this->endpointCache != NULL ) {
  +    if( ajp14->endpointCache != NULL ) {
           jk_endpoint_t *e;
   
  -        while( _this->endpointCache->count > 0 ) {
  +        while( ajp14->endpointCache->count > 0 ) {
               
  -            e= _this->endpointCache->get( env, _this->endpointCache );
  +            e= ajp14->endpointCache->get( env, ajp14->endpointCache );
               
               if( e==NULL ) {
                   // we finished all endpoints in the cache
  @@ -571,21 +593,21 @@
               
               jk2_close_endpoint(env, e);
           }
  -        _this->endpointCache->destroy( env, _this->endpointCache );
  +        ajp14->endpointCache->destroy( env, ajp14->endpointCache );
   
           env->l->jkLog(env, env->l, JK_LOG_DEBUG,
                         "ajp14.destroy() closed %d cached endpoints\n",
                         i);
       }
   
  -    _this->pool->close( env, _this->pool );
  +    ajp14->pool->close( env, ajp14->pool );
   
       return JK_TRUE;
   }
   
   int JK_METHOD jk2_worker_ajp14_factory( jk_env_t *env, jk_pool_t *pool,
  -                                       void **result,
  -                                       const char *type, const char *name)
  +                                        jk_bean_t *result,
  +                                        const char *type, const char *name)
   {
       jk_worker_t *w=(jk_worker_t *)pool->calloc(env, pool, sizeof(jk_worker_t));
   
  @@ -595,7 +617,6 @@
           return JK_FALSE;
       }
       w->pool = pool;
  -    w->name = NULL;
       w->cache_sz=-1;
       
       w->endpointCache= NULL;
  @@ -603,12 +624,16 @@
       w->channel= NULL;
       w->secret= NULL;
      
  -    w->setProperty= jk2_worker_ajp14_setProperty;
       w->init= jk2_worker_ajp14_init;
       w->destroy=jk2_worker_ajp14_destroy;
       w->service = jk2_worker_ajp14_service;
   
  -    *result = w;
  +    result->setAttribute= jk2_worker_ajp14_setAttribute;
  +    result->object = w;
  +    w->mbean=result;
   
  +    w->workerEnv=env->getByName( env, "workerEnv" );
  +    w->workerEnv->addWorker( env, w->workerEnv, w );
  +    
       return JK_TRUE;
   }
  
  
  
  1.5       +6 -8      jakarta-tomcat-connectors/jk/native2/common/jk_worker_run.c
  
  Index: jk_worker_run.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_run.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- jk_worker_run.c   2 Mar 2002 06:13:42 -0000       1.4
  +++ jk_worker_run.c   18 Mar 2002 18:24:23 -0000      1.5
  @@ -108,7 +108,7 @@
   
   
   int JK_METHOD jk2_worker_run_factory(jk_env_t *env, jk_pool_t *pool,
  -                                     void **result,
  +                                     jk_bean_t *result,
                                        const char *type, const char *name)
   {
       jk_worker_t *_this;
  @@ -127,17 +127,15 @@
           return JK_FALSE;
       }
   
  -    _this->name=(char *)name;
       _this->pool=pool;
   
  -    _this->lb_workers     = NULL;
  -    _this->num_of_workers = 0;
  -    _this->worker_private = NULL;
  -    _this->init           = NULL;
  -    _this->destroy        = NULL;
       _this->service        = jk2_worker_run_service;
       
  -    *result=_this;
  +    result->object=_this;
  +    _this->mbean=result;
  +
  +    _this->workerEnv=env->getByName( env, "workerEnv" );
  +    _this->workerEnv->addWorker( env, _this->workerEnv, _this );
   
       return JK_TRUE;
   }
  
  
  
  1.9       +8 -13     jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c
  
  Index: jk_worker_status.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_status.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- jk_worker_status.c        2 Mar 2002 06:13:42 -0000       1.8
  +++ jk_worker_status.c        18 Mar 2002 18:24:23 -0000      1.9
  @@ -122,9 +122,9 @@
           jk_worker_t *worker=(jk_worker_t *)map->valueAt( env, map,i );
   
           jk2_printf(env, buf, "<tr><td>%s</td>", name );
  -        jk2_printf(env, buf, "<td>%s</td>", worker->type );
  +        jk2_printf(env, buf, "<td>%s</td>", worker->mbean->type );
           if( worker->channel != NULL ) {
  -            jk2_printf(env, buf, "<td>%s</td>",worker->channel->name );
  +            jk2_printf(env, buf, "<td>%s</td>",worker->channel->mbean->name );
           } else {
               jk2_printf(env, buf, "<td>&nbsp;</td>" );
           }
  @@ -279,7 +279,7 @@
   
   
   int JK_METHOD jk2_worker_status_factory(jk_env_t *env, jk_pool_t *pool,
  -                                        void **result,
  +                                        jk_bean_t *result,
                                           const char *type, const char *name)
   {
       jk_worker_t *_this;
  @@ -298,20 +298,15 @@
           return JK_FALSE;
       }
   
  -    _this->name           = (char *)name;
       _this->pool           = pool;
   
  -    _this->lb_workers     = NULL;
  -    _this->num_of_workers = 0;
  -    _this->worker_private = NULL;
  -    
  -    _this->setProperty       = NULL;
  -    _this->init           = NULL;
  -    _this->destroy        = NULL;
  -    
       _this->service        = jk2_worker_status_service;
   
  -    *result=_this;
  +    result->object=_this;
  +    _this->mbean=result;
  +
  +    _this->workerEnv=env->getByName( env, "workerEnv" );
  +    _this->workerEnv->addWorker( env, _this->workerEnv, _this );
   
       return JK_TRUE;
   }
  
  
  

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

Reply via email to