summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/Network.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2013-04-11 16:06:49 -0700
committerMark Spruiell <mes@zeroc.com>2013-04-11 16:06:49 -0700
commit5b0880e399cffc38f83f7a610ef68d4c6af65b2d (patch)
treeb7bd2e8a67e779ab8578ba06c30b1ae9d31a898e /java/src/IceInternal/Network.java
parentFixed (ICE-5327) - Using completed or sent as variable names causes badness (diff)
downloadice-5b0880e399cffc38f83f7a610ef68d4c6af65b2d.tar.bz2
ice-5b0880e399cffc38f83f7a610ef68d4c6af65b2d.tar.xz
ice-5b0880e399cffc38f83f7a610ef68d4c6af65b2d.zip
SOCKS support for Java
Diffstat (limited to 'java/src/IceInternal/Network.java')
-rw-r--r--java/src/IceInternal/Network.java77
1 files changed, 72 insertions, 5 deletions
diff --git a/java/src/IceInternal/Network.java b/java/src/IceInternal/Network.java
index c406ef7b893..e37abd25c75 100644
--- a/java/src/IceInternal/Network.java
+++ b/java/src/IceInternal/Network.java
@@ -1041,6 +1041,41 @@ public final class Network
}
public static String
+ fdToString(java.nio.channels.SelectableChannel fd, NetworkProxy proxy, java.net.InetSocketAddress target)
+ {
+ if(fd == null)
+ {
+ return "<closed>";
+ }
+
+ java.net.InetAddress localAddr = null, remoteAddr = null;
+ int localPort = -1, remotePort = -1;
+
+ if(fd instanceof java.nio.channels.SocketChannel)
+ {
+ java.net.Socket socket = ((java.nio.channels.SocketChannel)fd).socket();
+ localAddr = socket.getLocalAddress();
+ localPort = socket.getLocalPort();
+ remoteAddr = socket.getInetAddress();
+ remotePort = socket.getPort();
+ }
+ else if(fd instanceof java.nio.channels.DatagramChannel)
+ {
+ java.net.DatagramSocket socket = ((java.nio.channels.DatagramChannel)fd).socket();
+ localAddr = socket.getLocalAddress();
+ localPort = socket.getLocalPort();
+ remoteAddr = socket.getInetAddress();
+ remotePort = socket.getPort();
+ }
+ else
+ {
+ assert(false);
+ }
+
+ return addressesToString(localAddr, localPort, remoteAddr, remotePort, proxy, target);
+ }
+
+ public static String
fdToString(java.nio.channels.SelectableChannel fd)
{
if(fd == null)
@@ -1092,25 +1127,57 @@ public final class Network
}
public static String
- addressesToString(java.net.InetAddress localAddr, int localPort, java.net.InetAddress remoteAddr, int remotePort)
+ addressesToString(java.net.InetAddress localAddr, int localPort, java.net.InetAddress remoteAddr, int remotePort,
+ NetworkProxy proxy, java.net.InetSocketAddress target)
{
StringBuilder s = new StringBuilder(128);
s.append("local address = ");
s.append(addrToString(localAddr, localPort));
- if(remoteAddr == null)
+
+ if(proxy != null)
{
- s.append("\nremote address = <not connected>");
+ if(remoteAddr == null)
+ {
+ java.net.InetSocketAddress addr = proxy.getAddress();
+ remoteAddr = addr.getAddress();
+ remotePort = addr.getPort();
+ }
+ s.append("\n");
+ s.append(proxy.getName());
+ s.append(" proxy address = ");
+ s.append(addrToString(remoteAddr, remotePort));
+ s.append("\nremote address = ");
+ s.append(addrToString(target.getAddress(), target.getPort()));
}
else
{
- s.append("\nremote address = ");
- s.append(addrToString(remoteAddr, remotePort));
+ if(remoteAddr == null && target != null)
+ {
+ remoteAddr = target.getAddress();
+ remotePort = target.getPort();
+ }
+
+ if(remoteAddr == null)
+ {
+ s.append("\nremote address = <not connected>");
+ }
+ else
+ {
+ s.append("\nremote address = ");
+ s.append(addrToString(remoteAddr, remotePort));
+ }
}
return s.toString();
}
public static String
+ addressesToString(java.net.InetAddress localAddr, int localPort, java.net.InetAddress remoteAddr, int remotePort)
+ {
+ return addressesToString(localAddr, localPort, remoteAddr, remotePort, null, null);
+ }
+
+ public static String
addrToString(java.net.InetSocketAddress addr)
{
StringBuilder s = new StringBuilder(128);