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> </td>" ); + s->jkprintf(env, s, "<td> </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> </td>" ); + s->jkprintf(env, s, "<td> </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]>