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); } }
// execute in thread private void ManageEndDownloadFiles() { foreach (KeyValuePair <int, DownloadFile_v1 <TKey> > value in _downloadFiles) { DownloadFile_v1 <TKey> downloadFile = value.Value; if (downloadFile.state == DownloadState.DownloadStarted) { DownloaderState state = _downloadClient.GetDownloadStateById(downloadFile.downloadId); if (state == DownloaderState.Ended || state == DownloaderState.EndedWithError) { if (state == DownloaderState.Ended) { downloadFile.state = DownloadState.DownloadCompleted; } else { downloadFile.state = DownloadState.DownloadFailed; } EndDownloadFile(downloadFile); //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 (_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<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); //continue; } } } }