home *** CD-ROM | disk | FTP | other *** search
- package java.rmi.dgc;
-
- import java.io.ByteArrayOutputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.io.Serializable;
- import java.rmi.server.UID;
- import java.security.AccessController;
- import java.security.DigestOutputStream;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
-
- public final class VMID implements Serializable {
- private static byte[] localAddr = computeAddressHash();
- private byte[] addr;
- private UID uid;
- private static final long serialVersionUID = -538642295484486218L;
-
- public VMID() {
- this.addr = localAddr;
- this.uid = new UID();
- }
-
- public static boolean isUnique() {
- return true;
- }
-
- public int hashCode() {
- return this.uid.hashCode();
- }
-
- public boolean equals(Object var1) {
- if (!(var1 instanceof VMID)) {
- return false;
- } else {
- VMID var2 = (VMID)var1;
- if (!this.uid.equals(var2.uid)) {
- return false;
- } else if (this.addr == null ^ var2.addr == null) {
- return false;
- } else {
- if (this.addr != null) {
- if (this.addr.length != var2.addr.length) {
- return false;
- }
-
- for(int var3 = 0; var3 < this.addr.length; ++var3) {
- if (this.addr[var3] != var2.addr[var3]) {
- return false;
- }
- }
- }
-
- return true;
- }
- }
- }
-
- public String toString() {
- StringBuffer var1 = new StringBuffer();
- if (this.addr != null) {
- for(int var2 = 0; var2 < this.addr.length; ++var2) {
- int var3 = this.addr[var2] & 255;
- var1.append((var3 < 16 ? "0" : "") + Integer.toString(var3, 16));
- }
- }
-
- var1.append(':');
- var1.append(this.uid.toString());
- return var1.toString();
- }
-
- private static byte[] computeAddressHash() {
- byte[] var0 = (byte[])AccessController.doPrivileged(new 1());
-
- byte[] var1;
- try {
- MessageDigest var3 = MessageDigest.getInstance("SHA");
- ByteArrayOutputStream var4 = new ByteArrayOutputStream(64);
- DataOutputStream var5 = new DataOutputStream(new DigestOutputStream(var4, var3));
- var5.write(var0, 0, var0.length);
- var5.flush();
- byte[] var6 = var3.digest();
- int var7 = Math.min(8, var6.length);
- var1 = new byte[var7];
- System.arraycopy(var6, 0, var1, 0, var7);
- } catch (IOException var8) {
- var1 = new byte[0];
- } catch (NoSuchAlgorithmException var9) {
- throw new InternalError(((Throwable)var9).toString());
- }
-
- return var1;
- }
- }
-