costin      02/03/20 15:40:52

  Modified:    jk/native2/common jk_worker_status.c
  Log:
  Removed the printf, it's generic ( moved to ws_service )
  
  The code will be rewriten to use generic patterns and support
  all jk objects.
  ( and also make it easier to parse - I'll leave the nice UI to
  java ).
  
  Revision  Changes    Path
  1.10      +55 -98    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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- jk_worker_status.c        18 Mar 2002 18:24:23 -0000      1.9
  +++ jk_worker_status.c        20 Mar 2002 23:40:52 -0000      1.10
  @@ -74,45 +74,17 @@
   #include "jk_requtil.h"
   #include "jk_registry.h"
   
  -#define JK_BUF_SIZE 4096
  -
  -typedef struct jk_buff {
  -    int pos;
  -    int size;
  -    
  -    char *buf;
  -
  -    jk_ws_service_t *s;
  -
  -    void (*jkprintf)( jk_env_t *env, struct jk_buff *buf, char *frm,... );
  -    void (*flush)( jk_env_t *env );
  -} jk_buff_t;
  -
  -static void jk2_printf(jk_env_t *env, jk_buff_t *buf, char *fmt, ...)
  -{
  -    va_list vargs;
  -    int ret=0;
  -
  -    va_start(vargs,fmt);
  -    buf->pos=0; /* Temp - we don't buffer */
  -    ret=vsnprintf(buf->buf + buf->pos, buf->size - buf->pos, fmt, vargs);
  -    va_end(vargs);
  -
  -    buf->s->write( env, buf->s, buf->buf, strlen(buf->buf) );
  -    /*fprintf(stderr, "Writing %d %s \n", ret, buf->buf); */
  -}
  -
  -static void jk2_worker_status_displayWorkers(jk_env_t *env, jk_buff_t *buf,
  +static void jk2_worker_status_displayWorkers(jk_env_t *env, jk_ws_service_t *s,
                                                jk_workerEnv_t *wenv)
   {
       jk_map_t *map=wenv->worker_map;
       int i;
       int count=map->size( env, map );
       
  -    jk2_printf(env, buf, "<H2>Active workers</H2>\n" );
  -    jk2_printf(env, buf, "<table border>\n");
  +    s->jkprintf(env, s, "<H2>Active workers</H2>\n" );
  +    s->jkprintf(env, s, "<table border>\n");
   
  -    jk2_printf(env, buf, "<tr><th>Name</th><th>Type</th>"
  +    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>");
  @@ -121,23 +93,23 @@
           char *name=map->nameAt( env, map, i );
           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->mbean->type );
  +        s->jkprintf(env, s, "<tr><td>%s</td>", name );
  +        s->jkprintf(env, s, "<td>%s</td>", worker->mbean->type );
           if( worker->channel != NULL ) {
  -            jk2_printf(env, buf, "<td>%s</td>",worker->channel->mbean->name );
  +            s->jkprintf(env, s, "<td>%s</td>",worker->channel->mbean->name );
           } else {
  -            jk2_printf(env, buf, "<td>&nbsp;</td>" );
  +            s->jkprintf(env, s, "<td>&nbsp;</td>" );
           }
           if( worker->route != NULL ) {
  -            jk2_printf(env, buf, "<td>%s</td>",worker->route );
  +            s->jkprintf(env, s, "<td>%s</td>",worker->route );
           } else {
  -            jk2_printf(env, buf, "<td>&nbsp;</td>" );
  +            s->jkprintf(env, s, "<td>&nbsp;</td>" );
           }
  -        jk2_printf(env, buf, "<td class='in_error'>%d</td>",
  +        s->jkprintf(env, s, "<td class='in_error'>%d</td>",
                     worker->in_error_state );
  -        jk2_printf(env, buf, "<td class='in_recovering'>%d</td>",
  +        s->jkprintf(env, s, "<td class='in_recovering'>%d</td>",
                     worker->in_recovering );
  -        jk2_printf(env, buf, "<td class='epCount'>%d</td>",
  +        s->jkprintf(env, s, "<td class='epCount'>%d</td>",
                     ( worker->endpointCache == NULL ? 0 :
                       worker->endpointCache->count ));
   
  @@ -145,30 +117,30 @@
   
           /* special case for status worker */
           
  -        jk2_printf(env, buf, "</tr>" );
  +        s->jkprintf(env, s, "</tr>" );
       }
  -    jk2_printf(env, buf, "</table>\n");
  +    s->jkprintf(env, s, "</table>\n");
   }
   
  -static void jk2_worker_status_displayWorkerEnv(jk_env_t *env, jk_buff_t *buf,
  +static void jk2_worker_status_displayWorkerEnv(jk_env_t *env, jk_ws_service_t *s,
                                                  jk_workerEnv_t *wenv)
   {
       jk_map_t *map=wenv->initData;
       int i;
   
  -    jk2_printf(env, buf, "<H2>Worker Env Info</H2>\n");
  +    s->jkprintf(env, s, "<H2>Worker Env Info</H2>\n");
   
  -    jk2_printf(env, buf, "<table border>\n");
  +    s->jkprintf(env, s, "<table border>\n");
       /* Could be modified dynamically */
  -    jk2_printf(env, buf, "<tr><th>LogLevel</th>"
  +    s->jkprintf(env, s, "<tr><th>LogLevel</th>"
                 "<td id='logLevel'>%d</td></tr>\n",
                 wenv->log_level);
       
  -    jk2_printf(env, buf, "</table>\n");
  +    s->jkprintf(env, s, "</table>\n");
   
  -    jk2_printf(env, buf, "<H3>Properties</H3>\n");
  -    jk2_printf(env, buf, "<table border>\n");
  -    jk2_printf(env, buf, "<tr><th>Name</th><th>Value</td></tr>\n");
  +    s->jkprintf(env, s, "<H3>Properties</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 );
  @@ -176,104 +148,95 @@
              for each worker */
   /*         if( strncmp( name, "worker.", 7 ) !=0 && */
   /*             name[0] != '/' ) { */
  -            jk2_printf(env, buf, "<tr><td>%s</td><td>%s</td></tr>", name,
  +            s->jkprintf(env, s, "<tr><td>%s</td><td>%s</td></tr>", name,
                          value);
   /*         } */
       }
  -    jk2_printf(env, buf, "</table>\n");
  +    s->jkprintf(env, s, "</table>\n");
   
   }
   
  -static void jk2_worker_status_displayMappings(jk_env_t *env, jk_buff_t *buf,
  +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;
   
  -    jk2_printf(env, buf, "<H2>Mappings</H2>\n");
  +    s->jkprintf(env, s, "<H2>Mappings</H2>\n");
   
       if( maps==NULL ) {
  -        jk2_printf(env, buf, "None\n");
  +        s->jkprintf(env, s, "None\n");
           return;
       }
       
  -    jk2_printf(env, buf, "<table class='mappings' border>\n");
  +    s->jkprintf(env, s, "<table class='mappings' border>\n");
       
  -    jk2_printf(env, buf, "<tr><th>Host</th><th>Uri</th>"
  +    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];
   
  -        jk2_printf(env, buf, "<tr>" );
  -        jk2_printf(env, buf, "<td class='host'>%s</td>",
  +        s->jkprintf(env, s, "<tr>" );
  +        s->jkprintf(env, s, "<td class='host'>%s</td>",
                      (uriEnv->virtual==NULL) ? "*" : uriEnv->virtual );
  -        jk2_printf(env, buf, "<td class='uri'>%s</td>",
  +        s->jkprintf(env, s, "<td class='uri'>%s</td>",
                      uriEnv->uri);
  -        jk2_printf(env, buf, "<td class='worker'>%s</td>",
  +        s->jkprintf(env, s, "<td class='worker'>%s</td>",
                      (uriEnv->workerName==NULL) ? "DEFAULT" : uriEnv->workerName );
  -        jk2_printf(env, buf, "</tr>" );
  +        s->jkprintf(env, s, "</tr>" );
       }
   
       
  -    jk2_printf(env, buf, "</table>\n");
  +    s->jkprintf(env, s, "</table>\n");
   }
   
   /* Channels and connections, including 'pooled' ones
    */
  -static void jk2_worker_status_displayConnections(jk_env_t *env, jk_buff_t *buf,
  +static void jk2_worker_status_displayConnections(jk_env_t *env, jk_ws_service_t *s,
                                                    jk_workerEnv_t *wenv)
   {
  -        jk2_printf(env, buf, "<H2>Active connections</H2>\n");
  -        jk2_printf(env, buf, "<table border>\n");
  +        s->jkprintf(env, s, "<H2>Active connections</H2>\n");
  +        s->jkprintf(env, s, "<table border>\n");
           
       
  -        jk2_printf(env, buf, "</table>\n");
  +        s->jkprintf(env, s, "</table>\n");
   
   }
   
  -static jk_buff_t *jk2_worker_status_createBuffer(jk_env_t *env, 
  -                                                 jk_ws_service_t *s)
  -{
  -    jk_buff_t *buff;
  -    int bsize=JK_BUF_SIZE;
  -    
  -    env->l->jkLog(env, env->l, JK_LOG_INFO, "create buffer()\n");
  -    buff=(jk_buff_t *)s->pool->alloc( env, s->pool, sizeof( jk_buff_t) );
  -    buff->s=s;
  -    buff->size=bsize;
  -    buff->buf=(char *)s->pool->alloc( env, s->pool, bsize );
  -    buff->jkprintf=jk2_printf;
  -
  -    return buff;
  -}
  -
   static int JK_METHOD jk2_worker_status_service(jk_env_t *env,
                                                  jk_worker_t *w, 
                                                  jk_ws_service_t *s)
   {
  -    jk_buff_t *buff=jk2_worker_status_createBuffer(env, s );
  +    char *uri=s->req_uri;
  +    jk_map_t *queryMap;
       
  -    env->l->jkLog(env, env->l, JK_LOG_INFO, "status.service()\n");
  +    env->l->jkLog(env, env->l, JK_LOG_INFO, "status.service() %s %s\n",
  +                  uri, s->query_string);
   
       /* Generate the header */
       s->status=200;
       s->msg="OK";
       s->headers_out->put(env, s->headers_out,
                           "Content-Type", "text/html", NULL);
  -
       fprintf(stderr, "Writing head \n");
       s->head(env, s );
   
  +    /** Process the query string.
  +     */
  +    if( s->query_string == NULL ) {
  +        s->query_string="get=*";
  +    }
  +    
       /* Body */
  -    jk2_worker_status_displayWorkerEnv(env, buff, s->workerEnv );
  -    jk2_worker_status_displayWorkers(env, buff, s->workerEnv );
  -    jk2_worker_status_displayMappings(env, buff, s->workerEnv );
  -    jk2_worker_status_displayConnections(env, buff, s->workerEnv );
  +    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 );
       
       s->afterRequest( env, s);
  -    fprintf(stderr, "After req %s \n", buff);
  +    fprintf(stderr, "After req %s \n", s);
       return JK_TRUE;
   }
   
  @@ -283,12 +246,6 @@
                                           const char *type, const char *name)
   {
       jk_worker_t *_this;
  -    
  -    if(NULL == name ) {
  -        env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                      "status_worker.factory() NullPointerException\n");
  -        return JK_FALSE;
  -    }
       
       _this = (jk_worker_t *)pool->calloc(env, pool, sizeof(jk_worker_t));
   
  
  
  

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

Reply via email to