package com.limegroup.gnutella.dht.db;
import java.io.Serializable;
import java.util.Set;
import org.limewire.collection.BitNumbers;
import org.limewire.io.IpPort;
import org.limewire.mojito.db.DHTValue;
import org.limewire.mojito.routing.Contact;
import com.limegroup.gnutella.PushEndpoint;
/**
* The representation of a {@link PushEndpoint} in the DHT. This can also
* represent non-firewalled clients. In that case the publisher's address
* will match the single push proxy value in {@link #getPushProxies()}.
* <p>
* Does not contain external address information since it can be retrieved
* from the {@link Contact} that created the value. This should be passed on
* to the external address info of a {@link PushEndpoint} created from it.
* <p>
* Implementations should provide a value based {@link #equals(Object)} method.
*/
public interface PushProxiesValue extends DHTValue, Serializable {
/**
* The Client ID of the Gnutella Node.
*/
public byte[] getGUID();
/**
* The Port number of the Gnutella Node.
*/
public int getPort();
/**
* The supported features of the Gnutella Node.
*/
public byte getFeatures();
/**
* The version of the firewalls-to-firewall
* transfer protocol.
*/
public int getFwtVersion();
/**
* A Set of Push Proxies of the Gnutella Node.
*/
public Set<? extends IpPort> getPushProxies();
/**
* @return BitNumbers for TLS status of push proxies,
* or empty Bit numbers
*/
public BitNumbers getTLSInfo();
}