示例#1
0
        private void EnterSeedMode()
        {
            ChangeState(TorrentState.Seeding);
            var mode = new SeedMode(Mode);

            mode.RaisedException += (s, e) => OnRaisedException(e.Value);
            mode.Start();
            Mode = mode;
            AnnounceManager.Started();
        }
示例#2
0
 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);
     };
 }
示例#3
0
        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();
        }
示例#4
0
 private void StopActions()
 {
     //последно съобщаване за състоянието
     OnStatsReport();
     //информиране на интерфейса, че трансферът е спрян
     ChangeState(TorrentState.NotRunning);
     //освобождаване на таймера за състояние
     _statsReportTimer.Dispose();
     //съобщаване на тракера, че трансферът е спрян
     AnnounceManager.Stopped();
     //освобождаване на обекта, управляващ тракер комуникацията
     AnnounceManager.Dispose();
     //спиране на текущо изпълняващия се режим
     Mode?.Stop(true);
     _stop   = true;
     Running = false;
 }
示例#5
0
 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);
         }
     };
 }
示例#6
0
 /// <summary>
 ///     Stops all torrent activity and shuts down the thread.
 /// </summary>
 public void Stop()
 {
     _stopping = true;
     AnnounceManager.Stopped();
 }
示例#7
0
 private void DownloadCompleted()
 {
     ChangeState(TorrentState.WaitingForDisk);
     AnnounceManager.Completed();
 }