mturk       2005/06/30 01:20:56

  Modified:    jni/native/include tcn.h
               jni/native/os/win32 ntpipe.c
               jni/native/src network.c sslnetwork.c
  Log:
  Add abstracts for getting and setting the socket options.
  We need that becasue nt pipes or unix sockets can not
  use the apr functions directly, and we have some extra params.
  In general, this is still function trough pointer call.
  
  Revision  Changes    Path
  1.28      +3 -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.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- tcn.h     30 Jun 2005 07:10:29 -0000      1.27
  +++ tcn.h     30 Jun 2005 08:20:56 -0000      1.28
  @@ -127,6 +127,8 @@
       apr_status_t (*cleanup)(void *);
       apr_status_t (APR_THREAD_FUNC *tmset)(apr_socket_t *, 
apr_interval_time_t);
       apr_status_t (APR_THREAD_FUNC *tmget)(apr_socket_t *, 
apr_interval_time_t *);
  +    apr_status_t (APR_THREAD_FUNC *set)(apr_socket_t *, apr_int32_t, 
apr_int32_t);
  +    apr_status_t (APR_THREAD_FUNC *get)(apr_socket_t *, apr_int32_t, 
apr_int32_t *);
       apr_status_t (APR_THREAD_FUNC *send) (apr_socket_t *, const char *, 
apr_size_t *);
       apr_status_t (APR_THREAD_FUNC *sendv)(apr_socket_t *, const struct iovec 
*, apr_int32_t, apr_size_t *);
       apr_status_t (APR_THREAD_FUNC *recv) (apr_socket_t *, char *, apr_size_t 
*);
  
  
  
  1.2       +49 -3     jakarta-tomcat-connectors/jni/native/os/win32/ntpipe.c
  
  Index: ntpipe.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/os/win32/ntpipe.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ntpipe.c  24 Jun 2005 08:21:29 -0000      1.1
  +++ ntpipe.c  30 Jun 2005 08:20:56 -0000      1.2
  @@ -69,6 +69,8 @@
       DWORD          timeout;
       int            mode;                 /* Client or server mode */
       int            nmax;
  +    DWORD          sndbuf;
  +    DWORD          rcvbuf;
       char           name[MAX_PATH+1];
       SECURITY_ATTRIBUTES sa;
   } tcn_ntp_conn_t;
  @@ -105,6 +107,44 @@
       return APR_SUCCESS;
   }
   
  +static APR_INLINE apr_status_t APR_THREAD_FUNC
  +ntp_socket_opt_set(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)
  +{
  +    tcn_ntp_conn_t *con = (tcn_ntp_conn_t *)sock;
  +    apr_status_t rv = APR_SUCCESS;
  +    switch (opt) {
  +        case APR_SO_SNDBUF:
  +            con->sndbuf = (DWORD)on;
  +        break;
  +        case APR_SO_RCVBUF:
  +            con->rcvbuf = (DWORD)on;
  +        break;
  +        default:
  +            rv = APR_EINVAL;
  +        break; 
  +    }
  +    return rv;
  +}
  +
  +static APR_INLINE apr_status_t APR_THREAD_FUNC
  +ntp_socket_opt_get(apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on)
  +{
  +    tcn_ntp_conn_t *con = (tcn_ntp_conn_t *)sock;
  +    apr_status_t rv = APR_SUCCESS;
  +    switch (opt) {
  +        case APR_SO_SNDBUF:
  +            *on = con->sndbuf;
  +        break;
  +        case APR_SO_RCVBUF:
  +            *on = con->rcvbuf;
  +        break;
  +        default:
  +            rv = APR_EINVAL;
  +        break; 
  +    }
  +    return rv;
  +}
  +
   static apr_status_t ntp_cleanup(void *data)
   {
       tcn_ntp_conn_t *con = (tcn_ntp_conn_t *)data;
  @@ -264,6 +304,8 @@
       con->mode = TCN_NTP_UNKNOWN;
       con->nmax = PIPE_UNLIMITED_INSTANCES;
       con->timeout = DEFTIMEOUT;
  +    con->sndbuf  = DEFSIZE;
  +    con->rcvbuf  = DEFSIZE;
       if (J2S(name)) {
           strncpy(con->name, J2S(name), MAX_PATH);
           con->name[MAX_PATH] = '\0';
  @@ -288,6 +330,8 @@
       s->shutdown = ntp_socket_shutdown;
       s->tmget    = ntp_socket_timeout_get;
       s->tmset    = ntp_socket_timeout_set;
  +    s->get      = ntp_socket_opt_get;
  +    s->set      = ntp_socket_opt_set;
       s->close    = ntp_socket_close;
       s->opaque   = con;
       apr_pool_cleanup_register(p, (const void *)s,
  @@ -358,8 +402,8 @@
                                         PIPE_ACCESS_DUPLEX | 
FILE_FLAG_OVERLAPPED,
                                         PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | 
PIPE_WAIT,
                                         con->nmax,
  -                                      DEFSIZE,
  -                                      DEFSIZE,
  +                                      con->sndbuf,
  +                                      con->rcvbuf,
                                         con->timeout,
                                         &c->sa);
           if (con->h_pipe == INVALID_HANDLE_VALUE) {
  @@ -399,6 +443,8 @@
           a->shutdown = ntp_socket_shutdown;
           a->tmget    = ntp_socket_timeout_get;
           a->tmset    = ntp_socket_timeout_set;
  +        a->get      = ntp_socket_opt_get;
  +        a->set      = ntp_socket_opt_set;
           a->close    = ntp_socket_close;
           a->opaque   = con;
           apr_pool_cleanup_register(p, (const void *)a,
  
  
  
  1.41      +25 -5     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.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- network.c 24 Jun 2005 08:21:29 -0000      1.40
  +++ network.c 30 Jun 2005 08:20:56 -0000      1.41
  @@ -221,6 +221,18 @@
       return apr_socket_timeout_get(sock, t);
   }
   
  +static APR_INLINE apr_status_t APR_THREAD_FUNC
  +APR_socket_opt_set(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)
  +{
  +    return apr_socket_opt_set(sock, opt, on);
  +}
  +
  +static APR_INLINE apr_status_t APR_THREAD_FUNC
  +APR_socket_opt_get(apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on)
  +{
  +    return apr_socket_opt_get(sock, opt, on);
  +}
  +
   #else
   #define APR_socket_send         apr_socket_send
   #define APR_socket_recv         apr_socket_recv
  @@ -228,6 +240,8 @@
   #define APR_socket_shutdown     apr_socket_shutdown
   #define APR_socket_timeout_set  apr_socket_timeout_set
   #define APR_socket_timeout_get  apr_socket_timeout_get
  +#define APR_socket_opt_set      apr_socket_opt_set
  +#define APR_socket_opt_get      apr_socket_opt_get
   #endif
   
   TCN_IMPLEMENT_CALL(jlong, Socket, create)(TCN_STDARGS, jint family,
  @@ -262,6 +276,8 @@
           a->shutdown = APR_socket_shutdown;
           a->tmget    = APR_socket_timeout_get;
           a->tmset    = APR_socket_timeout_set;
  +        a->get      = APR_socket_opt_get;
  +        a->set      = APR_socket_opt_set;
           a->close    = NULL;
       }
       a->opaque   = s;
  @@ -402,6 +418,8 @@
           a->shutdown = APR_socket_shutdown;
           a->tmget    = APR_socket_timeout_get;
           a->tmset    = APR_socket_timeout_set;
  +        a->get      = APR_socket_opt_get;
  +        a->set      = APR_socket_opt_set;
           a->close    = NULL;
           a->opaque   = n;
           apr_pool_cleanup_register(p, (const void *)a,
  @@ -446,6 +464,8 @@
           a->shutdown = APR_socket_shutdown;
           a->tmget    = APR_socket_timeout_get;
           a->tmset    = APR_socket_timeout_set;
  +        a->get      = APR_socket_opt_get;
  +        a->set      = APR_socket_opt_set;
           a->close    = NULL;
           a->opaque   = n;
           apr_pool_cleanup_register(p, (const void *)a,
  @@ -867,7 +887,7 @@
       if (!s->sock)
           return APR_EINVAL;
       else
  -        return (jint)apr_socket_opt_set(s->sock, (apr_int32_t)opt, 
(apr_int32_t)on);
  +        return (jint)(*s->set)(s->opaque, (apr_int32_t)opt, (apr_int32_t)on);
   }
   
   TCN_IMPLEMENT_CALL(jint, Socket, optGet)(TCN_STDARGS, jlong sock,
  @@ -881,8 +901,8 @@
       if (s->sock)
           tcn_ThrowAPRException(e, APR_EINVAL);
       else {
  -        TCN_THROW_IF_ERR(apr_socket_opt_get(s->sock, (apr_int32_t)opt,
  -                                            &on), on);
  +        TCN_THROW_IF_ERR((*s->get)(s->opaque, (apr_int32_t)opt,
  +                                   &on), on);
       }
   cleanup:
       return (jint)on;
  @@ -907,7 +927,7 @@
       UNREFERENCED(o);
       TCN_ASSERT(sock != 0);
       TCN_ASSERT(s->opaque != NULL);
  -    TCN_THROW_IF_ERR((*s->tmget)(s->sock, &timeout), timeout);
  +    TCN_THROW_IF_ERR((*s->tmget)(s->opaque, &timeout), timeout);
   cleanup:
       return (jlong)timeout;
   }
  
  
  
  1.20      +17 -1     jakarta-tomcat-connectors/jni/native/src/sslnetwork.c
  
  Index: sslnetwork.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/sslnetwork.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- sslnetwork.c      24 Jun 2005 08:21:29 -0000      1.19
  +++ sslnetwork.c      30 Jun 2005 08:20:56 -0000      1.20
  @@ -219,6 +219,20 @@
       return apr_socket_timeout_get(con->sock, t);
   }
   
  +static APR_INLINE apr_status_t APR_THREAD_FUNC
  +ssl_socket_opt_set(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)
  +{
  +    tcn_ssl_conn_t *con = (tcn_ssl_conn_t *)sock;
  +    return apr_socket_opt_set(con->sock, opt, on);
  +}
  +
  +static APR_INLINE apr_status_t APR_THREAD_FUNC
  +ssl_socket_opt_get(apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on)
  +{
  +    tcn_ssl_conn_t *con = (tcn_ssl_conn_t *)sock;
  +    return apr_socket_opt_get(con->sock, opt, on);
  +}
  +
   static apr_status_t APR_THREAD_FUNC
   ssl_socket_shutdown(apr_socket_t *sock, apr_shutdown_how_e how)
   {
  @@ -469,6 +483,8 @@
       s->shutdown = ssl_socket_shutdown;
       s->tmget    = ssl_socket_timeout_get;
       s->tmset    = ssl_socket_timeout_set;
  +    s->get      = ssl_socket_opt_get;
  +    s->set      = ssl_socket_opt_set;
       s->close    = ssl_socket_close;
       s->opaque   = con;
   
  
  
  

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

Reply via email to