costin      02/05/09 14:09:41

  Modified:    jk/native2/common jk_worker_status.c
  Log:
  Much cleaner and easier to read report, remove duplicated code and
  generalize a bit.
  
  We'll display a table for each object type ( that we care about ):
  - ajp workers
  - uris
  - endpoints
  
  For each object we display all we can get via 'getters' ( if you want more
  info, just add a new attribute for getAttribute ).
  
  The workers are the important piece - the state and counters.
  
  Note that at this moment we display only the info in the apache instance
  that is active. It'll change to use the shmem scoreboard.
  
  Revision  Changes    Path
  1.18      +37 -114   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.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- jk_worker_status.c        3 May 2002 18:10:58 -0000       1.17
  +++ jk_worker_status.c        9 May 2002 21:09:41 -0000       1.18
  @@ -74,38 +74,16 @@
   #include "jk_requtil.h"
   #include "jk_registry.h"
   
  -static void jk2_worker_status_displayActiveProperties(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, "<H3>Processed config</H3>\n");
  -    s->jkprintf(env, s, "<p>All settings ( automatic and configured ), after 
substitution</p>\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 );
  -        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_displayRuntimeWorkers(jk_env_t *env, jk_ws_service_t 
*s,
  -                                                       jk_workerEnv_t *wenv)
  +/** Use 'introspection' data to find what getters an type support,
  + *  and display the information in a table
  + */
  +static void jk2_worker_status_displayRuntimeType(jk_env_t *env, jk_ws_service_t *s,
  +                                                 jk_workerEnv_t *wenv, char *type)
   {
       jk_map_t *map=wenv->initData;
       int i;
       int needHeader=JK_TRUE;
   
  -    s->jkprintf(env, s, "<H3>Worker runtime info</H3>\n");
  -    s->jkprintf(env, s, "<p>Worker information, using getAttribute() </p>\n");
  -
  -    s->jkprintf(env, s, "<table border>\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 );
  @@ -122,10 +100,14 @@
           if( mbean->getAttribute == NULL )
               continue;
   
  -        if( strncmp( "ajp13", mbean->type, 5 ) != 0 )
  +        if( strncmp( type, mbean->type, 5 ) != 0 )
               continue;
   
           if( needHeader ) {
  +            s->jkprintf(env, s, "<H3>%s runtime info</H3>\n", type);
  +            s->jkprintf(env, s, "<p>%s information, using getAttribute() </p>\n", 
type);
  +            
  +            s->jkprintf(env, s, "<table border>\n");
               s->jkprintf(env, s, "<tr><th>name</th>\n");
               for( j=0; mbean->getAttributeInfo[j] != NULL; j++ ) {
                   char *pname=mbean->getAttributeInfo[j];
  @@ -143,95 +125,35 @@
                           mbean->getAttribute( env, mbean, pname));
           }
       }
  -    s->jkprintf( env,s , "</table>\n" );
  -}
  -
  -static void jk2_worker_status_displayRuntimeUris(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, "<H3>URI info</H3>\n");
  -    s->jkprintf(env, s, "<p>Information about uri mappings. "
  -                "Will include some statistics ( for the active process )</p>\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 < 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;
  -
  -        if( strncmp( "uri", mbean->type, 3 ) != 0 )
  -            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>",
  -                        mbean->localName, pname,
  -                        mbean->getAttribute( env, mbean, pname));
  -        }
  +    if( ! needHeader ) {
  +        s->jkprintf( env,s , "</table>\n" );
       }
  -    s->jkprintf( env,s , "</table>\n" );
   }
   
  -static void jk2_worker_status_displayRuntimeProperties(jk_env_t *env, 
jk_ws_service_t *s,
  -                                                       jk_workerEnv_t *wenv)
  +/** That's the 'bulk' data - everything that was configured, after substitution
  + */
  +static void jk2_worker_status_displayActiveProperties(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, "<H3>getAttribute() info</H3>\n");
  -    s->jkprintf(env, s, "<p>Information extracted at runtime, using getAttribute() 
</p>\n");
  +    s->jkprintf(env, s, "<H3>Processed config</H3>\n");
  +    s->jkprintf(env, s, "<p>All settings ( automatic and configured ), after 
substitution</p>\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 < 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;
  -
  -        if( strncmp( "uri", mbean->type, 3 ) == 0  ||
  -            strncmp( "ajp13", mbean->type, 5 ) == 0 ) {
  -            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));
  -        }
  +    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" );
  +    s->jkprintf(env, s, "</table>\n");
   }
   
  +/** persistent configuration
  + */
   static void jk2_worker_status_displayConfigProperties(jk_env_t *env, 
jk_ws_service_t *s,
                                               jk_workerEnv_t *wenv)
   {
  @@ -258,15 +180,15 @@
           propCount=mbean->settings->size( env, mbean->settings );
   
           if( propCount==0 ) {
  -            s->jkprintf(env, s, "<tr><td>%s</td></tr>", mbean->name );
  +            s->jkprintf(env, s, "<tr><th>%s</th><td></td></tr>", mbean->name );
           } else {
  +            s->jkprintf(env, s, "<tr><th rowspan='%d'>%s</th></tr>", propCount, 
mbean->name );
               for( j=0; j < propCount ; j++ ) {
                   char *pname=mbean->settings->nameAt( env, mbean->settings, j);
                   /* Don't save redundant information */
                   if( strcmp( pname, "name" ) != 0 ) {
  -                    s->jkprintf(env, s, 
"<tr><td>%s</td><td>%s</td><td>%s</td></tr>",
  -                                name, pname,
  -                                mbean->settings->valueAt( env, mbean->settings, j));
  +                    s->jkprintf(env, s, "<tr><td>%s</td><td>%s</td></tr>",
  +                                pname, mbean->settings->valueAt( env, 
mbean->settings, j));
                   }
               }
           }
  @@ -280,9 +202,10 @@
   {
       char *uri=s->req_uri;
       jk_map_t *queryMap;
  -    
  -    env->l->jkLog(env, env->l, JK_LOG_INFO, "status.service() %s %s\n",
  -                  uri, s->query_string);
  +
  +    if( w->mbean->debug > 0 ) 
  +        env->l->jkLog(env, env->l, JK_LOG_INFO, "status.service() %s %s\n",
  +                      uri, s->query_string);
   
       /* Generate the header */
       s->status=200;
  @@ -298,10 +221,10 @@
       }
       
       /* Body */
  -    jk2_worker_status_displayRuntimeWorkers(env, s, s->workerEnv );
  -    jk2_worker_status_displayRuntimeUris(env, s, s->workerEnv );
  +    jk2_worker_status_displayRuntimeType(env, s, s->workerEnv, "ajp13" );
  +    jk2_worker_status_displayRuntimeType(env, s, s->workerEnv, "endpoint" );
  +    jk2_worker_status_displayRuntimeType(env, s, s->workerEnv, "uri" );
       jk2_worker_status_displayConfigProperties(env, s, s->workerEnv );
  -    jk2_worker_status_displayRuntimeProperties(env, s, s->workerEnv );
       jk2_worker_status_displayActiveProperties(env, s, s->workerEnv );
       
       s->afterRequest( env, s);
  
  
  

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

Reply via email to