void DownloadThread() { try { mLog.Info("Download thread id:[{0}]", Thread.CurrentThread.ManagedThreadId.ToString()); DownloadSubTask subTask = this.mTask.GetSubTask(); while (subTask != null) { byte[] data = HttpDownloadRange.Download(subTask.RemotePath, subTask.from, subTask.to); if (data == null) { mLog.Error("An error has occurred in the dowmload thread,error:noknown."); break; } subTask.data = data; var b = this.mTask.UpdateTaskState(subTask, 2); if (b) { mLog.Info("Thread Download finish."); break; } subTask = this.mTask.GetSubTask(); } } catch (Exception e) { mLog.Error("An error has occurred in the dowmload thread,error:{0}", e.ToString()); this.Errored(e.Message); } }
public override void Decode(byte[] buffer, int offset, int length) { task_ = new DownloadSubTask(); ReadInt(buffer, ref offset); ReadInt(buffer, ref offset); task_.Id = ReadInt(buffer, ref offset); task_.from = ReadLong(buffer, ref offset); task_.to = ReadLong(buffer, ref offset); var len = ReadInt(buffer, ref offset); task_.RemotePath = ReadString(buffer, offset, len); }
private void InstPeer(Peer peer, DownloadSubTask task, long blockSize) { var temp = peer.EndPoint.ToString(); if (!subTask_.ContainsKey(temp)) { subTask_.Add(temp, task); } if (!msgbuff.ContainsKey(temp)) { msgbuff.Add(temp, new Common.MessageBuffer()); } if (!sbuff_.ContainsKey(temp)) { sbuff_.Add(temp, new Common.MessageBuffer()); } }
void Download() { DownloadSubTask subTask = task_.GetSubTask(); while (subTask != null) { byte[] data = HttpDownloadRange.Download(subTask.RemotePath, subTask.from, subTask.to); if (data == null) { Console.WriteLine("download error"); break; } subTask.data = data; var b = task_.UpdateTaskState(subTask, 2); if (b) { Console.WriteLine("download finish"); break; } subTask = task_.GetSubTask(); } }
public FileBlockTask(DownloadSubTask task) { task_ = task; }