void HandlePlasmaServiceDownloadFileCompleted(object sender, DownloadFileCompletedEventArgs e) { var down = (TorrentDownload)e.UserState; if (e.Error != null || e.Cancelled) { Trace.TraceError("Error downloading {0}: {1}", down.Name, e.Error); down.Finish(false); return; } if (!e.Result || e.links == null || e.torrent == null || e.links.Count() == 0) { Trace.TraceWarning("Cannot download {0}, not registered or has no links", down.Name); down.Finish(false); return; } try { var tor = Torrent.Load(e.torrent); down.FileName = tor.Files[0].Path; //down.Length = (int)tor.Size; down.Length = 1;//workaround for progress bars down.TypeOfResource = e.resourceType == ResourceType.Map ? DownloadType.MAP : DownloadType.MOD; // just 1 link, use normal webdownload if (e.links.Count() == 1 || e.links.Count(x => !x.Contains("springfiles.com")) == 1) // mirrors or mirros without jobjol = 1 { var wd = new WebFileDownload(e.links[0], GetDestPath(down.TypeOfResource, down.FileName), incomingFolder); down.AddNeededDownload(wd); down.Finish(true); // mark current torrent dl as complete - will wait for dependency wd.Start(); // start dependent download } else { var wd = new WebMultiDownload(e.links.Shuffle(), GetDestPath(down.TypeOfResource, down.FileName), incomingFolder, tor); down.AddNeededDownload(wd); down.Finish(true); // mark current torrent dl as complete - will wait for dependency wd.Start(); // start dependent download } foreach (var dependency in e.dependencies) { var dep = plasmaDownloader.GetResource(DownloadType.UNKNOWN, dependency); if (dep != null) { down.AddNeededDownload(dep); } } } catch (Exception ex) { Trace.TraceError("downloading torrent failed {0}", ex); down.Finish(false); } }
public TorrentDownload DownloadTorrent(string name) { Trace.TraceInformation("starting download {0}", name); var down = new TorrentDownload(name); Task.Factory.StartNew(() => { DownloadFileResult e; try { e = plasmaService.DownloadFile(name); } catch (Exception ex) { Trace.TraceError("Error downloading {0}: {1}", down.Name, ex); down.Finish(false); return; } if (e == null || e.links == null || e.torrent == null || e.links.Count == 0) { Trace.TraceWarning("Cannot download {0}, not registered or has no links", down.Name); down.Finish(false); return; } try { var tor = Torrent.Load(e.torrent); down.FileName = tor.Files[0].Path; //down.Length = (int)tor.Size; down.Length = 1;//workaround for progress bars down.TypeOfResource = e.resourceType == ResourceType.Map ? DownloadType.MAP : DownloadType.RAPID; foreach (var dependency in e.dependencies) { var dep = plasmaDownloader.GetResource(DownloadType.NOTKNOWN, dependency); if (dep != null) { down.AddNeededDownload(dep); } } if (!plasmaDownloader.ForceMapRedownload) { var defPath = Utils.MakePath(plasmaDownloader.SpringPaths.WritableDirectory, down.TypeOfResource == DownloadType.MAP ? "maps" : "games", down.FileName); if (File.Exists(defPath)) { var exTor = CreateTorrentFromFile(defPath); if (exTor != null && exTor.InfoHash.Equals(tor.InfoHash)) { down.Finish(true); return; // done } } } var wd = new WebMultiDownload(e.links.Shuffle(), GetDestPath(down.TypeOfResource, down.FileName), incomingFolder, tor); down.AddNeededDownload(wd); down.Finish(true); // mark current torrent dl as complete - will wait for dependency wd.Start(); // start dependent download } catch (Exception ex) { Trace.TraceError("downloading torrent failed {0}", ex); down.Finish(false); } }); return(down); }
public TorrentDownload DownloadTorrent(string name) { Trace.TraceInformation("starting download {0}", name); var down = new TorrentDownload(name); Task.Factory.StartNew(() => { DownloadFileResult e; try { e = plasmaService.DownloadFile(name); } catch (Exception ex) { Trace.TraceError("Error downloading {0}: {1}", down.Name, ex); down.Finish(false); return; } if (e == null || e.links == null || e.torrent == null || e.links.Count == 0) { Trace.TraceWarning("Cannot download {0}, not registered or has no links", down.Name); down.Finish(false); return; } try { var tor = Torrent.Load(e.torrent); down.FileName = tor.Files[0].Path; //down.Length = (int)tor.Size; down.Length = 1;//workaround for progress bars down.TypeOfResource = e.resourceType == ResourceType.Map ? DownloadType.MAP : DownloadType.RAPID; foreach (var dependency in e.dependencies) { var dep = plasmaDownloader.GetResource(DownloadType.NOTKNOWN, dependency); if (dep != null) down.AddNeededDownload(dep); } var defPath = Utils.MakePath(plasmaDownloader.SpringPaths.WritableDirectory, down.TypeOfResource == DownloadType.MAP ? "maps" : "games", down.FileName); if (File.Exists(defPath)) { var exTor = CreateTorrentFromFile(defPath); if (exTor != null && exTor.InfoHash.Equals(tor.InfoHash)) { down.Finish(true); return; // done } } // just 1 link, use normal webdownload if (e.links.Count() == 1 || e.links.Count(x => !x.Contains("springfiles.com")) == 1) // mirrors or mirros without jobjol = 1 { var wd = new WebFileDownload(e.links[0], GetDestPath(down.TypeOfResource, down.FileName), incomingFolder); down.AddNeededDownload(wd); down.Finish(true); // mark current torrent dl as complete - will wait for dependency wd.Start(); // start dependent download } else { var wd = new WebMultiDownload(e.links.Shuffle(), GetDestPath(down.TypeOfResource, down.FileName), incomingFolder, tor); down.AddNeededDownload(wd); down.Finish(true); // mark current torrent dl as complete - will wait for dependency wd.Start(); // start dependent download } } catch (Exception ex) { Trace.TraceError("downloading torrent failed {0}", ex); down.Finish(false); } }); return down; }