home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / rmi / dgc / VMID.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.2 KB  |  96 lines

  1. package java.rmi.dgc;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.DataOutputStream;
  5. import java.io.IOException;
  6. import java.io.Serializable;
  7. import java.rmi.server.UID;
  8. import java.security.AccessController;
  9. import java.security.DigestOutputStream;
  10. import java.security.MessageDigest;
  11. import java.security.NoSuchAlgorithmException;
  12.  
  13. public final class VMID implements Serializable {
  14.    private static byte[] localAddr = computeAddressHash();
  15.    private byte[] addr;
  16.    private UID uid;
  17.    private static final long serialVersionUID = -538642295484486218L;
  18.  
  19.    public VMID() {
  20.       this.addr = localAddr;
  21.       this.uid = new UID();
  22.    }
  23.  
  24.    public static boolean isUnique() {
  25.       return true;
  26.    }
  27.  
  28.    public int hashCode() {
  29.       return this.uid.hashCode();
  30.    }
  31.  
  32.    public boolean equals(Object var1) {
  33.       if (!(var1 instanceof VMID)) {
  34.          return false;
  35.       } else {
  36.          VMID var2 = (VMID)var1;
  37.          if (!this.uid.equals(var2.uid)) {
  38.             return false;
  39.          } else if (this.addr == null ^ var2.addr == null) {
  40.             return false;
  41.          } else {
  42.             if (this.addr != null) {
  43.                if (this.addr.length != var2.addr.length) {
  44.                   return false;
  45.                }
  46.  
  47.                for(int var3 = 0; var3 < this.addr.length; ++var3) {
  48.                   if (this.addr[var3] != var2.addr[var3]) {
  49.                      return false;
  50.                   }
  51.                }
  52.             }
  53.  
  54.             return true;
  55.          }
  56.       }
  57.    }
  58.  
  59.    public String toString() {
  60.       StringBuffer var1 = new StringBuffer();
  61.       if (this.addr != null) {
  62.          for(int var2 = 0; var2 < this.addr.length; ++var2) {
  63.             int var3 = this.addr[var2] & 255;
  64.             var1.append((var3 < 16 ? "0" : "") + Integer.toString(var3, 16));
  65.          }
  66.       }
  67.  
  68.       var1.append(':');
  69.       var1.append(this.uid.toString());
  70.       return var1.toString();
  71.    }
  72.  
  73.    private static byte[] computeAddressHash() {
  74.       byte[] var0 = (byte[])AccessController.doPrivileged(new 1());
  75.  
  76.       byte[] var1;
  77.       try {
  78.          MessageDigest var3 = MessageDigest.getInstance("SHA");
  79.          ByteArrayOutputStream var4 = new ByteArrayOutputStream(64);
  80.          DataOutputStream var5 = new DataOutputStream(new DigestOutputStream(var4, var3));
  81.          var5.write(var0, 0, var0.length);
  82.          var5.flush();
  83.          byte[] var6 = var3.digest();
  84.          int var7 = Math.min(8, var6.length);
  85.          var1 = new byte[var7];
  86.          System.arraycopy(var6, 0, var1, 0, var7);
  87.       } catch (IOException var8) {
  88.          var1 = new byte[0];
  89.       } catch (NoSuchAlgorithmException var9) {
  90.          throw new InternalError(((Throwable)var9).toString());
  91.       }
  92.  
  93.       return var1;
  94.    }
  95. }
  96.