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/05/05 17:52:19 UTC

svn commit: r1099854 - in /commons/sandbox/runtime/trunk/src/main: java/org/apache/commons/runtime/net/ native/shared/ test/org/apache/commons/runtime/

Author: mturk
Date: Thu May  5 15:52:18 2011
New Revision: 1099854

URL: http://svn.apache.org/viewvc?rev=1099854&view=rev
Log:
Move Java sockets operations to a single class

Added:
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Sockets.java
      - copied, changed from r1099828, commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketInstance.java
Removed:
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/DatagramSocketInstance.java
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketInstance.java
Modified:
    commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LingerOption.java
    commons/sandbox/runtime/trunk/src/main/native/shared/dsock.c
    commons/sandbox/runtime/trunk/src/main/native/shared/psock.c
    commons/sandbox/runtime/trunk/src/main/native/shared/ssock.c
    commons/sandbox/runtime/trunk/src/main/test/org/apache/commons/runtime/TestNetworkImpl.java

Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LingerOption.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LingerOption.java?rev=1099854&r1=1099853&r2=1099854&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LingerOption.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/LingerOption.java Thu May  5 15:52:18 2011
@@ -21,7 +21,7 @@ package org.apache.commons.runtime.net;
 import java.net.SocketAddress;
 
 /**
- * This class represents a network address.
+ * Specifies whether a socket will remain connected after closed.
  */
 public final class LingerOption
 {

Copied: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Sockets.java (from r1099828, commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketInstance.java)
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Sockets.java?p2=commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Sockets.java&p1=commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketInstance.java&r1=1099828&r2=1099854&rev=1099854&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketInstance.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/Sockets.java Thu May  5 15:52:18 2011
@@ -20,15 +20,19 @@ package org.apache.commons.runtime.net;
 
 import java.io.FileDescriptor;
 import java.io.IOException;
+import java.net.DatagramSocket;
 import java.net.Socket;
 import java.net.SocketImpl;
 import java.net.ServerSocket;
 import java.net.SocketException;
 import org.apache.commons.runtime.Status;
 
-public final class SocketInstance
+/**
+ * Modifes Java Sockets
+ */
+public final class Sockets
 {
-    private SocketInstance()
+    private Sockets()
     {
         // No istance
     }
@@ -39,14 +43,20 @@ public final class SocketInstance
     }
 
     private static native FileDescriptor fd0(Socket s);
-    private static native FileDescriptor fd1(ServerSocket s);
     private static native int            nd0(Socket s);
-    private static native int            nd1(ServerSocket s);
     private static native int            sd0(Socket s, int d);
-    private static native int            sd1(ServerSocket s, int d);
     private static native int            nb0(Socket s, boolean on);
+
+    private static native FileDescriptor fd1(ServerSocket s);
+    private static native int            nd1(ServerSocket s);
+    private static native int            sd1(ServerSocket s, int d);
     private static native int            nb1(ServerSocket s, boolean on);
 
+    private static native FileDescriptor fd3(DatagramSocket s);
+    private static native int            nd3(DatagramSocket s);
+    private static native int            sd3(DatagramSocket s, int d);
+    private static native int            nb3(DatagramSocket s, boolean on);
+
     public static FileDescriptor getFileDescriptor(Socket s)
         throws IllegalArgumentException
     {
@@ -63,6 +73,14 @@ public final class SocketInstance
         return fd1(s);
     }
 
+    public static FileDescriptor getFileDescriptor(DatagramSocket s)
+        throws IllegalArgumentException
+    {
+        if (s == null)
+            throw new IllegalArgumentException();
+        return fd3(s);
+    }
+
     public static int getNativeDescriptor(Socket s)
         throws IllegalArgumentException
     {
@@ -79,6 +97,14 @@ public final class SocketInstance
         return nd1(s);
     }
 
+    public static int getNativeDescriptor(DatagramSocket s)
+        throws IllegalArgumentException
+    {
+        if (s == null)
+            throw new IllegalArgumentException();
+        return nd3(s);
+    }
+
     public static void setNativeDescriptor(Socket s, int desc)
         throws IllegalArgumentException, IOException
     {
@@ -99,6 +125,16 @@ public final class SocketInstance
             throw new IOException(Status.describe(rc));
     }
 
+    public static void setNativeDescriptor(DatagramSocket s, int desc)
+        throws IllegalArgumentException, IOException
+    {
+        if (s == null)
+            throw new IllegalArgumentException();
+        int rc = sd3(s, desc);
+        if (rc != 0)
+            throw new IOException(Status.describe(rc));
+    }
+
     public static void configureBlocking(Socket s, boolean on)
         throws IllegalArgumentException, IOException
     {
@@ -119,4 +155,14 @@ public final class SocketInstance
             throw new IOException(Status.describe(rc));
     }
 
+    public static void configureBlocking(DatagramSocket s, boolean on)
+        throws IllegalArgumentException, IOException
+    {
+        if (s == null)
+            throw new IllegalArgumentException();
+        int rc = nb3(s, !on);
+        if (rc != 0)
+            throw new IOException(Status.describe(rc));
+    }
+
 }

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/dsock.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/dsock.c?rev=1099854&r1=1099853&r2=1099854&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/dsock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/dsock.c Thu May  5 15:52:18 2011
@@ -56,14 +56,7 @@ ACR_CLASS_DTOR(DatagramSocket)
     AcrUnloadClass(env, &_clazzn);
 }
 
-ACR_NET_EXPORT(jboolean, DatagramSocketInstance, init0)(JNI_STDARGS)
-{
-    ACR_CLASS_LOAD(DatagramSocket);
-    ACR_CLASS_LOAD(DatagramSocketImpl);
-    return JNI_TRUE;
-}
-
-ACR_NET_EXPORT(jobject, DatagramSocketInstance, fd0)(JNI_STDARGS, jobject sock)
+ACR_NET_EXPORT(jobject, Sockets, fd3)(JNI_STDARGS, jobject sock)
 {
     jobject impl = 0;
 
@@ -103,12 +96,12 @@ AcrGetDatagramSocketFd(JNI_STDARGS)
     return -1;
 }
 
-ACR_NET_EXPORT(jint, DatagramSocketInstance, nd0)(JNI_STDARGS, jobject sock)
+ACR_NET_EXPORT(jint, Sockets, nd3)(JNI_STDARGS, jobject sock)
 {
     return AcrGetDatagramSocketFd(env, sock);
 }
 
-ACR_NET_EXPORT(jint, DatagramSocketInstance, sd0)(JNI_STDARGS, jobject sock, jint sd)
+ACR_NET_EXPORT(jint, Sockets, sd3)(JNI_STDARGS, jobject sock, jint sd)
 {
     jobject impl = 0;
     jobject fd;
@@ -129,7 +122,7 @@ ACR_NET_EXPORT(jint, DatagramSocketInsta
     return ACR_EBADF;
 }
 
-ACR_NET_EXPORT(jint, DatagramSocketInstance, nb0)(JNI_STDARGS, jobject sock, jboolean on)
+ACR_NET_EXPORT(jint, Sockets, nb3)(JNI_STDARGS, jobject sock, jboolean on)
 {
     jobject impl = 0;
     jobject fd;

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/psock.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/psock.c?rev=1099854&r1=1099853&r2=1099854&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/psock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/psock.c Thu May  5 15:52:18 2011
@@ -57,15 +57,17 @@ ACR_CLASS_DTOR(Socket)
     AcrUnloadClass(env, &_clazzn);
 }
 
-ACR_NET_EXPORT(jboolean, SocketInstance, init0)(JNI_STDARGS)
+ACR_NET_EXPORT(jboolean, Sockets, init0)(JNI_STDARGS)
 {
     ACR_CLASS_LOAD(Socket);
     ACR_CLASS_LOAD(SocketImpl);
     ACR_CLASS_LOAD(ServerSocket);
+    ACR_CLASS_LOAD(DatagramSocket);
+    ACR_CLASS_LOAD(DatagramSocketImpl);    
     return JNI_TRUE;
 }
 
-ACR_NET_EXPORT(jobject, SocketInstance, fd0)(JNI_STDARGS, jobject sock)
+ACR_NET_EXPORT(jobject, Sockets, fd0)(JNI_STDARGS, jobject sock)
 {
     jobject impl = 0;
 
@@ -105,12 +107,12 @@ AcrGetSocketFd(JNI_STDARGS)
     return -1;
 }
 
-ACR_NET_EXPORT(jint, SocketInstance, nd0)(JNI_STDARGS, jobject sock)
+ACR_NET_EXPORT(jint, Sockets, nd0)(JNI_STDARGS, jobject sock)
 {
     return AcrGetSocketFd(env, sock);
 }
 
-ACR_NET_EXPORT(jint, SocketInstance, sd0)(JNI_STDARGS, jobject sock, jint sd)
+ACR_NET_EXPORT(jint, Sockets, sd0)(JNI_STDARGS, jobject sock, jint sd)
 {
     jobject impl = 0;
     jobject fd;
@@ -131,7 +133,7 @@ ACR_NET_EXPORT(jint, SocketInstance, sd0
     return ACR_EBADF;
 }
 
-ACR_NET_EXPORT(jint, SocketInstance, nb0)(JNI_STDARGS, jobject sock, jboolean on)
+ACR_NET_EXPORT(jint, Sockets, nb0)(JNI_STDARGS, jobject sock, jboolean on)
 {
     jobject impl = 0;
     jobject fd;

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/ssock.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/ssock.c?rev=1099854&r1=1099853&r2=1099854&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/ssock.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/ssock.c Thu May  5 15:52:18 2011
@@ -56,7 +56,7 @@ ACR_CLASS_DTOR(ServerSocket)
     AcrUnloadClass(env, &_clazzn);
 }
 
-ACR_NET_EXPORT(jobject, SocketInstance, fd1)(JNI_STDARGS, jobject sock)
+ACR_NET_EXPORT(jobject, Sockets, fd1)(JNI_STDARGS, jobject sock)
 {
     jobject impl = 0;
 
@@ -96,12 +96,12 @@ AcrGetServerSocketFd(JNI_STDARGS)
     return -1;
 }
 
-ACR_NET_EXPORT(jint, SocketInstance, nd1)(JNI_STDARGS, jobject sock)
+ACR_NET_EXPORT(jint, Sockets, nd1)(JNI_STDARGS, jobject sock)
 {
     return AcrGetServerSocketFd(env, sock);
 }
 
-ACR_NET_EXPORT(jint, SocketInstance, sd1)(JNI_STDARGS, jobject sock, jint sd)
+ACR_NET_EXPORT(jint, Sockets, sd1)(JNI_STDARGS, jobject sock, jint sd)
 {
     jobject impl = 0;
     jobject fd;
@@ -122,7 +122,7 @@ ACR_NET_EXPORT(jint, SocketInstance, sd1
     return ACR_EBADF;
 }
 
-ACR_NET_EXPORT(jint, SocketInstance, nb1)(JNI_STDARGS, jobject sock, jboolean on)
+ACR_NET_EXPORT(jint, Sockets, nb1)(JNI_STDARGS, jobject sock, jboolean on)
 {
     jobject impl = 0;
     jobject fd;

Modified: commons/sandbox/runtime/trunk/src/main/test/org/apache/commons/runtime/TestNetworkImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/test/org/apache/commons/runtime/TestNetworkImpl.java?rev=1099854&r1=1099853&r2=1099854&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/test/org/apache/commons/runtime/TestNetworkImpl.java (original)
+++ commons/sandbox/runtime/trunk/src/main/test/org/apache/commons/runtime/TestNetworkImpl.java Thu May  5 15:52:18 2011
@@ -42,8 +42,8 @@ public class TestNetworkImpl extends Ass
         // Create socket bound to the first free port
         //
         ServerSocket ss = new ServerSocket(0);
-        assertNotNull(SocketInstance.getFileDescriptor(ss));
-        assertFalse(SocketInstance.getNativeDescriptor(ss) == -1);
+        assertNotNull(Sockets.getFileDescriptor(ss));
+        assertFalse(Sockets.getNativeDescriptor(ss) == -1);
     }
 
     @Test(groups = { "core" })
@@ -54,11 +54,11 @@ public class TestNetworkImpl extends Ass
         // FileDescriptor is null until bind call
         //
         ServerSocket ss = new ServerSocket();
-        assertNull(SocketInstance.getFileDescriptor(ss));
-        assertTrue(SocketInstance.getNativeDescriptor(ss) == -1);
+        assertNull(Sockets.getFileDescriptor(ss));
+        assertTrue(Sockets.getNativeDescriptor(ss) == -1);
         ss.bind(null);
-        assertNotNull(SocketInstance.getFileDescriptor(ss));
-        assertFalse(SocketInstance.getNativeDescriptor(ss) == -1);
+        assertNotNull(Sockets.getFileDescriptor(ss));
+        assertFalse(Sockets.getNativeDescriptor(ss) == -1);
     }
 
     @Test(groups = { "core" })
@@ -69,7 +69,7 @@ public class TestNetworkImpl extends Ass
         // FileDescriptor is null until bind call
         //
         Socket s = new Socket();
-        assertNull(SocketInstance.getFileDescriptor(s));
+        assertNull(Sockets.getFileDescriptor(s));
     }
 
     class Worker extends Thread
@@ -83,7 +83,7 @@ public class TestNetworkImpl extends Ass
         public void run() {
             try {
                 Socket s = ss.accept();
-                assertNotNull(SocketInstance.getFileDescriptor(s));
+                assertNotNull(Sockets.getFileDescriptor(s));
             } catch (Exception x) {
                 fail("Accept failed " + x.toString());
             }
@@ -108,15 +108,15 @@ public class TestNetworkImpl extends Ass
         //
         Socket s = new Socket("127.0.0.1", ss.getLocalPort());
         // Check various FileDescriptor instances for the Socket
-        FileDescriptor fd = SocketInstance.getFileDescriptor(s);
+        FileDescriptor fd = Sockets.getFileDescriptor(s);
         assertNotNull(fd);
         FileOutputStream fs = (FileOutputStream)s.getOutputStream();
         FileInputStream  fi = (FileInputStream)s.getInputStream();
         assertEquals(fd, fs.getFD());
         assertEquals(fd, fi.getFD());
         assertEquals(fs.getFD(), fi.getFD());
-        SocketInstance.configureBlocking(s, false);
-        SocketInstance.configureBlocking(s, true);
+        Sockets.configureBlocking(s, false);
+        Sockets.configureBlocking(s, true);
         s.close();
     }
 
@@ -138,15 +138,15 @@ public class TestNetworkImpl extends Ass
         //
         Socket s = new Socket("::1", ss.getLocalPort());
         // Check various FileDescriptor instances for the Socket
-        FileDescriptor fd = SocketInstance.getFileDescriptor(s);
+        FileDescriptor fd = Sockets.getFileDescriptor(s);
         assertNotNull(fd);
         FileOutputStream fs = (FileOutputStream)s.getOutputStream();
         FileInputStream  fi = (FileInputStream)s.getInputStream();
         assertEquals(fd, fs.getFD());
         assertEquals(fd, fi.getFD());
         assertEquals(fs.getFD(), fi.getFD());
-        SocketInstance.configureBlocking(s, false);
-        SocketInstance.configureBlocking(s, true);
+        Sockets.configureBlocking(s, false);
+        Sockets.configureBlocking(s, true);
         s.close();
     }
 
@@ -157,7 +157,7 @@ public class TestNetworkImpl extends Ass
         // Create datagram socket bound to the first free port
         //
         DatagramSocket s = new DatagramSocket();
-        assertNotNull(DatagramSocketInstance.getFileDescriptor(s));
+        assertNotNull(Sockets.getFileDescriptor(s));
     }
 
 }