costin      2002/06/11 15:51:30

  Modified:    jk/native2/jni jk_jni_aprImpl.c
  Log:
  Remove the moved code.
  
  Few cleanups, start using 2 macros from conversion jlong to/from pointer.
  
  Revision  Changes    Path
  1.37      +30 -191   jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c
  
  Index: jk_jni_aprImpl.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- jk_jni_aprImpl.c  11 Jun 2002 02:51:18 -0000      1.36
  +++ jk_jni_aprImpl.c  11 Jun 2002 22:51:29 -0000      1.37
  @@ -79,27 +79,12 @@
   #include "jk_pool.h"
   #include "jk_logger.h"
   
  -#ifndef WIN32
  -#include <unistd.h>
  -#include <pwd.h>
  -#endif
  -
   #if APR_HAVE_SYS_TYPES_H
   #include <sys/types.h>
   #endif
   
  -#if APR_HAS_SHARED_MEMORY
  -#include "apr_shm.h"
  -#endif
  -
  -#ifdef HAVE_SIGNAL
  -#include "signal.h"
  -#endif
  -
  -/* jniAprPool is the 'master pool' for standalone use ( i.e. not inprocess )
  -   All resources are allocated in this pool
  -*/
  -static apr_pool_t *jniAprPool=NULL;
  +#define P2J(jk_pointer) ((jlong)(long)(void *)jk_pointer)
  +#define J2P(p, jktype) ((jktype)(void *)(long)p)
   
   /** Access to the jk workerEnv. This field and jk_env_globalEnv are used
       to interact with the jk components 
  @@ -122,7 +107,13 @@
   }
   
   /* -------------------- Apr initialization and pools -------------------- */
  -     
  +
  +/** Initialize APR and jk, for standalone use. If we use in-process mode,
  +    i.e. an application using jk to launch an in-process JVM - this function
  +    will not do anything, since the setup is already done.
  +
  +    The code is identical with what mod_jk is doing.
  +*/
   JNIEXPORT jint JNICALL 
   Java_org_apache_jk_apr_AprImpl_initialize(JNIEnv *jniEnv, jobject _jthis)
   {
  @@ -130,6 +121,7 @@
   
       /* For in-process the env is initialized already */
       if( jk_env_globalEnv == NULL ) {
  +        apr_pool_t *jniAprPool=NULL;
           jk_pool_t *globalPool;
   
           apr_initialize(); 
  @@ -182,6 +174,8 @@
   JNIEXPORT jint JNICALL 
   Java_org_apache_jk_apr_AprImpl_terminate(JNIEnv *jniEnv, jobject _jthis)
   {
  +    apr_pool_t *jniAprPool=jk_env_globalEnv->getAprPool(jk_env_globalEnv);
  +
       if ( jniAprPool!=NULL ) {
           apr_pool_destroy(jniAprPool);
           jniAprPool = NULL;
  @@ -190,144 +184,6 @@
       return 0;
   }
   
  -/* -------------------- Signals -------------------- */
  -/* XXX Move it to jk_signal.c */
  -
  -#ifdef HAVE_SIGNALS
  -static struct sigaction jkAction;
  -
  -/* We use a jni channel to send the notification to java
  - */
  -static jk_channel_t *jniChannel;
  -
  -/* XXX we should sync or use multiple endpoints if multiple signals
  -   can be concurent
  -*/
  -static jk_endpoint_t *signalEndpoint;
  -
  -static void jk2_SigAction(int sig) {
  -    jk_env_t *env;
  -    
  -    /* Make a callback using the jni channel */
  -    fprintf(stderr, "Signal %d\n", sig );
  -
  -    if( jk_env_globalEnv == NULL ) {
  -        return;
  -    }
  -
  -    env=jk_env_globalEnv->getEnv( jk_env_globalEnv );
  -
  -    if( jniChannel==NULL ) {
  -        jniChannel=env->getByName( env, "channel.jni:jni" );
  -        fprintf(stderr, "Got jniChannel %#lx\n", jniChannel );
  -    }
  -    if( jniChannel==NULL ) {
  -        return;
  -    }
  -    if( signalEndpoint == NULL ) {
  -        jk_bean_t *component=env->createBean2( env, NULL, "endpoint", NULL );
  -        if( component == NULL ) {
  -            fprintf(stderr, "Can't create endpoint\n" );
  -            return;
  -        }
  -        component->init( env, component );
  -        fprintf(stderr, "Create endpoint %#lx\n", component->object );
  -        signalEndpoint=component->object;
  -    }
  -
  -    /* Channel:jni should be initialized by the caller */
  -
  -    /* XXX make the callback */
  -    
  -    jk_env_globalEnv->releaseEnv( jk_env_globalEnv, env );
  -
  -}
  -
  -
  -/* XXX We need to: - preserve the old signal ( or get them ) - either
  -     implement "waitSignal" or use invocation in jk2_SigAction
  -
  -     Probably waitSignal() is better ( we can have a thread that waits )
  - */
  -
  -JNIEXPORT jint JNICALL 
  -Java_org_apache_jk_apr_AprImpl_signal(JNIEnv *jniEnv, jobject _jthis, jint signalNr 
)
  -{
  -    memset(& jkAction, 0, sizeof(jkAction));
  -    jkAction.sa_handler=jk2_SigAction;
  -    sigaction((int)signalNr, &jkAction, (void *) NULL);
  -    return 0;
  -}
  -
  -JNIEXPORT jint JNICALL 
  -Java_org_apache_jk_apr_AprImpl_sendSignal(JNIEnv *jniEnv, jobject _jthis, jint 
target ,
  -                                          jint signo)
  -{
  -    return kill( (pid_t)target, (int)signo );
  -}
  -
  -#else /* ! HAVE_SIGNALS */
  -
  -JNIEXPORT jint JNICALL 
  -Java_org_apache_jk_apr_AprImpl_signal(JNIEnv *jniEnv, jobject _jthis, jint signalNr 
)
  -{
  -    return 0;
  -}
  -
  -JNIEXPORT void JNICALL 
  -Java_org_apache_jk_apr_AprImpl_sendSignal(JNIEnv *jniEnv, jobject _jthis, jint 
signo,
  -                                          jint target)
  -{
  -
  -}
  -
  -#endif
  -
  -
  -/* -------------------- User related functions -------------------- */
  -/* XXX move it to jk_user.c */
  -
  -JNIEXPORT jint JNICALL 
  -Java_org_apache_jk_apr_AprImpl_getPid(JNIEnv *jniEnv, jobject _jthis)
  -{
  -  return (jint) getpid();
  -}
  -
  -
  -JNIEXPORT jint JNICALL 
  -Java_org_apache_jk_apr_AprImpl_setUser(JNIEnv *jniEnv, jobject _jthis,
  -                                       jstring userJ, jstring groupJ)
  -{
  -    int rc=0;
  -#ifndef WIN32
  -    const char *user;
  -    char *group;
  -    struct passwd *passwd;
  -    int uid;
  -    int gid;
  -
  -    user = (*jniEnv)->GetStringUTFChars(jniEnv, userJ, 0);
  -    
  -    passwd = getpwnam(user);
  -
  -    (*jniEnv)->ReleaseStringUTFChars(jniEnv, userJ, user);
  -
  -    if (passwd == NULL ) {
  -        return -1;
  -    }
  -    uid = passwd->pw_uid;
  -    gid = passwd->pw_gid;
  -
  -    if (uid < 0 || gid < 0 ) 
  -        return -2;
  -
  -    rc = setuid(uid);
  -
  -#endif
  -
  -    return (jint)rc;
  -}
  -
   /* -------------------- Access jk components -------------------- */
   
   /*
  @@ -345,12 +201,8 @@
       if( jk_env_globalEnv == NULL )
           return 0;
   
  -    /* fprintf(stderr, "Get env %#lx\n", jk_env_globalEnv); */
       env=jk_env_globalEnv->getEnv( jk_env_globalEnv );
  -    /*     if( env!=NULL) */
  -    /*         env->l->jkLog(env, env->l, JK_LOG_INFO,  */
  -    /*                       "aprImpl.getJkEnv()  %#lx\n", env); */
  -    return (jlong)(long)(void *)env;
  +    return P2J(env);
   }
   
   
  @@ -361,7 +213,7 @@
   Java_org_apache_jk_apr_AprImpl_releaseJkEnv
     (JNIEnv *jniEnv, jobject o, jlong xEnv )
   {
  -    jk_env_t *env=(jk_env_t *)(void *)(long)xEnv;
  +    jk_env_t *env=J2P( xEnv, jk_env_t *);
   
       if( jk_env_globalEnv != NULL ) 
           jk_env_globalEnv->releaseEnv( jk_env_globalEnv, env );
  @@ -372,14 +224,16 @@
   }
   
   /*
  -  Recycle the jk endpoint
  -*/
  + *  Recycle the jk endpoint. Will reset the tmp pool and clean error
  + *  state.
  + */
   JNIEXPORT void JNICALL 
   Java_org_apache_jk_apr_AprImpl_jkRecycle
     (JNIEnv *jniEnv, jobject o, jlong xEnv, jlong endpointP )
   {
  -    jk_env_t *env=(jk_env_t *)(void *)(long)xEnv;
  -    jk_bean_t *compCtx=(jk_bean_t *)(void *)(long)endpointP;
  +    jk_env_t *env= J2P( xEnv, jk_env_t *);
  +    jk_bean_t *compCtx= J2P( endpointP, jk_bean_t *);
  +    
       jk_endpoint_t *ep = (compCtx==NULL ) ? NULL : compCtx->object;
   
       if( env == NULL )
  @@ -390,32 +244,26 @@
       }
   
       env->recycleEnv( env );
  -
  -    /*     env->l->jkLog(env, env->l, JK_LOG_INFO,  */
  -    /*                   "aprImpl.releaseJkEnv()  %#lx\n", env); */
   }
   
   
  -
   /*
  -  Find a jk component. 
  -*/
  + *  Find a jk component. 
  + */
   JNIEXPORT jlong JNICALL 
   Java_org_apache_jk_apr_AprImpl_getJkHandler
     (JNIEnv *jniEnv, jobject o, jlong xEnv, jstring compNameJ)
   {
  -    jk_env_t *env=(jk_env_t *)(void *)(long)xEnv;
  +    jk_env_t *env= J2P(xEnv, jk_env_t *);
  +    
       jk_bean_t *component;
       char *cname=(char *)(*jniEnv)->GetStringUTFChars(jniEnv, compNameJ, 0);
   
       component=env->getBean( env, cname );
       
  -    /*     env->l->jkLog(env, env->l, JK_LOG_INFO,  */
  -    /*                   "aprImpl.getJkHandler()  %#lx %s\n", component, cname ); */
  -    
       (*jniEnv)->ReleaseStringUTFChars(jniEnv, compNameJ, cname);
   
  -    return (jlong)(long)(void *)component;
  +    return P2J(component);
   }
   
   /*
  @@ -425,15 +273,17 @@
   Java_org_apache_jk_apr_AprImpl_createJkHandler
     (JNIEnv *jniEnv, jobject o, jlong xEnv, jstring compNameJ)
   {
  -    jk_env_t *env=(jk_env_t *)(void *)(long)xEnv;
  +    jk_env_t *env= J2P(xEnv, jk_env_t *);
  +
       jk_bean_t *component;
  +
       char *cname=(char *)(*jniEnv)->GetStringUTFChars(jniEnv, compNameJ, 0);
   
       component=env->createBean( env, NULL, cname );
       
       (*jniEnv)->ReleaseStringUTFChars(jniEnv, compNameJ, cname);
   
  -    return (jlong)(long)(void *)component;
  +    return P2J(component);
   }
   
   /*
  @@ -444,6 +294,7 @@
   {
       jk_env_t *env=(jk_env_t *)(void *)(long)xEnv;
       jk_bean_t *component=(jk_bean_t *)(void *)(long)componentP;
  +    
       char *name=(char *)(*jniEnv)->GetStringUTFChars(jniEnv, nameJ, 0);
       char *value=(char *)(*jniEnv)->GetStringUTFChars(jniEnv, valueJ, 0);
       int rc=JK_OK;
  @@ -702,18 +553,6 @@
           "jkRecycle", "(JJ)V",
           Java_org_apache_jk_apr_AprImpl_jkRecycle
       },
  -    {
  -        "setUser", "(Ljava/lang/String;Ljava/lang/String;)I",
  -        Java_org_apache_jk_apr_AprImpl_setUser
  -    },
  -    {
  -        "signal", "(I)I",
  -        Java_org_apache_jk_apr_AprImpl_signal
  -    },
  -    {
  -        "sendSignal", "(II)V",
  -        Java_org_apache_jk_apr_AprImpl_sendSignal
  -    }
   };
   
   /*
  
  
  

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

Reply via email to