public override async void OnNavigatedTo(object parameter, NavigationMode mode, Dictionary<string, object> state) { if (mode == NavigationMode.Back) { _navigationService.GoBack(); return; } PlaybackTorrent = (PlaybackTorrent) parameter; if (!string.IsNullOrEmpty(PlaybackTorrent.TorrentUrl)) { State = TorrentStreamManager.State.Metadata; var torrent = await Torrent.LoadAsync(new Uri(PlaybackTorrent.TorrentUrl), ""); _torrentStreamService.CreateManager(torrent); } else if (!string.IsNullOrEmpty(PlaybackTorrent.MagnetLink)) { var magnetLink = new MagnetLink(PlaybackTorrent.MagnetLink); _torrentStreamService.CreateManager(magnetLink); } else { var hash = InfoHash.FromHex(PlaybackTorrent.TorrentHash); _torrentStreamService.CreateManager(hash); } _torrentStreamService.StreamManager.StreamProgress += StreamManagerOnStreamProgress; _torrentStreamService.StreamManager.StreamReady += StreamManagerOnStreamReady; _torrentStreamService.StreamManager.Error += StreamManagerOnError; _torrentStreamService.StreamManager.StartDownload(); State = _torrentStreamService.StreamManager.CurrentState; }
public void CreateManager(MagnetLink link) { var manager = link.CreateManager(_engine.Settings.SaveFolder); _engine.Register(manager); StreamManager = new TorrentStreamManager(manager); }