Merge pull request #633 from DaveBoy/aria
组合下载子任务失败Exception为空,单个任务下载失败后最终组任务回调stop/fail开关设置
This commit is contained in:
@@ -31,6 +31,11 @@ public class DGroupConfig extends BaseTaskConfig implements Serializable {
|
||||
*/
|
||||
int subMaxTaskNum = 3;
|
||||
|
||||
/**
|
||||
* 子任务失败时回调stop,默认true
|
||||
*/
|
||||
private boolean subFailAsStop = true;
|
||||
|
||||
/**
|
||||
* 子任务重试次数,默认为5
|
||||
*/
|
||||
@@ -118,4 +123,14 @@ public class DGroupConfig extends BaseTaskConfig implements Serializable {
|
||||
save();
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isSubFailAsStop() {
|
||||
return subFailAsStop;
|
||||
}
|
||||
|
||||
public DGroupConfig setSubFailAsStop(boolean subFailAsStop) {
|
||||
this.subFailAsStop = subFailAsStop;
|
||||
save();
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -144,6 +144,10 @@ public class XMLReader extends DefaultHandler {
|
||||
int subMaxTaskNum = checkInt(value) ? Integer.parseInt(value) : 3;
|
||||
setField("subMaxTaskNum", subMaxTaskNum, ConfigType.D_GROUP);
|
||||
break;
|
||||
case "subFailAsStop": // 子任务失败时回调stop
|
||||
setField("subFailAsStop", checkBoolean(value) ? Boolean.valueOf(value) : false,
|
||||
ConfigType.D_GROUP);
|
||||
break;
|
||||
case "subReTryNum": // 子任务重试次数
|
||||
int subReTryNum = checkInt(value) ? Integer.parseInt(value) : 5;
|
||||
setField("subReTryNum", subReTryNum, ConfigType.D_GROUP);
|
||||
|
||||
@@ -184,6 +184,9 @@ final class SimpleSchedulers implements Handler.Callback {
|
||||
== mGState.getSubSize()) {
|
||||
if (mGState.getStopNum() == 0 && mGState.getFailNum() == 0) {
|
||||
mGState.listener.onComplete();
|
||||
} else if(mGState.getStopNum() == 0&&!Configuration.getInstance().dGroupCfg.isSubFailAsStop() ){
|
||||
mGState.listener.onFail(false, new AriaException(TAG,
|
||||
String.format("任务组【%s】下载失败", mGState.getGroupHash())));
|
||||
} else {
|
||||
mGState.listener.onStop(mGState.getProgress());
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.arialyy.aria.util.CommonUtil;
|
||||
import com.arialyy.aria.util.ErrorHelp;
|
||||
import com.arialyy.aria.util.RecordUtil;
|
||||
|
||||
import static com.arialyy.aria.core.task.AbsTask.ERROR_INFO_KEY;
|
||||
|
||||
/**
|
||||
* Created by Aria.Lao on 2017/7/20. 任务组下载事件
|
||||
*/
|
||||
@@ -85,6 +87,7 @@ public class DownloadGroupListener
|
||||
handleSubSpeed(subEntity, 0);
|
||||
saveSubState(IEntity.STATE_FAIL, subEntity);
|
||||
saveCurrentLocation();
|
||||
mSeedEntity.groupTask.putExpand(ERROR_INFO_KEY,e);
|
||||
sendInState2Target(ISchedulers.SUB_FAIL, subEntity);
|
||||
if (e != null) {
|
||||
e.printStackTrace();
|
||||
|
||||
@@ -107,8 +107,8 @@ public class DbDataHelper {
|
||||
int lastIndex = url.lastIndexOf(File.separator);
|
||||
//去除url末尾携带的的参数
|
||||
int endIndex = url.lastIndexOf("?");
|
||||
if(endIndex<0)endIndex=url.length();
|
||||
|
||||
if(endIndex<0||endIndex<lastIndex)endIndex=url.length();
|
||||
entity.setFileName(url.substring(lastIndex + 1,endIndex));
|
||||
entity.setGroupHash(groupHash);
|
||||
entity.setGroupChild(true);
|
||||
|
||||
Reference in New Issue
Block a user