예제 #1
0
파일: DownloadTask.cs 프로젝트: sgww/cozy
        public bool UpdateTaskState(DownloadSubTask task, byte state)
        {
            if (taskState_[task.Id] != state)
            {
                taskState_[task.Id] = state;
                if (state == 2)
                {
                    lock (writeFile_)
                    {
                        FileStream fsA = new FileStream(cacheFile_, FileMode.Open);
                        fsA.Seek(task.from, SeekOrigin.Begin);
                        fsA.Write(task.data, 0, task.data.Length);
                        fsA.Close();
                    }

                    finishCount++;
                    if (finishCount == split_.blockCount_)
                    {
                        lock (writeFile_)
                        {
                            FileInfo fi = new FileInfo(cacheFile_);
                            fi.MoveTo(LocalPath);
                        }
                        return(true);
                    }
                }
            }
            return(false);
        }
예제 #2
0
        public bool UpdateTaskState(DownloadSubTask task, byte state)
        {
            if (taskState_[task.Id] != state)
            {
                taskState_[task.Id] = state;
                if (state == 2)
                {
                    lock(writeFile_)
                    {
                        FileStream fsA = new FileStream(cacheFile_, FileMode.Open);
                        fsA.Seek(task.from, SeekOrigin.Begin);
                        fsA.Write(task.data, 0, task.data.Length);
                        fsA.Close();
                    }

                    finishCount++;
                    if (finishCount == split_.blockCount_)
                    {
                        lock (writeFile_)
                        {
                            FileInfo fi = new FileInfo(cacheFile_);
                            fi.MoveTo(LocalPath);
                        }
                        return true;
                    }
                }
            }
            return false;
        }
예제 #3
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);
 }
예제 #4
0
 public FileBlockTask(DownloadSubTask task)
 {
     task_ = task;
 }