package org.limewire.net; import org.limewire.io.Connectable; import org.limewire.io.GUID; import org.limewire.io.NetworkUtils; import org.limewire.util.Objects; import org.limewire.util.StringUtils; /** * The data that is sent with a push request over a FriendConnection. */ public class ConnectBackRequest { private final Connectable address; private final GUID clientGuid; private final int supportedFWTVersion; private int hashCode = -1; /** * @param address must be public and have a valid port */ public ConnectBackRequest(Connectable address, GUID clientGuid, int supportedFWTVersion) { this.address = Objects.nonNull(address, "address"); this.clientGuid = Objects.nonNull(clientGuid, "clientGuid"); this.supportedFWTVersion = supportedFWTVersion; if (!NetworkUtils.isValidIpPort(address)) { throw new IllegalArgumentException("invalid address: " + address); } } public Connectable getAddress() { return address; } public GUID getClientGuid() { return clientGuid; } public int getSupportedFWTVersion() { return supportedFWTVersion; } @Override public String toString() { return StringUtils.toString(this); } @Override public boolean equals(Object obj) { if (obj instanceof ConnectBackRequest) { ConnectBackRequest other = (ConnectBackRequest)obj; return address.equals(other.address) && clientGuid.equals(other.clientGuid) && supportedFWTVersion == other.supportedFWTVersion; } return false; } @Override public int hashCode() { int hash = hashCode; if (hash == -1) { hash = address.hashCode(); hash = hash * 31 + clientGuid.hashCode(); hash = hash * 31 + supportedFWTVersion; hashCode = hash; } return hash; } }