package com.limegroup.gnutella;
import java.util.Arrays;
/**
* Simple representation of a remote host.
*/
public class RemoteHostData {
/**
* The host's address.
*/
private final String _host;
/**
* The host's port.
*/
private final int _port;
/**
* The host's clientGUID.
*/
private final byte[] _clientGUID;
/**
* The cached hashCode.
*/
private volatile int _hashcode = 0;
/**
* Constructs a new RemoteHostData with the specified host, port & guid.
*/
public RemoteHostData(String host, int port, byte[] guid) {
_host = host;
_port = port;
_clientGUID = (byte[]) guid.clone();
}
//////accessors
public String getHost() {
return _host;
}
public int getPort() {
return _port;
}
public byte[] getClientGUID() {
return _clientGUID;
}
//////////////////hashtable methods///////////////
public boolean equals(Object o) {
if(this == o)
return true;
RemoteHostData other = (RemoteHostData)o;//dont catch ClassCastException
return (_host.equals(other._host) &&
_port==other._port &&
Arrays.equals(_clientGUID, other._clientGUID) );
}
public int hashCode() {
if(_hashcode == 0) {
int result = 17;
result = (37* result)+_host.hashCode();
result = (37* result)+_port;
for(int i=0; i < _clientGUID.length; i++)
result = (37* result)+_clientGUID[i];
_hashcode = result;
}
return _hashcode;
}
}