package com.limegroup.gnutella.downloader;
import java.io.File;
import org.limewire.io.GUID;
import org.limewire.io.InvalidDataException;
import org.limewire.listener.ListenerSupport;
import com.limegroup.gnutella.Downloader;
import com.limegroup.gnutella.URN;
import com.limegroup.gnutella.downloader.serial.DownloadMemento;
/**
* Extends the {@link Downloader} interface to provide more functionality,
* allowing the download to be more tightly managed.
*/
public interface CoreDownloader extends Downloader, ListenerSupport<DownloadStateEvent> {
/**
* Sets the inactive priority of this download.
*/
public void setInactivePriority(int priority);
/**
* Returns the guid that was used for query from which this download was
* triggered, or null.
*/
public GUID getQueryGUID();
/**
* Starts the download.
*/
public void startDownload();
/**
* @return whether the download is still alive and cannot be restarted.
*/
public boolean isAlive();
/**
* @return whether it makes sense to restart this download.
*/
public boolean shouldBeRestarted();
/**
* @return whether the download should be removed from the waiting list.
*/
public boolean shouldBeRemoved();
/**
* Handles state changes and other operations while inactive.
*/
public void handleInactivity();
public boolean isQueuable();
/**
* Cleans up any resources before this downloader is completely disposed.
*/
public void finish();
public boolean conflicts(URN urn, long fileSize, File... files);
public boolean conflictsWithIncompleteFile(File incomplete);
public boolean conflictsSaveFile(File saveFile);
public void initialize();
/**
* Returns the type of download.
*/
public DownloaderType getDownloadType();
/** Constructs a memento that will be used for serialization. */
DownloadMemento toMemento();
/**
* Initializes this object from the given memento.
*
* @throws InvalidDataException if the memento contains invalid data.
*/
void initFromMemento(DownloadMemento memento) throws InvalidDataException;
/**
* Indicator of whether this downloader supports a memento or not.
*/
public boolean isMementoSupported();
}