use of com.acgist.snail.pojo.ITaskSession in project snail by acgist.
the class TorrentProtocol method selectFiles.
/**
* <p>选择下载文件、设置文件大小</p>
*
* @throws DownloadException 下载异常
*/
private void selectFiles() throws DownloadException {
ITaskSession taskSession = null;
try {
taskSession = TaskSession.newInstance(this.taskEntity);
GuiContext.getInstance().multifile(taskSession);
} catch (DownloadException e) {
throw e;
} catch (Exception e) {
throw new DownloadException("选择下载文件错误", e);
}
if (taskSession.multifileSelected().isEmpty()) {
throw new DownloadException("没有选择下载文件");
}
}
use of com.acgist.snail.pojo.ITaskSession in project snail by acgist.
the class ProtocolContext method buildDownloader.
/**
* <p>新建下载器</p>
*
* @param taskSession 任务信息
*
* @return 下载器
*
* @throws DownloadException 下载异常
*/
public IDownloader buildDownloader(ITaskSession taskSession) throws DownloadException {
final var type = taskSession.getType();
final Optional<Protocol> optional = this.protocols.stream().filter(Protocol::available).filter(protocol -> protocol.type() == type).findFirst();
if (optional.isEmpty()) {
throw new DownloadException("不支持的下载类型:" + type);
}
final IDownloader downloader = optional.get().buildDownloader(taskSession);
if (downloader == null) {
throw new DownloadException("不支持的下载类型:" + type);
}
return downloader;
}
use of com.acgist.snail.pojo.ITaskSession in project snail by acgist.
the class TaskContextTest method testRefresh.
@Test
void testRefresh() throws DownloadException {
SnailBuilder.newBuilder().enableAllProtocol().buildSync();
final var taskContext = TaskContext.getInstance();
final ITaskSession taskSession = taskContext.download("1234567890123456789012345678901234567890");
assertNotNull(taskSession);
DownloadConfig.setSize(0);
taskContext.refresh();
DownloadConfig.setSize(4);
FileUtils.delete(taskSession.getFile());
taskSession.delete();
}
Aggregations