costin      02/03/27 10:58:58

  Modified:    jk/native2/common jk_uriEnv.c jk_worker_ajp13.c
                        jk_worker_status.c
  Log:
  Added 'getters' for few common proprties. More will come in the future, for any 
information
  that is worth knowing.
  
  Modified worker_status to use the new API instead of accessing the fields directly.
  Now worker status displays 3 kind of information:
  - the original config ( what the user set in jk2.properties or otherwise )
  - the processed config ( include 'default' or 'guessed' values, after $() 
substitution)
  - runtime status ( what getAttribute() returns )
  
  We'll add some filters and probably change this to a txt form ( properties-like )
  for easy parsing - this is not supposed to become a 'nice' interface, but to
  be used programatically and maybe wrapped in a nicer GUI.
  
  Revision  Changes    Path
  1.7       +11 -5     jakarta-tomcat-connectors/jk/native2/common/jk_uriEnv.c
  
  Index: jk_uriEnv.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_uriEnv.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jk_uriEnv.c       26 Mar 2002 03:03:01 -0000      1.6
  +++ jk_uriEnv.c       27 Mar 2002 18:58:57 -0000      1.7
  @@ -110,10 +110,14 @@
   static void *jk2_uriEnv_getAttribute(jk_env_t *env, jk_bean_t *bean,
                                        char *name )
   {
  -    if( strcmp( name, "worker" ) ) {
  -
  -    } else if( strcmp( name, "reqCount" ) ) {
  -
  +    jk_uriEnv_t *uriEnv=(jk_uriEnv_t *)bean->object;
  +    
  +    if( strcmp( name, "host" )==0 ) {
  +        return  (uriEnv->virtual==NULL) ? "*" : uriEnv->virtual;
  +    } else if( strcmp( name, "uri" ) ) {
  +        return uriEnv->uri;
  +    } else if( strcmp( name, "worker" ) ) {
  +        return uriEnv->workerName;
       }
       return NULL;
   }
  @@ -259,6 +263,7 @@
       return JK_TRUE;
   }
   
  +static char *myAttInfo[]={ "host", "uri", "worker", NULL };
   
   int JK_METHOD jk2_uriEnv_factory(jk_env_t *env, jk_pool_t *pool,
                                    jk_bean_t *result,
  @@ -284,7 +289,8 @@
       result->getAttribute=&jk2_uriEnv_getAttribute;
       uriEnv->mbean=result;
       result->object=uriEnv;
  -
  +    result->getAttributeInfo=myAttInfo;
  +    
       /* The name is a path */
       if( strchr( name, '/' ) != NULL ) {
           jk2_uriEnv_setProperty( env, result, "uri", (char *)name );
  
  
  
  1.6       +35 -0     jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c
  
  Index: jk_worker_ajp13.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- jk_worker_ajp13.c 26 Mar 2002 03:04:24 -0000      1.5
  +++ jk_worker_ajp13.c 27 Mar 2002 18:58:57 -0000      1.6
  @@ -85,7 +85,39 @@
   #define AJP14_DEF_PORT  (8011)
   
   /* -------------------- Impl -------------------- */
  +static char *myAttInfo[]={ "channelName", "route", "errorState", "recovering",
  +                           "epCount", NULL };
   
  +static void *jk2_worker_ajp14_getAttribute(jk_env_t *env, jk_bean_t *bean, char 
*name ) {
  +    jk_worker_t *worker=(jk_worker_t *)bean->object;
  +    
  +    if( strcmp( name, "channelName" )==0 ) {
  +        if( worker->channel != NULL )
  +            return worker->channel->mbean->name;
  +        else
  +            return worker->channelName;
  +    } else if (strcmp( name, "route" )==0 ) {
  +        return worker->route;
  +    } else if (strcmp( name, "errorState" )==0 ) {
  +        if( worker->in_error_state ) 
  +            return "Y";
  +        else
  +            return NULL;
  +    } else if (strcmp( name, "recovering" )==0 ) {
  +        if( worker->in_recovering ) 
  +            return "Y";
  +        else
  +            return NULL;
  +    } else if (strcmp( name, "epCount" )==0 ) {
  +        char *result;
  +        if( worker->endpointCache==NULL ) return "0";
  +        result=env->tmpPool->calloc( env, env->tmpPool, 6 );
  +        sprintf( result, "%d", worker->endpointCache->count );
  +        return result;
  +    } else {
  +        return NULL;
  +    }
  +}
   
   /*
    * Initialize the worker.
  @@ -676,11 +708,14 @@
       w->service = jk2_worker_ajp14_service;
   
       result->setAttribute= jk2_worker_ajp14_setAttribute;
  +    result->getAttribute= jk2_worker_ajp14_getAttribute;
       result->object = w;
       w->mbean=result;
   
       w->workerEnv=env->getByName( env, "workerEnv" );
       w->workerEnv->addWorker( env, w->workerEnv, w );
   
  +    result->getAttributeInfo=myAttInfo;
  +    
       return JK_TRUE;
   }
  
  
  
  1.13      +52 -118   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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- jk_worker_status.c        26 Mar 2002 03:04:10 -0000      1.12
  +++ jk_worker_status.c        27 Mar 2002 18:58:57 -0000      1.13
  @@ -74,88 +74,73 @@
   #include "jk_requtil.h"
   #include "jk_registry.h"
   
  -static void jk2_worker_status_displayWorkers(jk_env_t *env, jk_ws_service_t *s,
  -                                             jk_workerEnv_t *wenv)
  +static void jk2_worker_status_displayActiveProperties(jk_env_t *env, 
jk_ws_service_t *s,
  +                                                      jk_workerEnv_t *wenv)
   {
  -    jk_map_t *map=wenv->worker_map;
  +    jk_map_t *map=wenv->initData;
       int i;
  -    int count=map->size( env, map );
  -    
  -    s->jkprintf(env, s, "<H2>Active workers</H2>\n" );
  -    s->jkprintf(env, s, "<table border>\n");
  -
  -    s->jkprintf(env, s, "<tr><th>Name</th><th>Type</th>"
  -              "<th>Channel</th><th>Route</th>"
  -              "<th>Error state</th><th>Recovery</th>"
  -              "<th>Endpoint cache</th></tr>");
  -    
  -    for( i=0; i< count ; i++ ) {
  -        char *name=map->nameAt( env, map, i );
  -        jk_worker_t *worker=(jk_worker_t *)map->valueAt( env, map,i );
  -
  -        s->jkprintf(env, s, "<tr><td>%s</td>", name );
  -        s->jkprintf(env, s, "<td>%s</td>", worker->mbean->type );
  -        if( worker->channel != NULL ) {
  -            s->jkprintf(env, s, "<td>%s</td>",worker->channel->mbean->name );
  -        } else {
  -            s->jkprintf(env, s, "<td>&nbsp;</td>" );
  -        }
  -        if( worker->route != NULL ) {
  -            s->jkprintf(env, s, "<td>%s</td>",worker->route );
  -        } else {
  -            s->jkprintf(env, s, "<td>&nbsp;</td>" );
  -        }
  -        s->jkprintf(env, s, "<td class='in_error'>%d</td>",
  -                  worker->in_error_state );
  -        s->jkprintf(env, s, "<td class='in_recovering'>%d</td>",
  -                  worker->in_recovering );
  -        s->jkprintf(env, s, "<td class='epCount'>%d</td>",
  -                  ( worker->endpointCache == NULL ? 0 :
  -                    worker->endpointCache->count ));
   
  -        /* Endpoint cache ? */
  +    s->jkprintf(env, s, "<H3>Processed config</H3>\n");
  +    s->jkprintf(env, s, "<p>All settings ( automatic and configured ), after 
substitution</p>\n");
   
  -        /* special case for status worker */
  -        
  -        s->jkprintf(env, s, "</tr>" );
  +    s->jkprintf(env, s, "<table border>\n");
  +    s->jkprintf(env, s, "<tr><th>Name</th><th>Value</td></tr>\n");
  +    for( i=0; i< map->size( env, map ) ; i++ ) {
  +        char *name=map->nameAt( env, map, i );
  +        char *value=(char *)map->valueAt( env, map,i );
  +        s->jkprintf(env, s, "<tr><td>%s</td><td>%s</td></tr>", name,
  +                    value);
       }
       s->jkprintf(env, s, "</table>\n");
  +
   }
   
  -static void jk2_worker_status_displayWorkerEnv(jk_env_t *env, jk_ws_service_t *s,
  -                                               jk_workerEnv_t *wenv)
  +static void jk2_worker_status_displayRuntimeProperties(jk_env_t *env, 
jk_ws_service_t *s,
  +                                                       jk_workerEnv_t *wenv)
   {
       jk_map_t *map=wenv->initData;
       int i;
   
  -    s->jkprintf(env, s, "<H2>Worker Env Info</H2>\n");
  +    s->jkprintf(env, s, "<H3>getAttribute() info</H3>\n");
  +    s->jkprintf(env, s, "<p>Information extracted at runtime, using getAttribute() 
</p>\n");
   
       s->jkprintf(env, s, "<table border>\n");
  -    /* Could be modified dynamically */
  -    s->jkprintf(env, s, "<tr><th>LogLevel</th>"
  -              "<td id='logLevel'>%d</td></tr>\n",
  -              env->l->level);
  -    
  -    s->jkprintf(env, s, "</table>\n");
  -
  -    s->jkprintf(env, s, "<H3>Active Properties ( after substitution )</H3>\n");
  -    s->jkprintf(env, s, "<table border>\n");
       s->jkprintf(env, s, "<tr><th>Name</th><th>Value</td></tr>\n");
  -    for( i=0; i< map->size( env, map ) ; i++ ) {
  -        char *name=map->nameAt( env, map, i );
  -        char *value=(char *)map->valueAt( env, map,i );
  -        /* Don't display worker properties or uris, those are displayed separately
  -           for each worker */
  -/*         if( strncmp( name, "worker", 6 ) !=0 && */
  -/*             name[0] != '/' ) { */
  -            s->jkprintf(env, s, "<tr><td>%s</td><td>%s</td></tr>", name,
  -                       value);
  -/*         } */
  -    }
  -    s->jkprintf(env, s, "</table>\n");
  +    for( i=0; i < env->_objects->size( env, env->_objects ); i++ ) {
  +        char *name=env->_objects->nameAt( env, env->_objects, i );
  +        jk_bean_t *mbean=env->_objects->valueAt( env, env->_objects, i );
  +        int j;
  +        int propCount;
   
  +        /* Don't display aliases */
  +        if( strchr(name, ':')==NULL )
  +            continue;
  +        
  +        if( mbean==NULL || mbean->getAttributeInfo==NULL ) 
  +            continue;
  +
  +        if( mbean->getAttribute == NULL )
  +            continue;
  +
  +        for( j=0; mbean->getAttributeInfo[j] != NULL; j++ ) {
  +            char *pname=mbean->getAttributeInfo[j];
  +            
  +            
  +            s->jkprintf(env, s, "<tr><td>%s</td><td>%s</td><td>%s</td></tr>",
  +                        name, pname,
  +                        mbean->getAttribute( env, mbean, pname));
  +        }
  +    }
  +    s->jkprintf( env,s , "</table>\n" );
  +}
   
  +static void jk2_worker_status_displayConfigProperties(jk_env_t *env, 
jk_ws_service_t *s,
  +                                            jk_workerEnv_t *wenv)
  +{
  +    int i;
  +    
       s->jkprintf(env, s, "<H3>Configured Properties</H3>\n");
  +    s->jkprintf(env, s, "<p>Original data set by user</p>\n");
       s->jkprintf(env, s, "<table border>\n");
       s->jkprintf(env, s, "<tr><th>Object 
name</th><th>Property</th><th>Value</td></tr>\n");
   
  @@ -189,58 +174,8 @@
           }
       }
       s->jkprintf( env,s , "</table>\n" );
  -
   }
    
  -static void jk2_worker_status_displayMappings(jk_env_t *env, jk_ws_service_t *s,
  -                                             jk_workerEnv_t *wenv)
  -{
  -    jk_uriEnv_t **maps=wenv->uriMap->maps;
  -    int size=wenv->uriMap->size;
  -    int i;
  -
  -    s->jkprintf(env, s, "<H2>Mappings</H2>\n");
  -
  -    if( maps==NULL ) {
  -        s->jkprintf(env, s, "None\n");
  -        return;
  -    }
  -    
  -    s->jkprintf(env, s, "<table class='mappings' border>\n");
  -    
  -    s->jkprintf(env, s, "<tr><th>Host</th><th>Uri</th>"
  -              "<th>Worker</th></tr>");
  -    
  -    for( i=0; i< size ; i++ ) {
  -        jk_uriEnv_t *uriEnv=maps[i];
  -
  -        s->jkprintf(env, s, "<tr>" );
  -        s->jkprintf(env, s, "<td class='host'>%s</td>",
  -                   (uriEnv->virtual==NULL) ? "*" : uriEnv->virtual );
  -        s->jkprintf(env, s, "<td class='uri'>%s</td>",
  -                   uriEnv->uri);
  -        s->jkprintf(env, s, "<td class='worker'>%s</td>",
  -                   (uriEnv->workerName==NULL) ? "DEFAULT" : uriEnv->workerName );
  -        s->jkprintf(env, s, "</tr>" );
  -    }
  -
  -    
  -    s->jkprintf(env, s, "</table>\n");
  -}
  -
  -/* Channels and connections, including 'pooled' ones
  - */
  -static void jk2_worker_status_displayConnections(jk_env_t *env, jk_ws_service_t *s,
  -                                                 jk_workerEnv_t *wenv)
  -{
  -        s->jkprintf(env, s, "<H2>Active connections</H2>\n");
  -        s->jkprintf(env, s, "<table border>\n");
  -        
  -    
  -        s->jkprintf(env, s, "</table>\n");
  -
  -}
  -
   static int JK_METHOD jk2_worker_status_service(jk_env_t *env,
                                                  jk_worker_t *w, 
                                                  jk_ws_service_t *s)
  @@ -266,10 +201,9 @@
       }
       
       /* Body */
  -    jk2_worker_status_displayWorkerEnv(env, s, s->workerEnv );
  -    jk2_worker_status_displayWorkers(env, s, s->workerEnv );
  -    jk2_worker_status_displayMappings(env, s, s->workerEnv );
  -    jk2_worker_status_displayConnections(env, s, s->workerEnv );
  +    jk2_worker_status_displayConfigProperties(env, s, s->workerEnv );
  +    jk2_worker_status_displayActiveProperties(env, s, s->workerEnv );
  +    jk2_worker_status_displayRuntimeProperties(env, s, s->workerEnv );
       
       s->afterRequest( env, s);
       fprintf(stderr, "After req %s \n", s);
  
  
  

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

Reply via email to