package zlc.season.rxdownload2.entity; import java.util.Map; import java.util.concurrent.Semaphore; import io.reactivex.processors.FlowableProcessor; import zlc.season.rxdownload2.RxDownload; import zlc.season.rxdownload2.db.DataBaseHelper; /** * Author: Season(ssseasonnn@gmail.com) * Date: 2016/11/18 * Time: 11:38 * <p> * Represents a download task */ public abstract class DownloadMission { protected RxDownload rxdownload; FlowableProcessor<DownloadEvent> processor; private boolean canceled = false; private boolean completed = false; DownloadMission(RxDownload rxdownload) { this.rxdownload = rxdownload; } public boolean isCanceled() { return canceled; } public void setCanceled(boolean canceled) { this.canceled = canceled; } public boolean isCompleted() { return completed; } public void setCompleted(boolean completed) { this.completed = completed; } public abstract String getUrl(); public abstract void init(Map<String, DownloadMission> missionMap, Map<String, FlowableProcessor<DownloadEvent>> processorMap); public abstract void insertOrUpdate(DataBaseHelper dataBaseHelper); public abstract void start(final Semaphore semaphore) throws InterruptedException; public abstract void pause(DataBaseHelper dataBaseHelper); public abstract void delete(DataBaseHelper dataBaseHelper, boolean deleteFile); public abstract void sendWaitingEvent(DataBaseHelper dataBaseHelper); }