sftp 下载实现

使用零拷贝技术优化合并分块的功能
This commit is contained in:
laoyuyu
2020-01-15 20:28:10 +08:00
parent 6f53235807
commit 50b265f22a
37 changed files with 934 additions and 257 deletions

View File

@@ -15,6 +15,7 @@
*/
package com.arialyy.aria.ftp;
import android.text.TextUtils;
import aria.apache.commons.net.ftp.FTPClientConfig;
import com.arialyy.aria.core.FtpUrlEntity;
import com.arialyy.aria.core.common.FtpConnectionMode;
@@ -172,7 +173,7 @@ public final class FtpTaskOption implements ITaskOption {
}
public String getCharSet() {
return charSet;
return TextUtils.isEmpty(charSet) ? "UTF-8" : charSet;
}
public void setCharSet(String charSet) {

View File

@@ -22,6 +22,7 @@ import com.arialyy.aria.core.common.RecordHelper;
import com.arialyy.aria.core.config.Configuration;
import com.arialyy.aria.core.download.DTaskWrapper;
import com.arialyy.aria.core.loader.IRecordHandler;
import com.arialyy.aria.core.wrapper.ITaskWrapper;
import com.arialyy.aria.util.RecordUtil;
import java.util.ArrayList;
@@ -58,7 +59,7 @@ public final class FtpDRecordHandler extends RecordHandler {
tr.threadId = threadId;
tr.startLocation = startL;
tr.isComplete = false;
tr.threadType = getWrapper().getEntity().getTaskType();
tr.threadType = record.taskType;
//最后一个线程的结束位置即为文件的总长度
if (threadId == (record.threadNum - 1)) {
endL = getFileSize();
@@ -75,7 +76,7 @@ public final class FtpDRecordHandler extends RecordHandler {
record.threadRecords = new ArrayList<>();
record.threadNum = threadNum;
record.isBlock = Configuration.getInstance().downloadCfg.isUseBlock();
record.taskType = getWrapper().getEntity().getTaskType();
record.taskType = getWrapper().getRequestType();
record.isGroupRecord = false;
return record;

View File

@@ -20,6 +20,7 @@ import com.arialyy.aria.core.TaskRecord;
import com.arialyy.aria.core.ThreadRecord;
import com.arialyy.aria.core.common.RecordHandler;
import com.arialyy.aria.core.upload.UTaskWrapper;
import com.arialyy.aria.core.wrapper.ITaskWrapper;
import com.arialyy.aria.util.ALog;
import com.arialyy.aria.util.RecordUtil;
import java.util.ArrayList;
@@ -87,7 +88,7 @@ final class FtpURecordHandler extends RecordHandler {
tr.threadId = threadId;
tr.startLocation = startL;
tr.isComplete = false;
tr.threadType = getWrapper().getEntity().getTaskType();
tr.threadType = record.taskType;
tr.endLocation = getFileSize();
tr.blockLen = RecordUtil.getBlockLen(getFileSize(), threadId, record.threadNum);
return tr;
@@ -100,7 +101,7 @@ final class FtpURecordHandler extends RecordHandler {
record.threadRecords = new ArrayList<>();
record.threadNum = threadNum;
record.isBlock = false;
record.taskType = getWrapper().getEntity().getTaskType();
record.taskType = getWrapper().getRequestType();
record.isGroupRecord = getEntity().isGroupChild();
return record;