/// <summary> /// Using a url and basic file info will create a download package and add it to the downloder /// </summary> /// <param name="url"></param> /// <param name="fileLocalPath"></param> /// <returns></returns> internal Task <DownloadPackage> AddFile(string url, string fileLocalPath = null, bool requestRemoteSize = true) { DownloadPackage package; package = new DownloadPackage(this, url, fileLocalPath, requestRemoteSize); if (State == AgentState.Busy) { package.State = PackageState.OnQueue; } PackageList.Add(package); TotalDownloadFilesCount++; //ParentDownloder.CallDownloadFileAdded(package); System.Console.WriteLine("Devhus.Downloader file has been added: {0}", package.MyFile.FullName); return(Task.FromResult(package)); }
/// <summary> /// Setup chunk object /// </summary> /// <param name="chunkIndex"></param> /// <param name="rangeStart"></param> /// <param name="rangeEnd"></param> /// <param name="filePath"></param> internal DownloadChunk(DownloadPackage ownerPackage, int chunkIndex, long rangeStart, long rangeEnd) { ParentPackage = ownerPackage; ChunkIndex = chunkIndex; FilePath = string.Format(ParentPackage.MyFile.LocalTempPath + ".{0:000}", ChunkIndex); Start = rangeStart; End = rangeEnd; LocalBytes = ReadChunkFileBytes(); ParentPackage.ReportChunkProgress(ChunkIndex, LocalBytes); //ParentPackage.Progress.LocalBytes += LocalBytes; DownloadUri = ParentPackage.MyFile.DownloadUrl; System.Console.WriteLine("Devhus.Downloader {0} package #{1} chunk set download range from {2} to {3}", ParentPackage.PackageID, ChunkIndex, Start, End); }