public void DownloadFile(TKey key, string[] downloadLinks, string file) { DownloadFile_v1 <TKey> downloadFile = new DownloadFile_v1 <TKey> { key = key, downloadLinks = downloadLinks, requestTime = DateTime.Now, file = file, downloadId = 0, state = DownloadState.WaitToDownload }; downloadFile.id = _mongoQueueDownloadFileManager.GetNewId(); _mongoQueueDownloadFileManager.Save(downloadFile.id, downloadFile); }
public static bool Save(MongoCollectionManager_v1 <DownloadPostKey_v1, DownloadedFile_v2 <DownloadPostKey_v1> > mongoDownloadedFileManager, DownloadedFile_v2 <DownloadPostKey_v1> downloadedFile) { bool saved = false; if (mongoDownloadedFileManager.Load(downloadedFile.Key) == null) { downloadedFile.Id = mongoDownloadedFileManager.GetNewId(); mongoDownloadedFileManager.Save(downloadedFile.Id, downloadedFile); saved = true; } //Trace.WriteLine("{0} : key {1}, file \"{2}\"", saved ? "saved " : "not saved", downloadedFile.Key, downloadedFile.UncompressFiles != null ? downloadedFile.UncompressFiles.FirstOrDefault() : "null"); Trace.WriteLine("{0} : key {1}, file \"{2}\"", saved ? "saved " : "not saved", downloadedFile.Key, downloadedFile.DownloadItemLinks != null ? downloadedFile.DownloadItemLinks.FirstOrDefault().ServerLinks.FirstOrDefault().FilePartLinks.FirstOrDefault().DownloadedFile : "null"); return(true); }
private void EndDownloadFile(DownloadFile_v1 <TKey> downloadFile) { try { DownloadedFile_v1 <TKey> downloadedFile = new DownloadedFile_v1 <TKey> { key = downloadFile.key, downloadLinks = downloadFile.downloadLinks, downloadLink = downloadFile.downloadLink, file = downloadFile.file, state = downloadFile.state, requestTime = downloadFile.requestTime, startDownloadTime = downloadFile.startDownloadTime, endDownloadTime = DateTime.Now, downloadDuration = DateTime.Now - downloadFile.startDownloadTime }; string downloadedPath = _downloadClient.GetDownloadLocalFileById(downloadFile.downloadId); string downloadDirectory = zPath.GetDirectoryName(downloadFile.file); //if (_trace) //{ // pb.Trace.WriteLine("ManageEndDownloadFiles() : downloadFile.file : \"{0}\"", downloadFile.file); // pb.Trace.WriteLine("ManageEndDownloadFiles() : _downloadClient.GetDownloadLocalFileById() : \"{0}\"", downloadedPath); //} downloadedFile.downloadedFile = zpath.PathSetDirectory(downloadedPath, downloadDirectory); downloadedFile.id = _mongoDownloadedFileManager.GetNewId(); _mongoDownloadedFileManager.Save(downloadedFile.id, downloadedFile); _mongoQueueDownloadFileManager.Remove(downloadFile.id); _downloadClient.RemoveDownloadById(downloadFile.downloadId); // _uncompressFile if (downloadFile.state == DownloadState.DownloadCompleted && _uncompressManager != null && CompressManager.IsCompressFile(downloadedPath)) { TaskManager.AddTask(new Task { name = "Uncompress download file", task = () => { UncompressFile(downloadedPath, downloadedFile, downloadDirectory); _mongoDownloadedFileManager.Save(downloadedFile.id, downloadedFile); } }); if (_onDownloaded != null) { TaskManager.AddTask(new Task { name = "onDownloaded", task = () => _onDownloaded(downloadedFile) }); } } else if (_onDownloaded != null) { _onDownloaded(downloadedFile); } DownloadFile_v1 <TKey> downloadFile2; if (!_downloadFiles.TryRemove(downloadFile.id, out downloadFile2)) { pb.Trace.WriteLine("error unable to remove downloadFile with id {0} from ConcurrentDictionary _downloadFiles (DownloadManager<TKey>.ManageEndDownloadFiles())", downloadFile.id); } } catch (Exception exception) { pb.Trace.WriteLine("error in DownloadManager_v1.EndDownloadFile() : {0}", exception.Message); pb.Trace.WriteLine(exception.StackTrace); } }