package com.limegroup.gnutella;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.Set;
import org.limewire.io.IpPort;
import com.limegroup.gnutella.messages.BadPacketException;
public interface PushEndpointFactory {
/** Gets the endpoint for the self. */
public PushEndpoint createForSelf();
/**
* creates a PushEndpoint without any proxies.
* not very useful but can happen.
*/
public PushEndpoint createPushEndpoint(byte[] guid);
/**
* @param guid the client guid
* @param proxies the push proxies for that host, can be empty, see {@link IpPort#EMPTY_SET}.
*/
public PushEndpoint createPushEndpoint(byte[] guid, Set<? extends IpPort> proxies);
/**
* @param guid the client guid
* @param proxies the push proxies for that host
*/
public PushEndpoint createPushEndpoint(byte[] guid, Set<? extends IpPort> proxies, byte features, int version);
/**
* @param guid the client guid
* @param proxies the push proxies for that host
*/
public PushEndpoint createPushEndpoint(byte[] guid, Set<? extends IpPort> proxies, byte features, int version, IpPort addr);
/**
* creates a PushEndpoint from a String passed in http header exchange.
*/
public PushEndpoint createPushEndpoint(String httpString) throws IOException;
/**
* Constructs a PushEndpoint from binary representation and also updates all
* other cached {@link PushEndpoint} instances that are cached with the
* set of read proxies.
*/
public PushEndpoint createFromBytes(DataInputStream dais) throws BadPacketException, IOException;
}