예제 #1
0
        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);
            }
        }
예제 #2
0
        // 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;
                    }
                }
            }
        }