package com.limegroup.gnutella; import java.util.Set; import org.limewire.io.GUID; import org.limewire.io.IpPort; import com.limegroup.gnutella.dht.db.PushEndpointService; public interface PushEndpointCache extends PushEndpointService { void clear(); /** * Should only be used internally by {@link PushEndpoint} implementations. * <p> * For retrieving a value from the cache use {@link #getPushEndpoint()}. * </p> */ PushEndpoint getCached(GUID guid); /** * Overwrites the current known push proxies for the host specified * by the GUID, using the the proxies as written in the httpString. * * @param guid the guid whose proxies to overwrite * @param httpString comma-separated list of proxies and possible proxy features */ public void overwriteProxies(byte [] guid, String httpString); /** * Overwrites any stored proxies for the host specified by the guid. * * @param guid the guid whose proxies to overwrite * @param newSet the proxies to overwrite with */ /** * Sets a new set of proxies overwriting the exiting one. */ public void overwriteProxies(byte[] guid, Set<? extends IpPort> newSet); /** * updates the external address of all PushEndpoints for the given guid */ public void setAddr(byte [] guid, IpPort addr); /** * Sets the fwt version supported for all PEs pointing to the * given client guid. */ public void setFWTVersionSupported(byte[] guid, int version); /** * Adds or removes the given set of ip ports depending on <code>valid</code>. * * @param valid if false removes <code>proxies</code> otherwise adds them * * @return the guid of the push endpoint a client should hold onto to keep * the values in the cache */ public GUID updateProxiesFor(GUID guid, PushEndpoint pushEndpoint, boolean valid); /** * Removes the push proxies from the set of push proxies of the push endpoint * in the cache. * @param bytes the bytes of the guid of the push endpoint * @param pushProxy the push proxy to remove */ void removePushProxy(byte[] bytes, IpPort pushProxy); }