costin      02/05/23 21:26:00

  Modified:    jk/native2/common jk_env.c jk_shm.c
               jk/native2/include jk_env.h
  Log:
  Moved the common code in jk_env. Many components need an aprPool, and assuming
  that jk_pool wraps an aprPool is not the cleanest solution.
  
  Revision  Changes    Path
  1.28      +29 -2     jakarta-tomcat-connectors/jk/native2/common/jk_env.c
  
  Index: jk_env.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_env.c,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- jk_env.c  23 May 2002 14:54:07 -0000      1.27
  +++ jk_env.c  24 May 2002 04:26:00 -0000      1.28
  @@ -55,10 +55,12 @@
    *                                                                           *
    * ========================================================================= */
    
  +#include "jk_global.h"
   #include "jk_env.h"
   #include "jk_objCache.h"
   
   jk_env_t *jk_env_globalEnv;
  +void *jkGlobalAprPool;
   
   /* Private methods 
   */
  @@ -70,6 +72,29 @@
   
   /* -------------------- Env management -------------------- */
   
  +static void JK_METHOD *jk2_env_getAprPool( jk_env_t *env ) {
  +#ifdef HAS_APR
  +    /* We don't want to have to recreate the scoreboard after
  +     * restarts, so we'll create a global pool and never clean it.
  +     */
  +    if( jkGlobalAprPool==NULL ) {
  +        int rc;
  +        
  +        /* Make sure apr is initialized */
  +        apr_initialize(); 
  +        rc = apr_pool_create(( apr_pool_t **)&jkGlobalAprPool, NULL);
  +        if (rc != APR_SUCCESS || jkGlobalAprPool==NULL ) {
  +            env->l->jkLog(env, env->l, JK_LOG_ERROR, 
  +                          "Unable to create global apr pool\n");
  +            return NULL;
  +        }
  +    }
  +    return jkGlobalAprPool;
  +#else
  +    return NULL;
  +#endif
  +}
  +
   /** Public method, creates/get the global env
    */
   jk_env_t* JK_METHOD jk2_env_getEnv( char *id, jk_pool_t *pool ) {
  @@ -109,7 +134,8 @@
           env->releaseEnv= parentEnv->releaseEnv; 
           env->jkClearException=parentEnv->jkClearException;
           env->jkException=parentEnv->jkException;
  -        
  +        env->getAprPool=parentEnv->getAprPool;
  +    
           env->_registry=parentEnv->_registry;
           env->_objects=parentEnv->_objects;
           env->l=parentEnv->l;
  @@ -393,7 +419,7 @@
                         "env.registerFactory(): NullPointerException\n");
           return;
       }
  -    env->_registry->put( env, env->_registry, type, fact, NULL );
  +    env->_registry->put( env, env->_registry, (char *)type, (void *)fact, NULL );
   }
   
   /* -------------------- Exceptions -------------------- */
  @@ -457,6 +483,7 @@
       env->debug = 0;
       env->jkClearException=jk_env_jkClearException;
       env->jkException=jk_env_jkException;
  +    env->getAprPool=jk2_env_getAprPool;
   
       env->id=0;
       
  
  
  
  1.19      +11 -14    jakarta-tomcat-connectors/jk/native2/common/jk_shm.c
  
  Index: jk_shm.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_shm.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- jk_shm.c  19 May 2002 17:37:08 -0000      1.18
  +++ jk_shm.c  24 May 2002 04:26:00 -0000      1.19
  @@ -81,7 +81,6 @@
   #include "apr_file_io.h"
   #include "apr_file_info.h"
   #include "apr_general.h"
  -static apr_pool_t *globalShmPool;
   
   #elif defined(HAVE_MMAP) && !defined(WIN32)
   
  @@ -117,20 +116,13 @@
       apr_file_t *file;
       apr_finfo_t finfo;
       apr_mmap_t *aprMmap;
  +    apr_pool_t *globalShmPool;
  +
  +    globalShmPool= (apr_pool_t *)env->getAprPool( env );
  +
  +    if( globalShmPool==NULL )
  +        return JK_FALSE;
   
  -    /* We don't want to have to recreate the scoreboard after
  -     * restarts, so we'll create a global pool and never clean it.
  -     */
  -    if( globalShmPool==NULL ) {
  -        /* Make sure apr is initialized */
  -        apr_initialize(); 
  -        rc = apr_pool_create(&globalShmPool, NULL);
  -        if (rc != APR_SUCCESS || globalShmPool==NULL ) {
  -            env->l->jkLog(env, env->l, JK_LOG_ERROR, 
  -                          "Unable to create global pool for jk_shm\n");
  -            return rc;
  -        }
  -    }
   
       /* First make sure the file exists and is big enough
        */
  @@ -331,6 +323,11 @@
   
       if( shm->size == 0  ) {
           shm->size = shm->slotSize * shm->slotMaxCount;
  +    }
  +
  +    if( shm->mbean->debug > 0 ) {
  +        env->l->jkLog(env, env->l, JK_LOG_INFO, "shm.init(): file=%s size=%d\n",
  +                      shm->fname, shm->size);
       }
   
       if( shm->size <= 0 ) {
  
  
  
  1.16      +5 -2      jakarta-tomcat-connectors/jk/native2/include/jk_env.h
  
  Index: jk_env.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_env.h,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- jk_env.h  8 May 2002 23:47:27 -0000       1.15
  +++ jk_env.h  24 May 2002 04:26:00 -0000      1.16
  @@ -218,7 +218,10 @@
        */
       void (JK_METHOD *registerFactory)( jk_env_t *env, const char *type,
                                          jk_env_objectFactory_t factory);
  -    
  +
  +    /** If APR is used, return a global pool
  +     */
  +    void *(JK_METHOD *getAprPool)(jk_env_t *env );
       
       /* private */
       struct jk_map *_registry;
  @@ -231,7 +234,7 @@
   
   void JK_METHOD jk2_registry_init(jk_env_t *env);
   
  -
  +    
   #ifdef __cplusplus
   }
   #endif /* __cplusplus */
  
  
  

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

Reply via email to