예제 #1
0
 public void AddTask(FileTask task)
 {
     lock (this.FileTasks)
     {
         if (_need_clear)
         {
             FileTasks.Clear();
             CurrentTaskIndex = 0;
             PrevBytesAddup   = 0;
             TotalLength      = 0;
             CurrentLength    = 0;
             CurrentFinished  = 0;
             _need_clear      = false;
         }
         FileTasks.Add(task);
         TotalLength += task.Length;
         Logger.Log("<FiletaskRecord> call AddTask : " + task.ToString(), LogLevel.Debug);
     }
 }
예제 #2
0
 public void InsertTask(int index, FileTask task)
 {
     lock (this.FileTasks)
     {
         this.FileTasks.Insert(index, task);
         TotalLength += task.Length;
         Logger.Log("<FiletaskRecord> call InsertTask " + index.ToString() + " : " + task.ToString(), LogLevel.Debug);
     }
 }
예제 #3
0
 /// <summary>
 /// 启动 File 传输任务,根据当前 FileTask 任务区分传输模式,并阻塞直到所有子线程完成后,
 ///    将 currentTaskIndex 指向下个 task,返回
 /// 当前任务为 小文件 则启用单线程传输
 /// 当前任务为 大文件 则启用多线程传输
 /// </summary>
 private void TransferSingleTask(FileTask task)
 {
     Logger.Log(string.Format("<FileTaskManager> call TransferSingleTask, {0, 20}{1}", "", task.ToString()), LogLevel.Debug);
     if (task.Type == TransferType.Download)
     {
         task.Status = FileTaskStatus.Downloading;
     }
     else if (task.Type == TransferType.Upload)
     {
         task.Status = FileTaskStatus.Uploading;
     }
     if (task.Length <= Config.SmallFileThreshold)
     {
         TransferSingleTaskSmallFile(task, task.Type);
     }
     else
     {
         TransferSingleTaskBigFile(task);
     }
 }