mturk       2005/06/09 04:13:40

  Modified:    jni/java/org/apache/tomcat/jni Status.java
               jni/native/include tcn.h
               jni/native/src error.c network.c poll.c
  Log:
  Use user errors for TIMEUP and EAGAIN.
  This way we'll be able to save an extra JNI call on each poll
  or sendfile.
  
  Revision  Changes    Path
  1.7       +4 -1      
jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Status.java
  
  Index: Status.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Status.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Status.java       19 Apr 2005 16:32:11 -0000      1.6
  +++ Status.java       9 Jun 2005 11:13:40 -0000       1.7
  @@ -175,6 +175,9 @@
       public static final int APR_EMISMATCH     = (APR_OS_START_STATUS + 24);
       public static final int APR_EBUSY         = (APR_OS_START_STATUS + 25);
   
  +    public static final int TIMEUP            = (APR_OS_START_USERERR + 1);
  +    public static final int EAGAIN            = (APR_OS_START_USERERR + 2);
  +
       private static native boolean is(int err, int idx);
       /**
        * APR_STATUS_IS Status Value Tests
  
  
  
  1.14      +4 -1      jakarta-tomcat-connectors/jni/native/include/tcn.h
  
  Index: tcn.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/include/tcn.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- tcn.h     8 Jun 2005 07:16:33 -0000       1.13
  +++ tcn.h     9 Jun 2005 11:13:40 -0000       1.14
  @@ -39,6 +39,9 @@
   #define APR_MAX_IOVEC_SIZE 1024
   #endif
   
  +#define TCN_TIMEUP  APR_OS_START_USERERR + 1
  +#define TCN_EAGAIN  APR_OS_START_USERERR + 2
  +
   #define TCN_CLASS_PATH  "org/apache/tomcat/jni/"
   #define TCN_FINFO_CLASS TCN_CLASS_PATH "FileInfo"
   #define TCN_AINFO_CLASS TCN_CLASS_PATH "Sockaddr"
  
  
  
  1.11      +9 -3      jakarta-tomcat-connectors/jni/native/src/error.c
  
  Index: error.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/error.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- error.c   7 Jun 2005 10:08:08 -0000       1.10
  +++ error.c   9 Jun 2005 11:13:40 -0000       1.11
  @@ -173,7 +173,10 @@
           APR_IS(54, APR_STATUS_IS_NOTDETACH);
           APR_IS(55, APR_STATUS_IS_CHILD_DONE);
           APR_IS(56, APR_STATUS_IS_CHILD_NOTDONE);
  -        APR_IS(57, APR_STATUS_IS_TIMEUP);
  +        case 57:
  +            if (APR_STATUS_IS_TIMEUP(err) || err == TCN_TIMEUP)
  +                return JNI_TRUE;
  +        break;
           APR_IS(58, APR_STATUS_IS_INCOMPLETE);
           /* empty slot: +9 */
           /* empty slot: +10 */
  @@ -193,7 +196,10 @@
           APR_IS(74, APR_STATUS_IS_EMISMATCH);
           APR_IS(75, APR_STATUS_IS_EBUSY);
           /* Socket errors */
  -        APR_IS(90, APR_STATUS_IS_EAGAIN);
  +        case 90:
  +            if (APR_STATUS_IS_EAGAIN(err) || err == TCN_EAGAIN)
  +                return JNI_TRUE;
  +        break;
           APR_IS(91, TCN_STATUS_IS_ETIMEDOUT);
           APR_IS(92, APR_STATUS_IS_ECONNABORTED);
           APR_IS(93, APR_STATUS_IS_ECONNRESET);
  
  
  
  1.24      +41 -11    jakarta-tomcat-connectors/jni/native/src/network.c
  
  Index: network.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/network.c,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- network.c 30 May 2005 06:15:52 -0000      1.23
  +++ network.c 9 Jun 2005 11:13:40 -0000       1.24
  @@ -291,8 +291,11 @@
           (*e)->ReleaseByteArrayElements(e, buf, bytes, JNI_ABORT);
       if (ss == APR_SUCCESS)
           return (jint)nbytes;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, sendb)(TCN_STDARGS, jlong sock,
  @@ -311,8 +314,11 @@
   
       if (ss == APR_SUCCESS)
           return (jint)nbytes;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, sendv)(TCN_STDARGS, jlong sock,
  @@ -344,8 +350,11 @@
       }
       if (ss == APR_SUCCESS)
           return (jint)written;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, sendto)(TCN_STDARGS, jlong sock,
  @@ -376,8 +385,11 @@
           (*e)->ReleaseByteArrayElements(e, buf, bytes, JNI_ABORT);
       if (ss == APR_SUCCESS)
           return (jint)nbytes;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, recv)(TCN_STDARGS, jlong sock,
  @@ -397,8 +409,11 @@
                                      nbytes ? 0 : JNI_ABORT);
       if (ss == APR_SUCCESS)
           return (jint)nbytes;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, recvt)(TCN_STDARGS, jlong sock,
  @@ -428,8 +443,11 @@
                                      nbytes ? 0 : JNI_ABORT);
       if (ss == APR_SUCCESS)
           return (jint)nbytes;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, recvb)(TCN_STDARGS, jlong sock,
  @@ -449,8 +467,11 @@
   
       if (ss == APR_SUCCESS)
           return (jint)nbytes;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, recvbt)(TCN_STDARGS, jlong sock,
  @@ -479,8 +500,11 @@
   
       if (ss == APR_SUCCESS)
           return (jint)nbytes;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, recvfrom)(TCN_STDARGS, jlong from,
  @@ -502,8 +526,11 @@
                                      nbytes ? 0 : JNI_ABORT);
       if (ss == APR_SUCCESS)
           return (jint)nbytes;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jint)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, optSet)(TCN_STDARGS, jlong sock,
  @@ -628,8 +655,11 @@
        */
       if (ss == APR_SUCCESS)
           return (jlong)written;
  -    else
  +    else {
  +        if (APR_STATUS_IS_EAGAIN(ss))
  +            ss = TCN_EAGAIN;
           return -(jlong)ss;
  +    }
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, acceptfilter)(TCN_STDARGS,
  
  
  
  1.17      +6 -2      jakarta-tomcat-connectors/jni/native/src/poll.c
  
  Index: poll.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/poll.c,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- poll.c    9 Jun 2005 10:29:43 -0000       1.16
  +++ poll.c    9 Jun 2005 11:13:40 -0000       1.17
  @@ -250,8 +250,12 @@
        p->sp_poll++;
   #endif
       if ((rv = apr_pollset_poll(p->pollset, J2T(timeout), &num, &fd)) != 
APR_SUCCESS) {
  -#ifdef TCN_DO_STATISTICS
           if (APR_STATUS_IS_TIMEUP(rv))
  +            rv = TCN_TIMEUP;
  +        else if (APR_STATUS_IS_EAGAIN(rv))
  +            rv = TCN_EAGAIN;
  +#ifdef TCN_DO_STATISTICS
  +        if (rv == TCN_TIMEUP)
               p->sp_poll_timeout++;
           else
               p->sp_err_poll++;
  
  
  

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

Reply via email to