Author: rjung
Date: Sun Jan 13 08:18:59 2008
New Revision: 611589

URL: http://svn.apache.org/viewvc?rev=611589&view=rev
Log:
Refactor ajp13/ajp14 factories, move common parts into ajp_factory.

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_ajp13_worker.c
    tomcat/connectors/trunk/jk/native/common/jk_ajp14_worker.c
    tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
    tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h
    tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml

Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp13_worker.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp13_worker.c?rev=611589&r1=611588&r2=611589&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp13_worker.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp13_worker.c Sun Jan 13 
08:18:59 2008
@@ -78,38 +78,17 @@
     ajp_worker_t *aw;
 
     JK_TRACE_ENTER(l);
-    if (name == NULL || w == NULL) {
-        JK_LOG_NULL_PARAMS(l);
-        JK_TRACE_EXIT(l);
+    if (ajp_worker_factory(w, name, l) == JK_FALSE)
         return 0;
-    }
 
-    aw = (ajp_worker_t *) calloc(1, sizeof(ajp_worker_t));
-    if (!aw) {
-        jk_log(l, JK_LOG_ERROR,
-               "malloc of private_data failed");
-        JK_TRACE_EXIT(l);
-        return 0;
-    }
-
-    aw->name = name;
+    aw = (*w)->worker_private;
     aw->proto = AJP13_PROTO;
-    aw->login = NULL;
-
-    aw->ep_cache_sz = 0;
-    aw->ep_cache = NULL;
-    aw->connect_retry_attempts = AJP_DEF_RETRY_ATTEMPTS;
-    aw->worker.worker_private = aw;
 
     aw->worker.validate = validate;
     aw->worker.init = init;
     aw->worker.get_endpoint = get_endpoint;
     aw->worker.destroy = destroy;
-    aw->worker.maintain = ajp_maintain;
-
-    aw->logon = NULL;           /* No Logon on AJP13 */
 
-    *w = &aw->worker;
     JK_TRACE_EXIT(l);
     return JK_AJP13_WORKER_TYPE;
 }

Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp14_worker.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp14_worker.c?rev=611589&r1=611588&r2=611589&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp14_worker.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp14_worker.c Sun Jan 13 
08:18:59 2008
@@ -371,31 +371,10 @@
     ajp_worker_t *aw;
 
     JK_TRACE_ENTER(l);
-
-    if (name == NULL || w == NULL) {
-        JK_LOG_NULL_PARAMS(l);
-        JK_TRACE_EXIT(l);
+    if (ajp_worker_factory(w, name, l) == JK_FALSE)
         return 0;
-    }
-
-    aw = (ajp_worker_t *) calloc(1, sizeof(ajp_worker_t));
-    if (!aw) {
-        jk_log(l, JK_LOG_ERROR,
-               "malloc of private data failed");
-       JK_TRACE_EXIT(l);
-       return 0;
-    }
-
-    aw->name = strdup(name);
-
-    if (!aw->name) {
-        free(aw);
-        jk_log(l, JK_LOG_ERROR,
-               "malloc failed for name");
-        JK_TRACE_EXIT(l);
-        return 0;
-    }
 
+    aw = (*w)->worker_private;
     aw->proto = AJP14_PROTO;
 
     aw->login = (jk_login_service_t *)malloc(sizeof(jk_login_service_t));
@@ -413,19 +392,12 @@
         (AJP14_CONTEXT_INFO_NEG | AJP14_PROTO_SUPPORT_AJP14_NEG);
     aw->login->web_server_name = NULL;  /* must be set in init */
 
-    aw->ep_cache_sz = 0;
-    aw->ep_cache = NULL;
-    aw->connect_retry_attempts = AJP_DEF_RETRY_ATTEMPTS;
-    aw->worker.worker_private = aw;
-
     aw->worker.validate = validate;
     aw->worker.init = init;
     aw->worker.get_endpoint = get_endpoint;
     aw->worker.destroy = destroy;
-    aw->worker.maintain = ajp_maintain;
 
     aw->logon = logon;          /* LogOn Handler for AJP14 */
-    *w = &aw->worker;
 
     JK_TRACE_EXIT(l);
     return JK_AJP14_WORKER_TYPE;

Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?rev=611589&r1=611588&r2=611589&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Sun Jan 13 
08:18:59 2008
@@ -2471,6 +2471,48 @@
     return rc;
 }
 
+int JK_METHOD ajp_worker_factory(jk_worker_t **w,
+                                 const char *name, jk_logger_t *l)
+{
+    ajp_worker_t *aw;
+
+    JK_TRACE_ENTER(l);
+    if (name == NULL || w == NULL) {
+        JK_LOG_NULL_PARAMS(l);
+        JK_TRACE_EXIT(l);
+        return JK_FALSE;
+    }
+
+    aw = (ajp_worker_t *) calloc(1, sizeof(ajp_worker_t));
+    if (!aw) {
+        jk_log(l, JK_LOG_ERROR,
+               "malloc of private_data failed");
+        JK_TRACE_EXIT(l);
+        return JK_FALSE;
+    }
+
+    jk_open_pool(&aw->p,
+                 aw->buf,
+                 sizeof(jk_pool_atom_t) * TINY_POOL_SIZE);
+
+    strncpy(aw->name, name, JK_SHM_STR_SIZ);
+    aw->login = NULL;
+
+    aw->ep_cache_sz = 0;
+    aw->ep_cache = NULL;
+    aw->connect_retry_attempts = AJP_DEF_RETRY_ATTEMPTS;
+    aw->worker.worker_private = aw;
+
+    aw->worker.maintain = ajp_maintain;
+
+    aw->logon = NULL;
+
+    *w = &aw->worker;
+
+    JK_TRACE_EXIT(l);
+    return JK_TRUE;
+}
+
 int ajp_destroy(jk_worker_t **pThis, jk_logger_t *l, int proto)
 {
     JK_TRACE_ENTER(l);
@@ -2500,6 +2542,7 @@
             aw->login = NULL;
         }
 
+        jk_close_pool(&aw->p);
         free(aw);
         JK_TRACE_EXIT(l);
         return JK_TRUE;
@@ -2639,6 +2682,7 @@
             JK_TRACE_EXIT(l);
             return JK_TRUE;
         }
+
         JK_ENTER_CS(&aw->cs, rc);
         if (rc) {
             unsigned int n = 0, cnt = 0;

Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h?rev=611589&r1=611588&r2=611589&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h Sun Jan 13 
08:18:59 2008
@@ -27,6 +27,7 @@
 
 #include "jk_service.h"
 #include "jk_msg_buff.h"
+#include "jk_shm.h"
 #include "jk_mt.h"
 
 #ifdef __cplusplus
@@ -232,9 +233,17 @@
 
 struct ajp_worker
 {
+    jk_worker_t worker;
+
+    char         name[JK_SHM_STR_SIZ+1];
+
+    jk_pool_t p;
+    jk_pool_atom_t buf[TINY_POOL_SIZE];
+
+    JK_CRIT_SEC cs;
+
     struct sockaddr_in worker_inet_addr;    /* Contains host and port */
     unsigned connect_retry_attempts;
-    const char *name;
     const char *host;
     int port;
     /*
@@ -244,7 +253,6 @@
      * 2. Cache size.
      * 3. An array of "open" endpoints.
      */
-    JK_CRIT_SEC cs;
     unsigned int ep_cache_sz;
     unsigned int ep_mincache_sz;
     unsigned int ep_maxcache_sz;
@@ -257,8 +265,6 @@
     /* Weak secret similar with ajp12, used in ajp13 */
     const char *secret;
 
-    jk_worker_t worker;
-
     /*
      * Post physical connect handler.
      * AJP14 will set here its login handler
@@ -355,6 +361,9 @@
 int ajp_init(jk_worker_t *pThis,
              jk_map_t *props,
              jk_worker_env_t *we, jk_logger_t *l, int proto);
+
+int JK_METHOD ajp_worker_factory(jk_worker_t **w,
+                                 const char *name, jk_logger_t *l);
 
 int ajp_destroy(jk_worker_t **pThis, jk_logger_t *l, int proto);
 

Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=611589&r1=611588&r2=611589&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Sun Jan 13 
08:18:59 2008
@@ -44,6 +44,10 @@
   <subsection name="Native">
     <changelog>
       <update>
+        AJP: Refactor factories, move ajp13/ajp14 common parts into
+        ajp_factory. (rjung)
+      </update>
+      <update>
         Status: Only sync shm worker config values of the workers
         for which we changed values. (rjung)
       </update>



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

Reply via email to