Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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());
            }
        }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
0
 public FileBlockTask(DownloadSubTask task)
 {
     task_ = task;
 }