private void EnterSeedMode() { ChangeState(TorrentState.Seeding); var mode = new SeedMode(Mode); mode.RaisedException += (s, e) => OnRaisedException(e.Value); mode.Start(); Mode = mode; AnnounceManager.Started(); }
private void StartActions() { _stop = false; _stopping = false; Running = true; _tracker = new TrackerClient(Data.Announces); _statsReportTimer = new Timer(o => OnStatsReport(), new object(), 0, Timeout.Infinite); //таймер за отчитане на състоянието _monitor = new TransferMonitor(Data.InfoHash, Data.TotalLength); AnnounceManager = new AnnounceManager(Data.Announces, _monitor, Data); AnnounceManager.PeersReceived += (sender, args) => { Mode?.AddEndpoints(args.Value); }; }
private void EnterDownloadMode() { //промяна на състоянието - информира потребителския интерфейс ChangeState(TorrentState.Downloading); var mode = new DownloadMode((HashingMode)Mode); //прикачане на обработваш код към събитията за получено изключение, //завършено изтегляне, и приключило записване на диска mode.RaisedException += (s, e) => OnRaisedException(e.Value); mode.FlushedToDisk += (s, e) => FlushedToDisk(); mode.DownloadComplete += (s, e) => DownloadCompleted(); //стартиране на режима mode.Start(); Mode = mode; //информиране на тракера AnnounceManager.Started(); }
private void StopActions() { //последно съобщаване за състоянието OnStatsReport(); //информиране на интерфейса, че трансферът е спрян ChangeState(TorrentState.NotRunning); //освобождаване на таймера за състояние _statsReportTimer.Dispose(); //съобщаване на тракера, че трансферът е спрян AnnounceManager.Stopped(); //освобождаване на обекта, управляващ тракер комуникацията AnnounceManager.Dispose(); //спиране на текущо изпълняващия се режим Mode?.Stop(true); _stop = true; Running = false; }
private void StartActions() { stop = false; stopping = false; Running = true; tracker = new TrackerClient(Data.Announces); statsReportTimer = new Timer(o => OnStatsReport()); //таймер за отчитане на състоянието monitor = new TransferMonitor(Data.InfoHash, Data.TotalLength); AnnounceManager = new AnnounceManager(Data.Announces, monitor, Data); AnnounceManager.PeersReceived += (sender, args) => { if (Mode != null) { Mode.AddEndpoints(args.Value); } }; }
/// <summary> /// Stops all torrent activity and shuts down the thread. /// </summary> public void Stop() { _stopping = true; AnnounceManager.Stopped(); }
private void DownloadCompleted() { ChangeState(TorrentState.WaitingForDisk); AnnounceManager.Completed(); }