package com.limegroup.gnutella;
import java.io.File;
import java.util.List;
import org.limewire.core.api.download.DownloadException;
import org.limewire.io.GUID;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.limegroup.gnutella.browser.MagnetOptions;
import com.limegroup.gnutella.downloader.CantResumeException;
@Singleton
public class DownloadServicesImpl implements DownloadServices {
private final Provider<DownloadManager> downloadManager;
@Inject
public DownloadServicesImpl(Provider<DownloadManager> downloadManager) {
this.downloadManager = downloadManager;
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#download(java.io.File)
*/
public Downloader download(File incompleteFile)
throws CantResumeException, DownloadException {
return downloadManager.get().download(incompleteFile);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#download(com.limegroup.gnutella.browser.MagnetOptions, boolean, java.io.File, java.lang.String)
*/
public Downloader download(MagnetOptions magnet, boolean overwrite,
File saveDir, String fileName) throws DownloadException {
return downloadManager.get().download(magnet, overwrite, saveDir, fileName);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#download(com.limegroup.gnutella.browser.MagnetOptions, boolean)
*/
public Downloader download(MagnetOptions magnet, boolean overwrite)
throws DownloadException {
if (!magnet.isGnutellaDownloadable()) {
throw new IllegalArgumentException("invalid magnet: not have enough information for downloading");
}
return downloadManager.get().download(magnet, overwrite, null, magnet.getDisplayName());
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#download(com.limegroup.gnutella.RemoteFileDesc[], boolean, com.limegroup.gnutella.GUID)
*/
public Downloader download(RemoteFileDesc[] files,
boolean overwrite, GUID queryGUID)
throws DownloadException {
return download(files, queryGUID, overwrite, null, null);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#download(com.limegroup.gnutella.RemoteFileDesc[], com.limegroup.gnutella.GUID, boolean, java.io.File, java.lang.String)
*/
public Downloader download(RemoteFileDesc[] files,
GUID queryGUID,
boolean overwrite, File saveDir, String fileName)
throws DownloadException {
return download(files, RemoteFileDesc.EMPTY_LIST, queryGUID,
overwrite, saveDir, fileName);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#download(com.limegroup.gnutella.RemoteFileDesc[], java.util.List, com.limegroup.gnutella.GUID, boolean)
*/
public Downloader download(RemoteFileDesc[] files,
List<? extends RemoteFileDesc> alts,
GUID queryGUID,
boolean overwrite)
throws DownloadException {
return download(files, alts, queryGUID, overwrite, null, null);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#download(com.limegroup.gnutella.RemoteFileDesc[], java.util.List, com.limegroup.gnutella.GUID, boolean, java.io.File, java.lang.String)
*/
public Downloader download(RemoteFileDesc[] files,
List<? extends RemoteFileDesc> alts, GUID queryGUID,
boolean overwrite, File saveDir,
String fileName)
throws DownloadException {
return downloadManager.get().download(files, alts, queryGUID, overwrite, saveDir,
fileName);
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#getNumActiveDownloads()
*/
public int getNumActiveDownloads() {
return downloadManager.get().getNumActiveDownloads();
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.DownloadServices#getNumDownloads()
*/
public int getNumDownloads() {
return downloadManager.get().downloadsInProgress();
}
public boolean hasActiveDownloads() {
downloadManager.get().measureBandwidth();
return downloadManager.get().getMeasuredBandwidth() != 0;
}
}