home *** CD-ROM | disk | FTP | other *** search
- package sun.rmi.transport.tcp;
-
- import java.io.DataInput;
- import java.io.DataOutput;
- import java.io.IOException;
- import java.io.Serializable;
- import java.net.InetAddress;
- import java.rmi.RemoteException;
- import java.rmi.server.LogStream;
- import java.rmi.server.ObjID;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import sun.rmi.transport.Channel;
- import sun.rmi.transport.Endpoint;
- import sun.rmi.transport.RMIThread;
- import sun.rmi.transport.Target;
- import sun.rmi.transport.Transport;
- import sun.rmi.transport.Utils;
-
- public class TCPEndpoint implements Endpoint, Serializable {
- private String host;
- private int port;
- private static Hashtable transportTable = new Hashtable(2);
- private static Pinger pinger;
- private static String localHost = Utils.getProperty("java.rmi.server.hostname");
- private static boolean localHostKnown = true;
- private static TCPEndpoint defaultEndpoint;
-
- public TCPEndpoint(String var1, int var2) {
- if (var1 == null) {
- var1 = "";
- }
-
- this.host = var1;
- this.port = var2;
- }
-
- public static TCPEndpoint getLocalEndpoint(int var0) {
- return var0 == 0 ? defaultEndpoint : new TCPEndpoint(localHost, var0);
- }
-
- static void setLocalHost(String var0) {
- if (!localHostKnown) {
- defaultEndpoint.host = var0;
- localHost = var0;
- localHostKnown = true;
- if (TCPTransport.logLevel >= 10) {
- LogStream.log("tcp").println("TCPEndpoint.setLocalHost: set local host to " + var0);
- }
- }
-
- }
-
- static void setDefaultPort(int var0) {
- if (defaultEndpoint.port == 0) {
- Hashtable var1 = transportTable;
- synchronized(var1){}
-
- try {
- Integer var3 = new Integer(defaultEndpoint.port);
- Transport var4 = (Transport)transportTable.get(var3);
- if (var4 != null) {
- transportTable.remove(var3);
- transportTable.put(new Integer(var0), var4);
- }
-
- defaultEndpoint.port = var0;
- if (TCPTransport.logLevel >= 10) {
- LogStream.log("tcp").println("TCPEndpoint.setDefaultPort: set default port to " + var0);
- }
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
- }
-
- public Transport getTransport() {
- return this.getTransport(false);
- }
-
- private Transport getTransport(boolean var1) {
- Object var2 = null;
- Hashtable var3 = transportTable;
- synchronized(var3){}
-
- try {
- if (var1) {
- Integer var5 = new Integer(this.port);
- var2 = (Transport)transportTable.get(var5);
- if (var2 == null) {
- var2 = new TCPTransport(this.port);
- transportTable.put(var5, var2);
- }
- } else {
- Integer var9 = new Integer(TCPTransport.DefaultPort);
- var2 = (Transport)transportTable.get(var9);
- if (var2 == null) {
- var2 = defaultEndpoint.getTransport(true);
- }
- }
- } catch (Throwable var7) {
- throw var7;
- }
-
- return (Transport)var2;
- }
-
- public void exportObject(ObjID var1, Target var2) throws RemoteException {
- Transport var3 = this.getTransport(true);
- var3.exportObject(var1, var2);
- Hashtable var4 = transportTable;
- synchronized(var4){}
-
- try {
- if (pinger == null) {
- pinger = new Pinger();
- Thread var6 = RMIThread.newThread(pinger, "Pinger", true);
- var6.start();
- }
- } catch (Throwable var8) {
- throw var8;
- }
-
- }
-
- public Channel getChannel() {
- Transport var1 = this.getTransport(false);
- return var1.getChannel(this);
- }
-
- public String getHost() {
- return this.host;
- }
-
- public int getPort() {
- return this.port;
- }
-
- public String toString() {
- return "[" + this.host + ":" + this.port + "]";
- }
-
- public int hashCode() {
- return this.port;
- }
-
- public boolean equals(Object var1) {
- if (var1 != null && var1 instanceof TCPEndpoint) {
- TCPEndpoint var2 = (TCPEndpoint)var1;
- return this.port == var2.port && this.host.equals(var2.host);
- } else {
- return false;
- }
- }
-
- public void write(DataOutput var1) throws IOException {
- var1.writeUTF(this.host);
- var1.writeInt(this.port);
- }
-
- public static TCPEndpoint read(DataInput var0) throws IOException {
- String var1 = var0.readUTF();
- int var2 = var0.readInt();
- return new TCPEndpoint(var1, var2);
- }
-
- static void ping() {
- Enumeration var0 = transportTable.elements();
-
- while(var0.hasMoreElements()) {
- TCPTransport var1 = (TCPTransport)var0.nextElement();
- var1.ping();
- }
-
- }
-
- static {
- if (localHost == null) {
- try {
- InetAddress var0;
- if (Utils.getLong("sun.rmi.transport.tcp.simulateApplet", 0L).intValue() >= 1) {
- var0 = InetAddress.getByName("");
- } else {
- var0 = InetAddress.getLocalHost();
- }
-
- byte[] var1 = var0.getAddress();
- if (var1[0] == 127 && var1[1] == 0 && var1[2] == 0 && var1[3] == 1) {
- localHostKnown = false;
- }
-
- localHost = var0.getHostName();
- } catch (Exception var2) {
- localHostKnown = false;
- localHost = null;
- }
- }
-
- if (TCPTransport.logLevel >= 10) {
- LogStream.log("tcp").println("TCPEndpoint.<clinit>: localHostKnown = " + localHostKnown + ", localHost = " + localHost);
- }
-
- defaultEndpoint = new TCPEndpoint(localHost, 0);
- }
- }
-