package com.limegroup.gnutella; import java.util.Collections; import java.util.List; import org.apache.http.auth.Credentials; import org.limewire.io.Address; import org.limewire.security.SecureMessage.Status; import com.limegroup.gnutella.downloader.serial.RemoteHostMemento; /** * A reference to a single file on a remote machine. In this respect * RemoteFileDesc is similar to a URL, but it contains Gnutella- * specific data as well, such as the server's 16-byte GUID.<p> */ public interface RemoteFileDesc extends RemoteFileDetails { /** bogus IP we assign to RFDs whose real ip is unknown */ public static final String BOGUS_IP = "1.1.1.1"; /** Typed reference to an empty list of RemoteFileDescs. */ public static final List<RemoteFileDesc> EMPTY_LIST = Collections.emptyList(); /** * @return whether this rfd points to myself. */ public boolean isMe(byte[] myClientGUID); /** * Determines whether or not this RemoteFileDesc was created * from an alternate location. */ public boolean isFromAlternateLocation(); /** * Returns the url encoded HTTP request path. */ public String getUrlPath(); /** * Returns credentials needed for downloading this file from the remote * side * @return null if no credentials are needed */ public Credentials getCredentials(); /** * @return true if I am not a multicast host and have a hash. * also, if I am firewalled I must have at least one push proxy, * otherwise my port and address need to be valid. */ public boolean isAltLocCapable(); public void setSpamRating(float rating); public float getSpamRating(); public Status getSecureStatus(); public void setSecureStatus(Status secureStatus); /** * Returns a memento that can be used for serializing this object. */ public RemoteHostMemento toMemento(); public boolean isSpam(); public Address getAddress(); }