home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / rmi / transport / tcp / TCPEndpoint.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  5.0 KB  |  207 lines

  1. package sun.rmi.transport.tcp;
  2.  
  3. import java.io.DataInput;
  4. import java.io.DataOutput;
  5. import java.io.IOException;
  6. import java.io.Serializable;
  7. import java.net.InetAddress;
  8. import java.rmi.RemoteException;
  9. import java.rmi.server.LogStream;
  10. import java.rmi.server.ObjID;
  11. import java.util.Enumeration;
  12. import java.util.Hashtable;
  13. import sun.rmi.transport.Channel;
  14. import sun.rmi.transport.Endpoint;
  15. import sun.rmi.transport.RMIThread;
  16. import sun.rmi.transport.Target;
  17. import sun.rmi.transport.Transport;
  18. import sun.rmi.transport.Utils;
  19.  
  20. public class TCPEndpoint implements Endpoint, Serializable {
  21.    private String host;
  22.    private int port;
  23.    private static Hashtable transportTable = new Hashtable(2);
  24.    private static Pinger pinger;
  25.    private static String localHost = Utils.getProperty("java.rmi.server.hostname");
  26.    private static boolean localHostKnown = true;
  27.    private static TCPEndpoint defaultEndpoint;
  28.  
  29.    public TCPEndpoint(String var1, int var2) {
  30.       if (var1 == null) {
  31.          var1 = "";
  32.       }
  33.  
  34.       this.host = var1;
  35.       this.port = var2;
  36.    }
  37.  
  38.    public static TCPEndpoint getLocalEndpoint(int var0) {
  39.       return var0 == 0 ? defaultEndpoint : new TCPEndpoint(localHost, var0);
  40.    }
  41.  
  42.    static void setLocalHost(String var0) {
  43.       if (!localHostKnown) {
  44.          defaultEndpoint.host = var0;
  45.          localHost = var0;
  46.          localHostKnown = true;
  47.          if (TCPTransport.logLevel >= 10) {
  48.             LogStream.log("tcp").println("TCPEndpoint.setLocalHost: set local host to " + var0);
  49.          }
  50.       }
  51.  
  52.    }
  53.  
  54.    static void setDefaultPort(int var0) {
  55.       if (defaultEndpoint.port == 0) {
  56.          Hashtable var1 = transportTable;
  57.          synchronized(var1){}
  58.  
  59.          try {
  60.             Integer var3 = new Integer(defaultEndpoint.port);
  61.             Transport var4 = (Transport)transportTable.get(var3);
  62.             if (var4 != null) {
  63.                transportTable.remove(var3);
  64.                transportTable.put(new Integer(var0), var4);
  65.             }
  66.  
  67.             defaultEndpoint.port = var0;
  68.             if (TCPTransport.logLevel >= 10) {
  69.                LogStream.log("tcp").println("TCPEndpoint.setDefaultPort: set default port to " + var0);
  70.             }
  71.          } catch (Throwable var6) {
  72.             throw var6;
  73.          }
  74.  
  75.       }
  76.    }
  77.  
  78.    public Transport getTransport() {
  79.       return this.getTransport(false);
  80.    }
  81.  
  82.    private Transport getTransport(boolean var1) {
  83.       Object var2 = null;
  84.       Hashtable var3 = transportTable;
  85.       synchronized(var3){}
  86.  
  87.       try {
  88.          if (var1) {
  89.             Integer var5 = new Integer(this.port);
  90.             var2 = (Transport)transportTable.get(var5);
  91.             if (var2 == null) {
  92.                var2 = new TCPTransport(this.port);
  93.                transportTable.put(var5, var2);
  94.             }
  95.          } else {
  96.             Integer var9 = new Integer(TCPTransport.DefaultPort);
  97.             var2 = (Transport)transportTable.get(var9);
  98.             if (var2 == null) {
  99.                var2 = defaultEndpoint.getTransport(true);
  100.             }
  101.          }
  102.       } catch (Throwable var7) {
  103.          throw var7;
  104.       }
  105.  
  106.       return (Transport)var2;
  107.    }
  108.  
  109.    public void exportObject(ObjID var1, Target var2) throws RemoteException {
  110.       Transport var3 = this.getTransport(true);
  111.       var3.exportObject(var1, var2);
  112.       Hashtable var4 = transportTable;
  113.       synchronized(var4){}
  114.  
  115.       try {
  116.          if (pinger == null) {
  117.             pinger = new Pinger();
  118.             Thread var6 = RMIThread.newThread(pinger, "Pinger", true);
  119.             var6.start();
  120.          }
  121.       } catch (Throwable var8) {
  122.          throw var8;
  123.       }
  124.  
  125.    }
  126.  
  127.    public Channel getChannel() {
  128.       Transport var1 = this.getTransport(false);
  129.       return var1.getChannel(this);
  130.    }
  131.  
  132.    public String getHost() {
  133.       return this.host;
  134.    }
  135.  
  136.    public int getPort() {
  137.       return this.port;
  138.    }
  139.  
  140.    public String toString() {
  141.       return "[" + this.host + ":" + this.port + "]";
  142.    }
  143.  
  144.    public int hashCode() {
  145.       return this.port;
  146.    }
  147.  
  148.    public boolean equals(Object var1) {
  149.       if (var1 != null && var1 instanceof TCPEndpoint) {
  150.          TCPEndpoint var2 = (TCPEndpoint)var1;
  151.          return this.port == var2.port && this.host.equals(var2.host);
  152.       } else {
  153.          return false;
  154.       }
  155.    }
  156.  
  157.    public void write(DataOutput var1) throws IOException {
  158.       var1.writeUTF(this.host);
  159.       var1.writeInt(this.port);
  160.    }
  161.  
  162.    public static TCPEndpoint read(DataInput var0) throws IOException {
  163.       String var1 = var0.readUTF();
  164.       int var2 = var0.readInt();
  165.       return new TCPEndpoint(var1, var2);
  166.    }
  167.  
  168.    static void ping() {
  169.       Enumeration var0 = transportTable.elements();
  170.  
  171.       while(var0.hasMoreElements()) {
  172.          TCPTransport var1 = (TCPTransport)var0.nextElement();
  173.          var1.ping();
  174.       }
  175.  
  176.    }
  177.  
  178.    static {
  179.       if (localHost == null) {
  180.          try {
  181.             InetAddress var0;
  182.             if (Utils.getLong("sun.rmi.transport.tcp.simulateApplet", 0L).intValue() >= 1) {
  183.                var0 = InetAddress.getByName("");
  184.             } else {
  185.                var0 = InetAddress.getLocalHost();
  186.             }
  187.  
  188.             byte[] var1 = var0.getAddress();
  189.             if (var1[0] == 127 && var1[1] == 0 && var1[2] == 0 && var1[3] == 1) {
  190.                localHostKnown = false;
  191.             }
  192.  
  193.             localHost = var0.getHostName();
  194.          } catch (Exception var2) {
  195.             localHostKnown = false;
  196.             localHost = null;
  197.          }
  198.       }
  199.  
  200.       if (TCPTransport.logLevel >= 10) {
  201.          LogStream.log("tcp").println("TCPEndpoint.<clinit>: localHostKnown = " + localHostKnown + ", localHost = " + localHost);
  202.       }
  203.  
  204.       defaultEndpoint = new TCPEndpoint(localHost, 0);
  205.    }
  206. }
  207.