Author: rjung
Date: Sun Aug 27 16:59:37 2006
New Revision: 437478

URL: http://svn.apache.org/viewvc?rev=437478&view=rev
Log:
Change independant runtime state flags error/recovering/busy to
single scalar with values ok/error/recovering/busy.
Change independant config state flags stopped/disabled to+
single scalar with values active/disabled/stopped.

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
    tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h
    tomcat/connectors/trunk/jk/native/common/jk_shm.h
    tomcat/connectors/trunk/jk/native/common/jk_status.c
    tomcat/connectors/trunk/jk/native/common/jk_util.c
    tomcat/connectors/trunk/jk/native/common/jk_util.h

Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c?rev=437478&r1=437477&r2=437478&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Sun Aug 27 16:59:37 
2006
@@ -39,8 +39,8 @@
  * The load balancing code in this
  */
 
-#define JK_WORKER_IN_ERROR(w) ((w)->in_error_state  && !(w)->is_busy)
-#define JK_WORKER_USABLE(w)   (!(w)->in_error_state && !(w)->is_stopped && 
!(w)->is_disabled && !(w)->is_busy)
+#define JK_WORKER_USABLE(w)   ((w)->state != JK_LB_STATE_ERROR && (w)->state 
!= JK_LB_STATE_BUSY && (w)->activation != JK_LB_ACTIVATION_STOPPED && 
(w)->activation != JK_LB_ACTIVATION_DISABLED)
+#define JK_WORKER_USABLE_STICKY(w)   ((w)->state != JK_LB_STATE_ERROR && 
(w)->activation != JK_LB_ACTIVATION_STOPPED)
 
 struct lb_endpoint
 {
@@ -236,7 +236,7 @@
 
     for (i = 0; i < p->num_of_workers; i++) {
         w = &p->lb_workers[i];
-        if (JK_WORKER_IN_ERROR(w->s)) {
+        if (w->s->state == JK_LB_STATE_ERROR) {
             elapsed = (int)difftime(now, w->s->error_time);
             if (elapsed <= p->s->recover_wait_time) {
                 if (JK_IS_DEBUG_LEVEL(l))
@@ -250,9 +250,7 @@
                            "worker %s is marked for recovery",
                            w->s->name);
                 w->s->lb_value = curmax;
-                w->s->in_recovering = JK_TRUE;
-                w->s->in_error_state = JK_FALSE;
-                w->s->is_busy = JK_FALSE;
+                w->s->state = JK_LB_STATE_RECOVER;
             }
         }
     }
@@ -436,7 +434,7 @@
         candidate = find_best_bydomain(p, name, l);
     }
     if (candidate) {
-        if (candidate->s->in_error_state || candidate->s->is_stopped ) {
+        if (!JK_WORKER_USABLE_STICKY(candidate->s)) {
             /* We have a worker that is error state or stopped.
              * If it has a redirection set use that redirection worker.
              * This enables to safely remove the member from the
@@ -451,7 +449,7 @@
                 uses_domain = 1;
                 candidate = find_best_bydomain(p, candidate->s->domain, l);
             }
-            if (candidate && (candidate->s->in_error_state || 
candidate->s->is_stopped))
+            if (candidate && !JK_WORKER_USABLE_STICKY(candidate->s))
                 candidate = NULL;
         }
     }
@@ -503,7 +501,7 @@
         /* No need to find the best worker
          * if there is a single one
          */
-        if(!p->lb_workers[0].s->in_error_state && 
!p->lb_workers[0].s->is_stopped) {
+        if (JK_WORKER_USABLE_STICKY(p->lb_workers[0].s)) {
             p->lb_workers[0].r = &(p->lb_workers[0].s->jvm_route[0]);
             JK_TRACE_EXIT(l);
             return &p->lb_workers[0];
@@ -674,7 +672,8 @@
                  * as in error if the retry number is
                  * greater then the number of retries.
                  */
-                rec->s->is_busy = JK_TRUE;
+                if (rec->s->state != JK_LB_STATE_ERROR)
+                    rec->s->state = JK_LB_STATE_BUSY;
                 jk_log(l, JK_LOG_INFO,
                        "could not get free endpoint for worker %s (%d 
retries)",
                        rec->s->name, retry);
@@ -743,7 +742,8 @@
                 /* When returning the endpoint mark the worker as not busy.
                  * We have at least one endpoint free
                  */
-                rec->s->is_busy = JK_FALSE;
+                if (rec->s->state == JK_LB_STATE_BUSY)
+                    rec->s->state = JK_LB_STATE_OK;
                 /* Decrement the busy worker count.
                  * Check if the busy was reset to zero by graceful
                  * restart of the server.
@@ -753,8 +753,7 @@
                 if (p->worker->s->busy)
                     p->worker->s->busy--;
                 if (service_stat == JK_TRUE) {
-                    rec->s->in_error_state = JK_FALSE;
-                    rec->s->in_recovering = JK_FALSE;
+                    rec->s->state = JK_LB_STATE_OK;
                     rec->s->error_time = 0;
                     if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
                         jk_shm_unlock();
@@ -768,8 +767,7 @@
                     */
 
                     rec->s->errors++;
-                    rec->s->in_error_state = JK_TRUE;
-                    rec->s->in_recovering = JK_FALSE;
+                    rec->s->state = JK_LB_STATE_ERROR;
                     rec->s->error_time = time(NULL);
                     if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
                         jk_shm_unlock();
@@ -797,8 +795,7 @@
                     * Since this is bad request do not fail over.
                     */
                     rec->s->errors++;
-                    rec->s->in_error_state = JK_FALSE;
-                    rec->s->in_recovering = JK_FALSE;
+                    rec->s->state = JK_LB_STATE_OK;
                     rec->s->error_time = 0;
                     if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
                         jk_shm_unlock();
@@ -855,6 +852,10 @@
                     snprintf(buf, JK_LB_MAX_SZ, "%d", prec->s->busy);
                     log_names[6] = JK_NOTE_LB_FIRST_BUSY;
                     log_values[6] = buf;
+                    log_names[7] = JK_NOTE_LB_FIRST_ACTIVATION;
+                    log_values[7] = lb_activation_type[rec->s->activation];
+                    log_names[8] = JK_NOTE_LB_FIRST_STATE;
+                    log_values[8] = lb_state_type[rec->s->state];
                     s->add_log_items(s, log_names, log_values, 
JK_LB_NOTES_COUNT);
                 }
             }
@@ -905,6 +906,10 @@
             snprintf(buf, JK_LB_MAX_SZ, "%d", prec->s->busy);
             log_names[6] = JK_NOTE_LB_LAST_BUSY;
             log_values[6] = buf;
+            log_names[7] = JK_NOTE_LB_LAST_ACTIVATION;
+            log_values[7] = lb_activation_type[prec->s->activation];
+            log_names[8] = JK_NOTE_LB_LAST_STATE;
+            log_values[8] = lb_state_type[prec->s->state];
             s->add_log_items(s, log_names, log_values, JK_LB_NOTES_COUNT);
         }
     }
@@ -996,14 +1001,9 @@
                     strncpy(p->lb_workers[i].s->redirect, s, JK_SHM_STR_SIZ);
 
                 p->lb_workers[i].s->lb_value = 0;
-                p->lb_workers[i].s->in_error_state = JK_FALSE;
-                p->lb_workers[i].s->in_recovering = JK_FALSE;
-                p->lb_workers[i].s->is_busy = JK_FALSE;
+                p->lb_workers[i].s->state = JK_LB_STATE_NA;
                 p->lb_workers[i].s->error_time = 0;
-                /* Worker can be initaly disabled as hot standby */
-                p->lb_workers[i].s->is_disabled = 
jk_get_is_worker_disabled(props, worker_names[i]);
-                /* Worker can be initaly deactive as cold standby */
-                p->lb_workers[i].s->is_stopped = 
jk_get_is_worker_stopped(props, worker_names[i]);
+                p->lb_workers[i].s->activation = 
jk_get_worker_activation(props, worker_names[i]);
                 if (!wc_create_worker(p->lb_workers[i].s->name, 0,
                                       props,
                                       &(p->lb_workers[i].w),

Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h?rev=437478&r1=437477&r2=437478&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h Sun Aug 27 16:59:37 
2006
@@ -52,9 +52,25 @@
 #define JK_LB_LOCK_TEXT_OPTIMISTIC     ("Optimistic")
 #define JK_LB_LOCK_TEXT_PESSIMISTIC    ("Pessimistic")
 #define JK_LB_LOCK_TEXT_DEF            (JK_LB_LOCK_TEXT_OPTIMISTIC)
+#define JK_LB_STATE_NA                 (1)
+#define JK_LB_STATE_OK                 (2)
+#define JK_LB_STATE_RECOVER            (3)
+#define JK_LB_STATE_BUSY               (4)
+#define JK_LB_STATE_ERROR              (5)
+#define JK_LB_STATE_TEXT_NA            ("N/A")
+#define JK_LB_STATE_TEXT_OK            ("OK")
+#define JK_LB_STATE_TEXT_RECOVER       ("REC")
+#define JK_LB_STATE_TEXT_BUSY          ("BSY")
+#define JK_LB_STATE_TEXT_ERROR         ("ERR")
+#define JK_LB_ACTIVATION_ACTIVE        (1)
+#define JK_LB_ACTIVATION_DISABLED      (2)
+#define JK_LB_ACTIVATION_STOPPED       (3)
+#define JK_LB_ACTIVATION_TEXT_ACTIVE   ("ACT")
+#define JK_LB_ACTIVATION_TEXT_DISABLED ("DIS")
+#define JK_LB_ACTIVATION_TEXT_STOPPED  ("STP")
 
 #define JK_LB_MAX_SZ                 (21)
-#define JK_LB_NOTES_COUNT            (7)
+#define JK_LB_NOTES_COUNT            (9)
 #define JK_NOTE_LB_FIRST_NAME        ("JK_LB_FIRST_NAME")
 #define JK_NOTE_LB_FIRST_VALUE       ("JK_LB_FIRST_VALUE")
 #define JK_NOTE_LB_FIRST_ACCESSED    ("JK_LB_FIRST_ACCESSED")
@@ -62,6 +78,8 @@
 #define JK_NOTE_LB_FIRST_TRANSFERRED ("JK_LB_FIRST_TRANSFERRED")
 #define JK_NOTE_LB_FIRST_ERRORS      ("JK_LB_FIRST_ERRORS")
 #define JK_NOTE_LB_FIRST_BUSY        ("JK_LB_FIRST_BUSY")
+#define JK_NOTE_LB_FIRST_ACTIVATION  ("JK_LB_FIRST_ACTIVATION")
+#define JK_NOTE_LB_FIRST_STATE       ("JK_LB_FIRST_STATE")
 #define JK_NOTE_LB_LAST_NAME         ("JK_LB_LAST_NAME")
 #define JK_NOTE_LB_LAST_VALUE        ("JK_LB_LAST_VALUE")
 #define JK_NOTE_LB_LAST_ACCESSED     ("JK_LB_LAST_ACCESSED")
@@ -69,6 +87,8 @@
 #define JK_NOTE_LB_LAST_TRANSFERRED  ("JK_LB_LAST_TRANSFERRED")
 #define JK_NOTE_LB_LAST_ERRORS       ("JK_LB_LAST_ERRORS")
 #define JK_NOTE_LB_LAST_BUSY         ("JK_LB_LAST_BUSY")
+#define JK_NOTE_LB_LAST_ACTIVATION   ("JK_LB_LAST_ACTIVATION")
+#define JK_NOTE_LB_LAST_STATE        ("JK_LB_LAST_STATE")
 
 /* Minimal time in ms to wait between get_endpoint retries for balanced 
workers */
 #define JK_LB_MIN_RETRY_WAIT  (25)
@@ -95,6 +115,24 @@
     JK_LB_METHOD_TEXT_REQUESTS,
     JK_LB_METHOD_TEXT_TRAFFIC,
     JK_LB_METHOD_TEXT_BUSYNESS,
+    NULL
+};
+
+static const char *lb_state_type[] = {
+    "unknown",
+    JK_LB_STATE_TEXT_NA,
+    JK_LB_STATE_TEXT_OK,
+    JK_LB_STATE_TEXT_RECOVER,
+    JK_LB_STATE_TEXT_BUSY,
+    JK_LB_STATE_TEXT_ERROR,
+    NULL
+};
+
+static const char *lb_activation_type[] = {
+    "unknown",
+    JK_LB_ACTIVATION_TEXT_ACTIVE,
+    JK_LB_ACTIVATION_TEXT_DISABLED,
+    JK_LB_ACTIVATION_TEXT_STOPPED,
     NULL
 };
 

Modified: tomcat/connectors/trunk/jk/native/common/jk_shm.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_shm.h?rev=437478&r1=437477&r2=437478&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_shm.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_shm.h Sun Aug 27 16:59:37 2006
@@ -74,18 +74,16 @@
     char    redirect[JK_SHM_STR_SIZ+1];
     /* worker distance */
     volatile int distance;
-    /* current status of the worker */
-    volatile int is_disabled;
-    volatile int is_stopped;
-    volatile int is_busy;
+    /* current activation state (config) of the worker */
+    volatile int activation;
+    /* current error state (runtime) of the worker */
+    volatile int state;
     /* Current lb factor */
     volatile int lb_factor;
     /* Current lb reciprocal factor */
     volatile jk_uint64_t lb_mult;
     /* Current lb value  */
     volatile jk_uint64_t lb_value;
-    volatile int in_error_state;
-    volatile int in_recovering;
     int     sticky_session;
     int     sticky_session_force;
     int     recover_wait_time;

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=437478&r1=437477&r2=437478&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Sun Aug 27 16:59:37 
2006
@@ -217,22 +217,6 @@
         return "True";
 }
 
-static const char *status_val_status(int s, int d, int e, int r, int b)
-{
-    if (s)
-        return "Stopped";
-    else if (d)
-        return "Disabled";
-    else if (r)
-        return "Recovering";
-    else if (e)
-        return "Error";
-    else if (b)
-        return "Busy";
-    else
-        return "OK";
-}
-
 static const char *status_val_match(unsigned int match)
 {
     if (match & MATCH_TYPE_STOPPED)
@@ -456,7 +440,7 @@
             jk_puts(s, "</tr>\n</table>\n<br/>\n");
             jk_puts(s, "<table><tr>"
                     
"<th>Name</th><th>Type</th><th>jvmRoute</th><th>Host</th><th>Addr</th>"
-                    
"<th>Stat</th><th>D</th><th>F</th><th>M</th><th>V</th><th>Acc</th><th>Err</th>"
+                    
"<th>Act</th><th>Stat</th><th>D</th><th>F</th><th>M</th><th>V</th><th>Acc</th><th>Err</th>"
                     
"<th>Wr</th><th>Rd</th><th>Busy</th><th>Max</th><th>RR</th><th>Cd</th></tr>\n");
             for (j = 0; j < lb->num_of_workers; j++) {
                 worker_record_t *wr = &(lb->lb_workers[j]);
@@ -473,13 +457,8 @@
                 jk_putv(s, "<td>", jk_dump_hinfo(&a->worker_inet_addr, buf),
                         "</td>", NULL);
                 /* TODO: descriptive status */
-                jk_putv(s, "<td>",
-                        status_val_status(wr->s->is_stopped,
-                                          wr->s->is_disabled,
-                                          wr->s->in_error_state,
-                                          wr->s->in_recovering,
-                                          wr->s->is_busy),
-                        "</td>", NULL);
+                jk_putv(s, "<td>", lb_activation_type[wr->s->activation], 
"</td>", NULL);
+                jk_putv(s, "<td>", lb_state_type[wr->s->state], "</td>", NULL);
                 jk_printf(s, "<td>%d</td>", wr->s->distance);
                 jk_printf(s, "<td>%d</td>", wr->s->lb_factor);
                 jk_printf(s, "<td>%" JK_UINT64_T_FMT "</td>", wr->s->lb_mult);
@@ -530,13 +509,21 @@
                 jk_puts(s, "<tr><td>Cluster Domain:</td><td><input name=\"wc\" 
type=\"text\" ");
                 jk_putv(s, "value=\"", wr->s->domain, NULL);
                 jk_puts(s, "\"/></td></tr>\n");
-                jk_puts(s, "<tr><td>Disabled:</td><td><input name=\"wd\" 
type=\"checkbox\"");
-                if (wr->s->is_disabled)
-                    jk_puts(s, "  checked=\"checked\"");
+                jk_puts(s, "<tr><td>Activation:</td><td></td></tr>\n");
+                jk_puts(s, "<tr><td>&nbsp;&nbsp;Active</td><td><input 
name=\"wa\" type=\"radio\"");
+                jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_ACTIVE);
+                if (wr->s->activation == JK_LB_ACTIVATION_ACTIVE)
+                    jk_puts(s, " checked=\"checked\"");
+                jk_puts(s, "/></td></tr>\n");
+                jk_puts(s, "<tr><td>&nbsp;&nbsp;Disabled</td><td><input 
name=\"wa\" type=\"radio\"");
+                jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_DISABLED);
+                if (wr->s->activation == JK_LB_ACTIVATION_DISABLED)
+                    jk_puts(s, " checked=\"checked\"");
                 jk_puts(s, "/></td></tr>\n");
-                jk_puts(s, "<tr><td>Stopped:</td><td><input name=\"ws\" 
type=\"checkbox\"");
-                if (wr->s->is_stopped)
-                    jk_puts(s, "  checked=\"checked\"");
+                jk_puts(s, "<tr><td>&nbsp;&nbsp;Stopped</td><td><input 
name=\"wa\" type=\"radio\"");
+                jk_printf(s, " value=\"%d\"", JK_LB_ACTIVATION_STOPPED);
+                if (wr->s->activation == JK_LB_ACTIVATION_STOPPED)
+                    jk_puts(s, " checked=\"checked\"");
                 jk_puts(s, "/></td></tr>\n");
                 jk_puts(s, "</table>\n");
                 jk_puts(s, "<br/><input type=\"submit\" value=\"Update 
Worker\"/>\n</form>\n");
@@ -591,7 +578,8 @@
             "<tr><th>Type</th><td>Worker type</td></tr>\n"
             "<tr><th>jvmRoute</th><td>Worker JVM route</td></tr>\n"
             "<tr><th>Addr</th><td>Backend Address info</td></tr>\n"
-            "<tr><th>Stat</th><td>Worker status</td></tr>\n"
+            "<tr><th>Act</th><td>Worker activation configuration</td></tr>\n"
+            "<tr><th>Stat</th><td>Worker error status</td></tr>\n"
             "<tr><th>D</th><td>Worker distance</td></tr>\n"
             "<tr><th>F</th><td>Load Balancer factor</td></tr>\n"
             "<tr><th>M</th><td>Load Balancer multiplicity</td></tr>\n"
@@ -654,18 +642,15 @@
             worker_record_t *wr = &(lb->lb_workers[j]);
             ajp_worker_t *a = (ajp_worker_t *)wr->w->worker_private;
             /* TODO: descriptive status */
-            jk_printf(s, "      <jk:member id=\"%d\" name=\"%s\" type=\"%s\" 
host=\"%s\" port=\"%d\" address=\"%s\" status=\"%s\"",
+            jk_printf(s, "      <jk:member id=\"%d\" name=\"%s\" type=\"%s\" 
host=\"%s\" port=\"%d\" address=\"%s\" activation=\"%s\" state=\"%s\"",
                 j,
                 wr->s->name,
                 status_worker_type(wr->w->type),
                 a->host,
                 a->port,
                 jk_dump_hinfo(&a->worker_inet_addr, buf),
-                status_val_status(wr->s->is_stopped,
-                                  wr->s->is_disabled,
-                                  wr->s->in_error_state,
-                                  wr->s->in_recovering,
-                                  wr->s->is_busy) );
+                lb_activation_type[wr->s->activation],
+                lb_state_type[wr->s->state]);
 
             jk_printf(s, " distance=\"%d\"", wr->s->distance);
             jk_printf(s, " lbfactor=\"%d\"", wr->s->lb_factor);
@@ -698,7 +683,6 @@
                           const char *dworker, jk_logger_t *l)
 {
     int i;
-    int j;
     char buf[1024];
     const char *b;
     lb_worker_t *lb;
@@ -753,21 +737,17 @@
             strncpy(wr->s->domain, b, JK_SHM_STR_SIZ);
         else
             memset(wr->s->domain, 0, JK_SHM_STR_SIZ);
-        i = status_bool("wd", s->query_string);
-        j = status_bool("ws", s->query_string);
-        if (wr->s->is_disabled!=i || wr->s->is_stopped!=j) {
-            wr->s->is_disabled = i;
-            wr->s->is_stopped = j;
+        i = status_int("wa", s->query_string, wr->s->activation);
+        if (wr->s->activation != i) {
+            wr->s->activation = i;
             reset_lb_values(lb, l);
-            if (i+j==0) {
-                jk_log(l, JK_LOG_INFO,
-                       "worker %s restarted in status worker"
-                       JK_UINT64_T_FMT,
-                       wr->s->name);
-            }
+            jk_log(l, JK_LOG_INFO,
+                   "worker '%s' activation changed to '%s' via status worker",
+                   wr->s->name,
+                   lb_activation_type[wr->s->activation]);
         }
         i = status_int("wx", s->query_string, wr->s->distance);
-        if (wr->s->distance!=i) {
+        if (wr->s->distance != i) {
             wr->s->distance = i;
             reset_lb_values(lb, l);
         }
@@ -799,9 +779,7 @@
             wr->s->max_busy         = 0;
             wr->s->readed           = 0;
             wr->s->transferred      = 0;
-            wr->s->is_busy          = JK_FALSE;
-            wr->s->in_error_state   = JK_FALSE;
-            wr->s->in_recovering    = JK_FALSE;
+            wr->s->state            = JK_LB_STATE_NA;
         }
     }
 }
@@ -914,7 +892,7 @@
             jk_putv(s, "<dl><dt>Server Version:</dt><dd>",
                     s->server_software, "</dd>\n", NULL);
             jk_putv(s, "<dt>JK Version:</dt><dd>",
-                        JK_VERSTRING, "\n</dd></dl>\n", NULL);
+                    JK_VERSTRING, "\n</dd></dl>\n", NULL);
         }
         if ( cmd == 0 ) {
             jk_putv(s, "[<a href=\"", s->req_uri, NULL);

Modified: tomcat/connectors/trunk/jk/native/common/jk_util.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.c?rev=437478&r1=437477&r2=437478&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_util.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_util.c Sun Aug 27 16:59:37 2006
@@ -74,6 +74,7 @@
 #define LOCK_OF_WORKER              ("lock")
 #define IS_WORKER_DISABLED          ("disabled")
 #define IS_WORKER_STOPPED           ("stopped")
+#define ACTIVATION_OF_WORKER        ("activation")
 #define WORKER_RECOVER_TIME         ("recover_time")
 
 
@@ -763,6 +764,32 @@
     return rc;
 }
 
+int jk_get_worker_activation(jk_map_t *m, const char *wname)
+{
+    char buf[1024];
+    const char *v;
+    if (!m || !wname) {
+        return JK_LB_ACTIVATION_ACTIVE;
+    }
+
+    MAKE_WORKER_PARAM(ACTIVATION_OF_WORKER);
+    v = jk_map_get_string(m, buf, NULL);
+    if (v) {
+        if (*v == 'a' || *v == 'A')
+            return JK_LB_ACTIVATION_ACTIVE;
+        else if (*v == 's' || *v == 'S')
+            return JK_LB_ACTIVATION_STOPPED;
+        else if (*v == 'd' || *v == 'D')
+            return JK_LB_ACTIVATION_DISABLED;
+    }
+    else if (jk_get_is_worker_stopped(m, wname))
+        return JK_LB_ACTIVATION_STOPPED;
+    else if (jk_get_is_worker_disabled(m, wname))
+        return JK_LB_ACTIVATION_DISABLED;
+    else
+        return JK_LB_ACTIVATION_ACTIVE;
+}
+
 void jk_set_log_format(const char *logformat)
 {
     jk_log_fmt = (logformat) ? logformat : JK_TIME_FORMAT;
@@ -1121,6 +1148,7 @@
     METHOD_OF_WORKER,
     IS_WORKER_DISABLED,
     IS_WORKER_STOPPED,
+    ACTIVATION_OF_WORKER,
     WORKER_RECOVER_TIME,
     SECRET_OF_WORKER,
     RETRIES_OF_WORKER,
@@ -1139,6 +1167,8 @@
     LIBPATH_OF_WORKER,
     CMD_LINE_OF_WORKER,
     NATIVE_LIB_OF_WORKER,
+    IS_WORKER_DISABLED,
+    IS_WORKER_STOPPED,
     NULL
 };
 

Modified: tomcat/connectors/trunk/jk/native/common/jk_util.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.h?rev=437478&r1=437477&r2=437478&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_util.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_util.h Sun Aug 27 16:59:37 2006
@@ -95,6 +95,8 @@
 
 int jk_get_is_worker_stopped(jk_map_t *m, const char *wname);
 
+int jk_get_worker_activation(jk_map_t *m, const char *wname);
+
 void jk_set_log_format(const char *logformat);
 
 int jk_get_worker_list(jk_map_t *m, char ***list, unsigned *num_of_wokers);



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

Reply via email to