Author: rjung Date: Wed Jan 9 15:19:00 2008 New Revision: 610607 URL: http://svn.apache.org/viewvc?rev=610607&view=rev Log: Use property table to decide which status worker cmd action uses which output elements.
Modified: tomcat/connectors/trunk/jk/native/common/jk_status.c tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Modified: tomcat/connectors/trunk/jk/native/common/jk_status.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_status.c?rev=610607&r1=610606&r2=610607&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_status.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_status.c Wed Jan 9 15:19:00 2008 @@ -121,6 +121,17 @@ #define JK_STATUS_CMD_TEXT_RECOVER ("recover") #define JK_STATUS_CMD_TEXT_DEF (JK_STATUS_CMD_TEXT_LIST) +#define JK_STATUS_CMD_PROP_CHECK_WORKER 0x00000001 +#define JK_STATUS_CMD_PROP_READONLY 0x00000002 +#define JK_STATUS_CMD_PROP_HEAD 0x00000004 +#define JK_STATUS_CMD_PROP_REFRESH 0x00000008 +#define JK_STATUS_CMD_PROP_BACK_LINK 0x00000010 +#define JK_STATUS_CMD_PROP_BACK_LIST 0x00000020 +#define JK_STATUS_CMD_PROP_FMT 0x00000040 +#define JK_STATUS_CMD_PROP_SWITCH_RO 0x00000080 +#define JK_STATUS_CMD_PROP_LINK_HELP 0x00000100 +#define JK_STATUS_CMD_PROP_LEGEND 0x00000200 + #define JK_STATUS_MIME_UNKNOWN (0) #define JK_STATUS_MIME_HTML (1) #define JK_STATUS_MIME_XML (2) @@ -807,6 +818,40 @@ return JK_STATUS_MIME_UNKNOWN; } +static jk_uint32_t status_cmd_props(int cmd) +{ + jk_uint32_t props = 0; + + if (cmd == JK_STATUS_CMD_LIST || + cmd == JK_STATUS_CMD_SHOW) + props |= JK_STATUS_CMD_PROP_REFRESH | + JK_STATUS_CMD_PROP_SWITCH_RO | + JK_STATUS_CMD_PROP_LINK_HELP | + JK_STATUS_CMD_PROP_LEGEND; + if (cmd == JK_STATUS_CMD_LIST || + cmd == JK_STATUS_CMD_SHOW || + cmd == JK_STATUS_CMD_VERSION) + props |= JK_STATUS_CMD_PROP_HEAD | + JK_STATUS_CMD_PROP_FMT; + if (cmd == JK_STATUS_CMD_SHOW || + cmd == JK_STATUS_CMD_VERSION) + props |= JK_STATUS_CMD_PROP_BACK_LIST; + if (cmd == JK_STATUS_CMD_SHOW || + cmd == JK_STATUS_CMD_EDIT || + cmd == JK_STATUS_CMD_VERSION) + props |= JK_STATUS_CMD_PROP_BACK_LINK; + if (cmd != JK_STATUS_CMD_EDIT && + cmd != JK_STATUS_CMD_UPDATE && + cmd != JK_STATUS_CMD_RESET && + cmd != JK_STATUS_CMD_RECOVER) + props |= JK_STATUS_CMD_PROP_READONLY; + if (cmd != JK_STATUS_CMD_LIST && + cmd != JK_STATUS_CMD_VERSION) + props |= JK_STATUS_CMD_PROP_CHECK_WORKER; + + return props; +} + static void status_start_form(jk_ws_service_t *s, status_endpoint_t *p, const char *method, @@ -2824,8 +2869,6 @@ list_workers_type(s, p, 0, ajp_cnt, l); } - display_legend(s, p, l); - JK_TRACE_EXIT(l); return JK_TRUE; } @@ -2845,7 +2888,6 @@ return JK_FALSE; } display_worker(s, p, jw, l); - display_legend(s, p, l); JK_TRACE_EXIT(l); return JK_TRUE; @@ -3077,6 +3119,7 @@ jk_logger_t *l, int *is_error) { int cmd; + jk_uint32_t cmd_props; int mime; int refresh; int read_only = 0; @@ -3132,6 +3175,7 @@ } status_get_string(p, JK_STATUS_ARG_CMD, NULL, &arg, l); cmd = status_cmd_int(arg); + cmd_props = status_cmd_props(cmd); status_get_string(p, JK_STATUS_ARG_MIME, NULL, &arg, l); mime = status_mime_int(arg); refresh = status_get_int(p, JK_STATUS_ARG_REFRESH, 0, l); @@ -3204,11 +3248,7 @@ } if (!err) { - if (read_only && - (cmd == JK_STATUS_CMD_EDIT || - cmd == JK_STATUS_CMD_UPDATE || - cmd == JK_STATUS_CMD_RESET || - cmd == JK_STATUS_CMD_RECOVER)) { + if (read_only && !(cmd_props & JK_STATUS_CMD_PROP_READONLY)) { err = "This command is not allowed in read only mode."; } } @@ -3220,8 +3260,7 @@ else if (mime == JK_STATUS_MIME_UNKNOWN) { err = "Invalid mime type."; } - else if (cmd != JK_STATUS_CMD_LIST && - cmd != JK_STATUS_CMD_VERSION && + else if (cmd_props & JK_STATUS_CMD_PROP_CHECK_WORKER && (check_worker(s, p, l) != JK_TRUE)) { err = p->msg; } @@ -3311,9 +3350,7 @@ jk_print_xml_att_string(s, 2, "name", s->server_name); jk_print_xml_att_int(s, 2, "port", s->server_port); jk_print_xml_stop_elt(s, 0, 1); - if ((cmd == JK_STATUS_CMD_LIST) || - (cmd == JK_STATUS_CMD_SHOW) || - (cmd == JK_STATUS_CMD_VERSION)) { + if (cmd_props & JK_STATUS_CMD_PROP_HEAD) { if (rc_time > 0 ) { jk_print_xml_start_elt(s, w, 0, 0, "time"); jk_print_xml_att_string(s, 2, "datetime", buf_time); @@ -3344,9 +3381,7 @@ jk_printf(s, " name=%s", s->server_name); jk_printf(s, " port=%d", s->server_port); jk_puts(s, "\n"); - if ((cmd == JK_STATUS_CMD_LIST) || - (cmd == JK_STATUS_CMD_SHOW) || - (cmd == JK_STATUS_CMD_VERSION)) { + if (cmd_props & JK_STATUS_CMD_PROP_HEAD) { if (rc_time > 0) { jk_puts(s, "Time:"); jk_printf(s, " datetime=%s", buf_time); @@ -3375,9 +3410,7 @@ else if (mime == JK_STATUS_MIME_PROP) { jk_print_prop_att_string(s, w, NULL, "server_name", s->server_name); jk_print_prop_att_int(s, w, NULL, "server_port", s->server_port); - if ((cmd == JK_STATUS_CMD_LIST) || - (cmd == JK_STATUS_CMD_SHOW) || - (cmd == JK_STATUS_CMD_VERSION)) { + if (cmd_props & JK_STATUS_CMD_PROP_HEAD) { if (rc_time > 0) { jk_print_prop_att_string(s, w, NULL, "time_datetime", buf_time); jk_print_prop_att_string(s, w, NULL, "time_tz", buf_tz); @@ -3400,8 +3433,7 @@ } } else if (mime == JK_STATUS_MIME_HTML) { - if ((cmd == JK_STATUS_CMD_LIST || - cmd == JK_STATUS_CMD_SHOW) && + if (cmd_props & JK_STATUS_CMD_PROP_REFRESH && refresh > 0) { jk_printf(s, "\n<meta http-equiv=\"Refresh\" content=\"%d;url=%s?%s\">", refresh, s->req_uri, p->query_string); @@ -3418,9 +3450,7 @@ jk_puts(s, " (read only)"); } jk_puts(s, "</h1>\n\n"); - if ((cmd == JK_STATUS_CMD_LIST) || - (cmd == JK_STATUS_CMD_SHOW) || - (cmd == JK_STATUS_CMD_VERSION)) { + if (cmd_props & JK_STATUS_CMD_PROP_HEAD) { jk_putv(s, "<table><tr><td>Server Version:</td><td>", s->server_software, "</td><td> </td><td>", NULL); if (rc_time > 0) { @@ -3432,8 +3462,7 @@ jk_printf(s, "Unix Seconds:</td><td>%d", unix_seconds); jk_puts(s, "</td></tr></table>\n<hr/>\n"); } - if (cmd == JK_STATUS_CMD_LIST || - cmd == JK_STATUS_CMD_SHOW) { + if (cmd_props & JK_STATUS_CMD_PROP_REFRESH) { if (refresh > 0) { const char *str = p->query_string; char *buf = jk_pool_alloc(s->pool, sizeof(char *) * (strlen(str)+1)); @@ -3482,15 +3511,12 @@ jk_puts(s, "</form>\n"); } } - if (cmd == JK_STATUS_CMD_SHOW || - cmd == JK_STATUS_CMD_EDIT || - cmd == JK_STATUS_CMD_VERSION) { + if (cmd_props & JK_STATUS_CMD_PROP_BACK_LINK) { int from; status_get_string(p, JK_STATUS_ARG_FROM, NULL, &arg, l); from = status_cmd_int(arg); jk_puts(s, "["); - if (cmd == JK_STATUS_CMD_SHOW || - cmd == JK_STATUS_CMD_VERSION || + if (cmd_props & JK_STATUS_CMD_PROP_BACK_LIST || from == JK_STATUS_CMD_LIST) { status_write_uri(s, p, "Back to worker list", JK_STATUS_CMD_LIST, JK_STATUS_MIME_UNKNOWN, "", "", 0, 0, "", l); @@ -3501,9 +3527,7 @@ } jk_puts(s, "] "); } - if (cmd == JK_STATUS_CMD_LIST || - cmd == JK_STATUS_CMD_SHOW || - cmd == JK_STATUS_CMD_VERSION) { + if (cmd_props & JK_STATUS_CMD_PROP_FMT) { jk_puts(s, "[Change Format: "); status_write_uri(s, p, "XML", 0, JK_STATUS_MIME_XML, NULL, NULL, 0, 0, NULL, l); @@ -3515,7 +3539,7 @@ NULL, NULL, 0, 0, NULL, l); jk_puts(s, "] "); } - if (cmd == JK_STATUS_CMD_LIST || cmd == JK_STATUS_CMD_SHOW) { + if (cmd_props & JK_STATUS_CMD_PROP_SWITCH_RO) { if (!w->read_only) { jk_puts(s, "["); if (read_only) { @@ -3529,12 +3553,13 @@ jk_puts(s, "] \n"); } } - if (cmd == JK_STATUS_CMD_LIST || cmd == JK_STATUS_CMD_SHOW) { + if (cmd_props & JK_STATUS_CMD_PROP_LINK_HELP) { jk_puts(s, "["); - if (cmd == JK_STATUS_CMD_LIST) + if (cmd == JK_STATUS_CMD_LIST) { jk_puts(s, "<b>S</b>=Show only this worker"); - if (!read_only && cmd == JK_STATUS_CMD_LIST) - jk_puts(s, ", "); + if (!read_only) + jk_puts(s, ", "); + } if (!read_only) jk_puts(s, "<b>E</b>=Edit worker, <b>R</b>=Reset worker state, <b>T</b>=Try worker recovery"); jk_puts(s, "]\n"); @@ -3557,6 +3582,9 @@ err = "Error in generating this worker's configuration form."; } } + } + if (cmd_props & JK_STATUS_CMD_PROP_LEGEND) { + display_legend(s, p, l); } } } Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=610607&r1=610606&r2=610607&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original) +++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Wed Jan 9 15:19:00 2008 @@ -44,6 +44,10 @@ <subsection name="Native"> <changelog> <update> + LB: Use property table to decide which cmd action uses which + output elements. (rjung) + </update> + <update> Common: Include original configuration map in worker_env to make it available for workers, e.g. the status worker. (rjung) </update> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]