You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2011/06/14 18:43:19 UTC

svn commit: r1135690 - in /commons/sandbox/runtime/trunk/src/main: java/org/apache/commons/runtime/io/ java/org/apache/commons/runtime/net/ native/include/acr/ native/os/unix/ native/shared/

Author: mturk
Date: Tue Jun 14 16:43:18 2011
New Revision: 1135690

URL: http://svn.apache.org/viewvc?rev=1135690&view=rev
Log:
Rewrite the descriptor base type from int to long which is pointer to native struct

Modified:
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Descriptor.java
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalEndpoint.java
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Poll.java
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/PosixSelector.java
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketDescriptor.java
    commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h
    commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h
    commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/selector.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/usock.c
    commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c
    commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Descriptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Descriptor.java?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Descriptor.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Descriptor.java Tue Jun 14 16:43:18 2011
@@ -20,6 +20,7 @@ import java.io.Closeable;
 import java.io.Flushable;
 import java.io.IOException;
 import java.io.SyncFailedException;
+import org.apache.commons.runtime.util.Utils;
 
 /** Represents the Operating System object descriptor.
  * <p>
@@ -38,18 +39,14 @@ public abstract class Descriptor impleme
 
     /** Operating system descriptor.
      */
-    protected int       fd;
-    /** Descriptor context.
-     */
-    protected Object    ad;
+    protected long     fd;
 
     /**
      * Creates a new object.
      */
     protected  Descriptor()
     {
-        fd = -1;
-        ad = null;
+        fd = 0L;
     }
 
     private static native void init0();
@@ -121,7 +118,7 @@ public abstract class Descriptor impleme
     {
         // true if both int is negative or zero
         // Descriptor is always assured to be above the stderr (#3)
-        if (fd == -1 || fd == 0)
+        if (fd == 0L)
             return false;
         else
             return true;
@@ -134,7 +131,7 @@ public abstract class Descriptor impleme
      */
     public final boolean closed()
     {
-        if (fd == -1 || fd == 0)
+        if (fd == 0L)
             return true;
         else
             return false;
@@ -144,34 +141,12 @@ public abstract class Descriptor impleme
      * Get underlying Operating system descriptor.
      * @return operating system descriptor.
      */
-    public final int fd()
+    public final long fd()
     {
         return fd;
     }
 
     /**
-     * Get this descriptor's context.
-     * @return descriptor context.
-     */
-    public final Object attachment()
-    {
-        return ad;
-    }
-
-    /**
-     * Attaches the given object to this descriptor.
-     *
-     * @return the previously attached descriptor context, if any,
-     *         otherwise {@code null}.
-     */
-    public final Object attach(Object ctx)
-    {
-        Object org = ad;
-        ad = ctx;
-        return org;
-    }
-
-    /**
      * Compares this {@code Descriptor} to the specified object.
      *
      * @param other a {@code Descriptor}
@@ -206,7 +181,7 @@ public abstract class Descriptor impleme
     public String toString()
     {
         if (fd >= 0) {
-            return "#" + Integer.toString(fd);
+            return "#" + Utils.hex(fd);
         }
         else {
             return "(nil)";

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalDescriptor.java Tue Jun 14 16:43:18 2011
@@ -36,12 +36,12 @@ import org.apache.commons.runtime.io.Des
  */
 final class LocalDescriptor extends Descriptor
 {
-    private static native int     close0(int fd);
-    private static native int     sendz0(int fd);
-    private static native int     socket0(int type, boolean blocking)
+    private static native int     close0(long fd);
+    private static native int     sendz0(long fd);
+    private static native long    socket0(int type, boolean blocking)
         throws IOException;
-    private static native int     block0(int fd, boolean block);
-    private static native boolean isBlocking0(int fd)
+    private static native int     block0(long fd, boolean block);
+    private static native boolean isBlocking0(long fd)
         throws IOException;
 
     private boolean               xclosed = false;
@@ -50,7 +50,7 @@ final class LocalDescriptor extends Desc
     {
     }
 
-    public LocalDescriptor(int fd)
+    public LocalDescriptor(long fd)
     {
         this.fd = fd;
     }
@@ -105,7 +105,7 @@ final class LocalDescriptor extends Desc
         xclosed = true;
         if (valid()) {
             int rc = close0(fd);
-            fd     = -1;
+            fd     = 0L;
             if (rc != 0)
                 throw new SocketException(Status.describe(rc));
         }
@@ -155,7 +155,7 @@ final class LocalDescriptor extends Desc
                 // Ignore exceptions during close
             }
             finally {
-                fd = -1;
+                fd = 0L;
             }
         }
     }

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalEndpoint.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalEndpoint.java?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalEndpoint.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalEndpoint.java Tue Jun 14 16:43:18 2011
@@ -46,7 +46,7 @@ public class LocalEndpoint extends Endpo
     private SelectionKeyImpl            key;
     private boolean                     connected = false;
 
-    private static native int           connect0(int fd, byte[] sa, int timeout);
+    private static native int           connect0(long fd, byte[] sa, int timeout);
 
     /**
      * Creates a new unconnected socket object.

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LocalServerEndpoint.java Tue Jun 14 16:43:18 2011
@@ -154,8 +154,8 @@ public class LocalServerEndpoint extends
         return key.queue(ops);
     }
 
-    private static native int           bind0(int fd, byte[] sa, int backlog);
-    private static native int           accept0(int fd, byte[] sa, boolean block)
+    private static native int           bind0(long fd, byte[] sa, int backlog);
+    private static native long          accept0(long fd, byte[] sa, boolean block)
         throws SocketException;
 
     @Override
@@ -183,7 +183,7 @@ public class LocalServerEndpoint extends
     {
         if (sd.closed())
             throw new ClosedDescriptorException();
-        int fd = accept0(sd.fd(), sa.sockaddr(), blocking);
+        long fd = accept0(sd.fd(), sa.sockaddr(), blocking);
         LocalDescriptor ad = new LocalDescriptor(fd);
         return new LocalEndpoint(ad, sa);
     }

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Poll.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Poll.java?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Poll.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Poll.java Tue Jun 14 16:43:18 2011
@@ -68,18 +68,19 @@ public final class Poll
     public static final short     POLLTTL       = 0x0400;
 
 
-    private static native int wait0(int[] fds, short[] events, short[] revents,
+    private static native int wait0(long[] fds, short[] events, short[] revents,
                                     int nelts, int timeout)
-        throws OutOfMemoryError, InvalidArgumentException,
+        throws OutOfMemoryError,
+               InvalidArgumentException,
                InvalidDescriptorException;
-    private static native short wait1(int fd, short events, int timeout);
+    private static native short wait1(long fd, short events, int timeout);
 
-    private static short wait(int fd, short events, int timeout)
+    private static short wait(long fd, short events, int timeout)
         throws OutOfMemoryError,
                InvalidArgumentException,
                InvalidDescriptorException
     {
-        if (fd == -1 || (fd >= 0 && fd <= 3))
+        if (fd == 0L)
             throw new InvalidDescriptorException();
         if ((events & 0x00ff) == 0)
             throw new InvalidArgumentException();

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/PosixSelector.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/PosixSelector.java?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/PosixSelector.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/PosixSelector.java Tue Jun 14 16:43:18 2011
@@ -51,8 +51,8 @@ final class PosixSelector extends Abstra
     private static native void  wakeup0(long pollset);
     private static native int   destroy0(long pollset);
     private static native int   size0(long pollset);
-    private static native int   add0(long pollset, SelectionKeyImpl key, int fd, int events, int ttl);
-    private static native int   del0(long pollset, SelectionKeyImpl key, int fd);
+    private static native int   add0(long pollset, SelectionKeyImpl key, long fd, int events, int ttl);
+    private static native int   del0(long pollset, SelectionKeyImpl key, long fd);
     private static native int   clr0(long pollset, SelectionKeyImpl[] set);
     private static native int   wait0(long pollset, SelectionKeyImpl[] set, short[] events,
                                       int timeout, boolean autocancel);

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketDescriptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketDescriptor.java?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketDescriptor.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketDescriptor.java Tue Jun 14 16:43:18 2011
@@ -33,12 +33,12 @@ import org.apache.commons.runtime.io.Des
 final class SocketDescriptor extends Descriptor
 {
 
-    private static native int     close0(int fd);
-    private static native int     sendz0(int fd);
-    private static native int     socket0(int type)
+    private static native int     close0(long fd);
+    private static native int     sendz0(long fd);
+    private static native long    socket0(int type)
         throws IOException;
-    private static native int     block0(int fd, boolean block);
-    private static native boolean isBlocking0(int fd)
+    private static native int     block0(long fd, boolean block);
+    private static native boolean isBlocking0(long fd)
         throws IOException;
 
     private boolean xclosed = false;
@@ -47,7 +47,7 @@ final class SocketDescriptor extends Des
     {
     }
 
-    public SocketDescriptor(int fd)
+    public SocketDescriptor(long fd)
     {
         this.fd = fd;
     }
@@ -96,7 +96,7 @@ final class SocketDescriptor extends Des
         xclosed = true;
         if (valid()) {
             int rc = close0(fd);
-            fd     = -1;
+            fd     = 0L;
             if (rc != 0)
                 throw new SocketException(Status.describe(rc));
         }
@@ -146,7 +146,7 @@ final class SocketDescriptor extends Des
                 // Ignore exceptions during close
             }
             finally {
-                fd = -1;
+                fd = 0L;
             }
         }
     }

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/descriptor.h Tue Jun 14 16:43:18 2011
@@ -19,18 +19,32 @@
 
 #include "acr/jniapi.h"
 
+typedef struct acr_fd_t acr_fd_t;
+struct acr_fd_t {
+    int         type;   /**< Descriptor type */
+    int         size;   /**< Allocated descriptor size */
+    union {
+        jlong   nh;
+        void    *p;
+        int      f;
+#if defined(WINDOWS)
+        HANDLE   h;
+        SOCKET   s;
+#else
+        int      h;
+        int      s;
+#endif
+    } u;
+};
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-int
+acr_fd_t *
 AcrGetDescriptorFd(JNI_STDARGS);
 int
-AcrSetDescriptorFd(JNI_STDARGS, int fd);
-jobject
-AcrGetDescriptorCtx(JNI_STDARGS);
-int
-AcrSetDescriptorCtx(JNI_STDARGS, jobject ob);
+AcrSetDescriptorFd(JNI_STDARGS, acr_fd_t *fd);
 
 #ifdef __cplusplus
 }

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr/netapi.h Tue Jun 14 16:43:18 2011
@@ -20,6 +20,7 @@
 #include "acr/stdtypes.h"
 #include "acr/jnidefs.h"
 #include "acr/netdefs.h"
+#include "acr/descriptor.h"
 
 typedef struct acr_sockaddr_t acr_sockaddr_t;
 struct acr_sockaddr_t {
@@ -66,6 +67,8 @@ extern "C" {
 #endif
 
 void    AcrSelectionKeyReset(JNI_STDARGS);
+int     AcrGetLocalAddr(acr_fd_t *sockfd, acr_sockaddr_t *sockaddr);
+int     AcrGetRemoteAddr(acr_fd_t *sockfd, acr_sockaddr_t *sockaddr);
 
 #ifdef __cplusplus
 }

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/inetsock.c Tue Jun 14 16:43:18 2011
@@ -24,35 +24,46 @@
 #include <poll.h>
 #include <sys/un.h>
 
-ACR_NET_EXPORT(jint, SocketDescriptor, close0)(JNI_STDARGS, jint fd)
+ACR_NET_EXPORT(jint, SocketDescriptor, close0)(JNI_STDARGS, jlong fp)
 {
-    if (r_close(fd) == -1)
+    acr_fd_t *fd  = J2P(fp, acr_fd_t *);
+
+    if (fd == 0)
+        return ACR_EBADF;
+    if (r_close(fd->u.s) == -1)
         return ACR_GET_OS_ERROR();
-    else
+    else {
+        AcrFree(fd);
         return 0;
+    }
 }
 
-ACR_NET_EXPORT(jint, SocketDescriptor, sendz0)(JNI_STDARGS, jint fd)
+ACR_NET_EXPORT(jint, SocketDescriptor, sendz0)(JNI_STDARGS, jlong fp)
 {
     char dummy = 0;
-    if (r_write(fd, &dummy, 0) == -1)
+    acr_fd_t *fd  = J2P(fp, acr_fd_t *);
+
+    if (r_write(fd->u.s, &dummy, 0) == -1)
         return ACR_GET_OS_ERROR();
     else
         return 0;
 }
 
-ACR_NET_EXPORT(jint, SocketDescriptor, block0)(JNI_STDARGS, jint fd, jboolean on)
+ACR_NET_EXPORT(jint, SocketDescriptor, block0)(JNI_STDARGS, jlong fp, jboolean on)
 {
-    return AcrNonblock(fd, on == JNI_FALSE);
+    acr_fd_t *fd  = J2P(fp, acr_fd_t *);
+    return AcrNonblock(fd->u.s, on == JNI_FALSE);
 }
 
-ACR_NET_EXPORT(jboolean, SocketDescriptor, isBlocking0)(JNI_STDARGS, jint fd)
+ACR_NET_EXPORT(jboolean, SocketDescriptor, isBlocking0)(JNI_STDARGS, jlong fp)
 {
 #ifdef O_NONBLOCK
     /* Use non-blocking I/O
     */
     long mode;
-    if ((mode = fcntl(fd, F_GETFL, 0)) == -1) {
+    acr_fd_t *fd  = J2P(fp, acr_fd_t *);
+
+    if ((mode = fcntl(fd->u.s, F_GETFL, 0)) == -1) {
         ACR_THROW_NET_ERRNO();
         return JNI_TRUE;
     }

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/poll.c Tue Jun 14 16:43:18 2011
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "acr/clazz.h"
+#include "acr/netapi.h"
 #include "acr/memory.h"
 #include "acr/jniapi.h"
 #include "acr/port.h"
@@ -65,7 +65,7 @@ static short reventt(short event)
     return rv;
 }
 
-ACR_NET_EXPORT(jint, Poll, wait0)(JNI_STDARGS, jintArray fdset,
+ACR_NET_EXPORT(jint, Poll, wait0)(JNI_STDARGS, jlongArray fdset,
                                   jshortArray events, jshortArray revents,
                                   jint nevents, jint timeout)
 {
@@ -73,7 +73,7 @@ ACR_NET_EXPORT(jint, Poll, wait0)(JNI_ST
     struct pollfd pfds[1024];
     struct pollfd *pfd;
     jshort *pevents;
-    jint   *pfdset;
+    jlong  *pfdset;
     acr_time_t tmx = 0;
 
     if (nevents > 1024) {
@@ -83,10 +83,10 @@ ACR_NET_EXPORT(jint, Poll, wait0)(JNI_ST
     }
     else
         pfd = pfds;
-    pfdset  = JARRAY_CRITICAL(jint,   fdset);
+    pfdset  = JARRAY_CRITICAL(jlong,  fdset);
     pevents = JARRAY_CRITICAL(jshort, events);
     for (i = 0; i < nevents; i++) {
-        pfd[i].fd      = pfdset[i];
+        pfd[i].fd      = (J2P(pfdset[i], acr_fd_t *))->u.s;
         pfd[i].events  = ieventt(pevents[i]);
         pfd[i].revents = 0;
     }
@@ -127,14 +127,15 @@ finally:
     return ns;
 }
 
-ACR_NET_EXPORT(jshort, Poll, wait1)(JNI_STDARGS, jint fd,
+ACR_NET_EXPORT(jshort, Poll, wait1)(JNI_STDARGS, jlong fp,
                                     jshort events, jint timeout)
 {
     int ns;
     struct pollfd pfd;
     acr_time_t tmx = 0;
+    acr_fd_t *fd   = J2P(fp, acr_fd_t *);
 
-    pfd.fd      = fd;
+    pfd.fd      = fd->u.s;
     pfd.events  = ieventt(events);
     pfd.revents = 0;
 

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/selector.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/selector.c?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/selector.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/selector.c Tue Jun 14 16:43:18 2011
@@ -440,10 +440,11 @@ ACR_NET_EXPORT(jint, PosixSelector, wait
 }
 
 ACR_NET_EXPORT(jint, PosixSelector, add0)(JNI_STDARGS, jlong pollset, jobject fo,
-                                          jint f, jint events, jint ttlms)
+                                          jlong fp, jint events, jint ttlms)
 {
     int i, rc = 0;
     acr_pollset_t *ps = J2P(pollset, acr_pollset_t *);
+    acr_fd_t *fd      = J2P(fp, acr_fd_t *);
 
     pthread_mutex_lock(&ps->mutex);
     while (ps->state != 0) {
@@ -466,14 +467,14 @@ ACR_NET_EXPORT(jint, PosixSelector, add0
         goto cleanup;
     }
     for (i = 1; i < ps->used; i++) {
-        if (ps->fdset[i].fd == f) {
+        if (ps->fdset[i].fd == fd->u.s) {
             /* Duplicate descriptor
              */
             rc = ACR_EALREADY;
             goto cleanup;
         }
     }
-    ps->fdset[ps->used].fd      = f;
+    ps->fdset[ps->used].fd      = fd->u.s;
     ps->fdset[ps->used].events  = ieventt(events);
     ps->fdset[ps->used].revents = 0;
     ps->ooset[ps->used].obj     = (*env)->NewGlobalRef(env, fo);
@@ -499,7 +500,7 @@ cleanup:
 }
 
 ACR_NET_EXPORT(jint, PosixSelector, del0)(JNI_STDARGS, jlong pollset,
-                                          jobject fo, jint f)
+                                          jobject fo, jlong fp)
 {
     int i, rc = ACR_EOF;
     acr_pollset_t *ps = J2P(pollset, acr_pollset_t *);

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/usock.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/usock.c?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/usock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/usock.c Tue Jun 14 16:43:18 2011
@@ -33,29 +33,38 @@
 #define SOCKADDR_RELEASE(BA, SA) \
     AcrReleaseArrayCritical(env, (BA), (SA))
 
-ACR_NET_EXPORT(jint, LocalDescriptor, close0)(JNI_STDARGS, jint fd)
+ACR_NET_EXPORT(jint, LocalDescriptor, close0)(JNI_STDARGS, jlong fp)
 {
-    if (r_close(fd) == -1)
+    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+
+    if (fd == 0)
+        return ACR_EBADF;
+    if (r_close(fd->u.s) == -1)
         return ACR_GET_OS_ERROR();
-    else
+    else {
+        AcrFree(fd);
         return 0;
+    }
 }
 
-ACR_NET_EXPORT(jint, LocalDescriptor, sendz0)(JNI_STDARGS, jint fd)
+ACR_NET_EXPORT(jint, LocalDescriptor, sendz0)(JNI_STDARGS, jlong fp)
 {
     char dummy = 0;
-    if (r_write(fd, &dummy, 0) == -1)
+    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+
+    if (r_write(fd->u.s, &dummy, 0) == -1)
         return ACR_GET_OS_ERROR();
     else
         return 0;
 }
 
-ACR_NET_EXPORT(jint, LocalDescriptor, socket0)(JNI_STDARGS, jint stype,
-                                               jboolean block)
+ACR_NET_EXPORT(jlong, LocalDescriptor, socket0)(JNI_STDARGS, jint stype,
+                                                jboolean block)
 {
     int sd;
     int rc   = 0;
     int type = 0;
+    acr_fd_t *sp;
 
     switch (stype) {
         case 1:
@@ -81,38 +90,43 @@ ACR_NET_EXPORT(jint, LocalDescriptor, so
         rc = errno;
 #if !HAVE_SOCK_CLOEXEC
     rc = AcrCloseOnExec(sd, 1);
-    if (rc != 0) {
+    if (rc != 0)
         r_close(sd);
-        sd = -1;
-    }
 #endif
 #if !HAVE_SOCK_NONBLOCK
     if (block == JNI_FALSE && rc == 0) {
         rc = AcrNonblock(sd, 1);
-        if (rc != 0) {
+        if (rc != 0)
             r_close(sd);
-            sd = -1;
-        }
     }
 #endif
     if (rc != 0) {
         ACR_THROW_NET_ERROR(rc);
+        return 0;
     }
-    return sd;
+    if ((sp = ACR_TALLOC(acr_fd_t)) == 0) {
+        r_close(sd);
+        return 0;
+    }
+    sp->u.s = sd;
+    return P2J(sp);
 }
 
-ACR_NET_EXPORT(jint, LocalDescriptor, block0)(JNI_STDARGS, jint fd, jboolean on)
+ACR_NET_EXPORT(jint, LocalDescriptor, block0)(JNI_STDARGS, jlong fp, jboolean on)
 {
-    return AcrNonblock(fd, on == JNI_FALSE);
+    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+    return AcrNonblock(fd->u.s, on == JNI_FALSE);
 }
 
-ACR_NET_EXPORT(jboolean, LocalDescriptor, isBlocking0)(JNI_STDARGS, jint fd)
+ACR_NET_EXPORT(jboolean, LocalDescriptor, isBlocking0)(JNI_STDARGS, jlong fp)
 {
 #ifdef O_NONBLOCK
     /* Use non-blocking I/O
     */
     long mode;
-    if ((mode = fcntl(fd, F_GETFL, 0)) == -1) {
+    acr_fd_t *fd = J2P(fp, acr_fd_t *);
+
+    if ((mode = fcntl(fd->u.s, F_GETFL, 0)) == -1) {
         ACR_THROW_NET_ERRNO();
         return JNI_TRUE;
     }
@@ -126,15 +140,16 @@ ACR_NET_EXPORT(jboolean, LocalDescriptor
     return JNI_TRUE;
 }
 
-ACR_NET_EXPORT(jint, LocalEndpoint, connect0)(JNI_STDARGS, jint fd,
+ACR_NET_EXPORT(jint, LocalEndpoint, connect0)(JNI_STDARGS, jlong fp,
                                               jbyteArray cb, jint timeout)
 {
     int rc;
     acr_sockaddr_t *ca = SOCKADDR_CAST(cb);
+    acr_fd_t *fd       = J2P(fp, acr_fd_t *);
 
     do {
         /* Restartable connect */
-        rc = connect(fd, (const struct sockaddr *)&ca->sa.sin, ca->salen);
+        rc = connect(fd->u.s, (const struct sockaddr *)&ca->sa.sin, ca->salen);
     } while (rc == -1 && errno == EINTR);
 
     if (rc == -1)
@@ -142,12 +157,12 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
     SOCKADDR_RELEASE(cb, ca);
     if (rc != 0) {
         if (timeout > 0 && (rc == EINPROGRESS || rc == EALREADY)) {
-            rc = AcrWaitIO(fd, timeout, POLLOUT);
+            rc = AcrWaitIO(fd->u.s, timeout, POLLOUT);
 #if defined(SO_ERROR)
             if (rc == 0) {
                 int       err;
                 socklen_t len = sizeof(err);
-                if (getsockopt(fd, SOL_SOCKET, SO_ERROR, (char *)&err, &len) == -1);
+                if (getsockopt(fd->u.s, SOL_SOCKET, SO_ERROR, (char *)&err, &len) == -1);
                     rc = errno;
                 if (err != 0)
                     rc = err;
@@ -158,17 +173,18 @@ ACR_NET_EXPORT(jint, LocalEndpoint, conn
     return rc;
 }
 
-ACR_NET_EXPORT(jint, LocalServerEndpoint, bind0)(JNI_STDARGS, jint fd,
+ACR_NET_EXPORT(jint, LocalServerEndpoint, bind0)(JNI_STDARGS, jlong fp,
                                                  jbyteArray ba,
                                                  jint backlog)
 {
     int rc = 0;
     acr_sockaddr_t *aa = SOCKADDR_CAST(ba);
+    acr_fd_t *fd       = J2P(fp, acr_fd_t *);
 
-    if (bind(fd, (const struct sockaddr *)&aa->sa, aa->salen) == -1)
+    if (bind(fd->u.s, (const struct sockaddr *)&aa->sa, aa->salen) == -1)
         rc = errno;
     SOCKADDR_RELEASE(ba, aa);
-    if (rc == 0 && listen(fd, backlog) == -1)
+    if (rc == 0 && listen(fd->u.s, backlog) == -1)
         rc = errno;
     return rc;
 }
@@ -184,13 +200,15 @@ ACR_NET_EXPORT(void, LocalServerEndpoint
     SOCKADDR_RELEASE(ba, sa);
 }
 
-ACR_NET_EXPORT(jint, LocalServerEndpoint, accept0)(JNI_STDARGS, jint fd,
-                                                   jbyteArray ba,
-                                                   jboolean block)
+ACR_NET_EXPORT(jlong, LocalServerEndpoint, accept0)(JNI_STDARGS, jlong fp,
+                                                    jbyteArray ba,
+                                                    jboolean block)
 {
     int sd;
     acr_sockaddr_t  aa;
     socklen_t       aalen;
+    acr_fd_t *fd  = J2P(fp, acr_fd_t *);
+    acr_fd_t *sp;
 #if HAVE_ACCEPT4
     int flags = SOCK_CLOEXEC;
 #endif
@@ -203,15 +221,15 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
     aalen = ISIZEOF(struct sockaddr_un);
     do {
 #if HAVE_ACCEPT4
-        sd = accept4(fd, (struct sockaddr *)&aa.sa, &aalen, flags);
+        sd = accept4(fd->u.s, (struct sockaddr *)&aa.sa, &aalen, flags);
 #else
-        sd = accept(fd,  (struct sockaddr *)&aa.sa, &aalen);
+        sd = accept(fd->u.s,  (struct sockaddr *)&aa.sa, &aalen);
 #endif
     } while (sd == -1 && errno == EINTR);
 
     if (sd == -1) {
         ACR_THROW_NET_ERRNO();
-        return -1;
+        return 0;
     }
 #if !HAVE_ACCEPT4
     {
@@ -219,7 +237,7 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
         if (rc != 0) {
             r_close(sd);
             ACR_THROW_NET_ERROR(rc);
-            return -1;
+            return 0;
         }
     }
 #endif
@@ -229,7 +247,7 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
         if (rc != 0) {
             r_close(sd);
             ACR_THROW_NET_ERROR(rc);
-            return -1;
+            return 0;
         }
     }
 #endif
@@ -239,5 +257,10 @@ ACR_NET_EXPORT(jint, LocalServerEndpoint
         fflush(stderr);
     }
 #endif
-    return sd;
+    if ((sp = ACR_TALLOC(acr_fd_t)) == 0) {
+        r_close(sd);
+        return 0;
+    }
+    sp->u.s = sd;
+    return P2J(sp);
 }

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c Tue Jun 14 16:43:18 2011
@@ -37,50 +37,39 @@ J_DECLARE_F_ID(0000) = {
     INVALID_FIELD_OFFSET,
     0,
     "fd",
-    "I"
+    "J"
 };
 
-J_DECLARE_F_ID(0001) = {
-    INVALID_FIELD_OFFSET,
-    INVALID_FIELD_OFFSET,
-    0,
-    "ad",
-    "Ljava/lang/Object;"
-};
-
-
 ACR_IO_EXPORT(void, Descriptor, init0)(JNI_STDARGS)
 {
     _clazzn.i = (jclass)(*env)->NewGlobalRef(env, obj);
     if (_clazzn.i == 0)
         return;
     V_LOAD_IFIELD(0000);
-    V_LOAD_IFIELD(0001);
     UNSAFE_IFIELD(0000);
-    UNSAFE_IFIELD(0001);
     _clazzn.u = 1;
 }
 
-int
-AcrGetDescriptorFd(JNI_STDARGS)
+acr_fd_t *
+AcrGetDescriptorFp(JNI_STDARGS)
 {
-    int fd = -1;
+    jlong fp = 0;
 
     if (J4FLD_OFF(0000) != INVALID_FIELD_OFFSET) {
         char *oa = *(char **)obj;
         if (oa != 0) {
             char *fa = (oa + J4FLD_PTR(0000));
-            fd = *((int *)fa);
+            fp = *((jlong *)fa);
         }
     }
     else if (CLAZZ_LOADED) {
-        fd = GET_IFIELD_I(0000, obj);
+        fp = GET_IFIELD_J(0000, obj);
     }
-    return fd;
+    return J2P(fp, acr_fd_t *);
 }
 
 int
-AcrSetDescriptorFd(JNI_STDARGS, int fd)
+AcrSetDescriptorFp(JNI_STDARGS, acr_fd_t *fd)
 {
     int rc = ACR_EBADF;
 
@@ -88,50 +77,12 @@ AcrSetDescriptorFd(JNI_STDARGS, int fd)
         char *oa = *(char **)obj;
         if (oa != 0) {
             char *fa = (oa + J4FLD_PTR(0000));
-            *((int *)fa) = fd;
-            rc = 0;
-        }
-    }
-    else if (CLAZZ_LOADED) {
-        SET_IFIELD_I(0000, obj, fd);
-        rc = 0;
-    }
-    return rc;
-}
-
-jobject
-AcrGetDescriptorCtx(JNI_STDARGS)
-{
-    jobject ob = 0;
-
-    if (J4FLD_OFF(0001) != INVALID_FIELD_OFFSET) {
-        char *oa = *(char **)obj;
-        if (oa != 0) {
-            char *fa = (oa + J4FLD_PTR(0001));
-            ob = *((jobject *)fa);
-        }
-    }
-    else if (CLAZZ_LOADED) {
-        ob = GET_IFIELD_O(0001, obj);
-    }
-    return ob;
-}
-
-int
-AcrSetDescriptorCtx(JNI_STDARGS, jobject ob)
-{
-    int   rc = ACR_EBADF;
-
-    if (J4FLD_OFF(0001) != INVALID_FIELD_OFFSET) {
-        char *oa = *(char **)obj;
-        if (oa != 0) {
-            char *fa = (oa + J4FLD_PTR(0001));
-            *((jobject *)fa) = ob;
+            *((jlong *)fa) = P2J(fd);
             rc = 0;
         }
     }
     else if (CLAZZ_LOADED) {
-        SET_IFIELD_O(0001, obj, ob);
+        SET_IFIELD_P(0000, obj, fd);
         rc = 0;
     }
     return rc;

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c?rev=1135690&r1=1135689&r2=1135690&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c Tue Jun 14 16:43:18 2011
@@ -409,10 +409,10 @@ sockaddr_to_ipstr(char *buf, int buflen,
 }
 
 int
-AcrGetLocalAddr(int sockfd, acr_sockaddr_t *sockaddr)
+AcrGetLocalAddr(acr_fd_t *sockfd, acr_sockaddr_t *sockaddr)
 {
     socklen_t salen = sizeof(sockaddr->sa);
-    if (getsockname(ACR_SOCKET(sockfd), (struct sockaddr *)&sockaddr->sa, &salen) == SOCKET_ERROR) {
+    if (getsockname(sockfd->u.s, (struct sockaddr *)&sockaddr->sa, &salen) == SOCKET_ERROR) {
         return ACR_GET_NETOS_ERROR();
     }
     else {
@@ -423,10 +423,10 @@ AcrGetLocalAddr(int sockfd, acr_sockaddr
 }
 
 int
-AcrGetRemoteAddr(int sockfd, acr_sockaddr_t *sockaddr)
+AcrGetRemoteAddr(acr_fd_t *sockfd, acr_sockaddr_t *sockaddr)
 {
     socklen_t salen = sizeof(sockaddr->sa);
-    if (getpeername(ACR_SOCKET(sockfd), (struct sockaddr *)&sockaddr->sa, &salen) == SOCKET_ERROR) {
+    if (getpeername(sockfd->u.s, (struct sockaddr *)&sockaddr->sa, &salen) == SOCKET_ERROR) {
         return ACR_GET_NETOS_ERROR();
     }
     else {