コード例 #1
0
 public AnnounceManager(IEnumerable <string> announceUrls, TransferMonitor monitor, TorrentData data)
 {   //иницализация на списъка с тракери, състоящ се от класове TrackerInfo, които осигуряват
     //връзка с отделни тракери и заявки до тях
     trackers = new List <TrackerInfo>();
     //прибавяне на HTTP тракерите от подадения списък с адреси
     trackers.AddRange(announceUrls.Where(u => u.StartsWith("http")).Select(u => new TrackerInfo(u)));
     //прикачане на събитието PeersReceived към всеки от тракерите (TrackerInfo)
     trackers.ForEach(t => t.PeersReceived += (sender, args) => OnPeersReceived(args.Value));
     Monitor = monitor;
     Data    = data;
     //инициализация на таймер за проверка на състоянието на всеки тракер
     regularTimer = new Timer(Regular);
     regularTimer.Change(1000, 5000);
 }
コード例 #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 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);
         }
     };
 }
コード例 #4
0
ファイル: TorrentMode.cs プロジェクト: NewFuture/BitTorrent
 protected TorrentMode(BlockManager manager, BlockStrategist strategist, TorrentData metadata, TransferMonitor monitor)
 {
     //инициализация на обект за следене на пренесените данни
     Monitor = monitor;
     //обект за управляване на записа на парчета върху файловата система
     BlockManager = manager;
     //обект за управление на заявките на парчета към пиърите
     BlockStrategist = strategist;
     //обект, съдържаш метаданните на торента
     Metadata = metadata;
     //съобщение за здрависване, което се използва от този TorrentMode
     DefaultHandshake = new HandshakeMessage(Global.Instance.PeerId, new byte[8], Metadata.InfoHash, "BitTorrent protocol");
     //конкурентен речник за съхранение на състоянието на активните пиъри
     Peers = new ConcurrentDictionary<string, PeerState>();
     //прикачане на събитието за изключения на BlockManager-а
     manager.RaisedException += (s, e) => HandleException(e.Value);
     //инициализация на теймера за изпращане на KeepAlive съобщения
     KeepAliveTimer = new Timer(SendKeepAlives);
 }
コード例 #5
0
 protected TorrentMode(BlockManager manager, BlockStrategist strategist, TorrentData metadata, TransferMonitor monitor)
 {
     //инициализация на обект за следене на пренесените данни
     Monitor = monitor;
     //обект за управляване на записа на парчета върху файловата система
     BlockManager = manager;
     //обект за управление на заявките на парчета към пиърите
     BlockStrategist = strategist;
     //обект, съдържаш метаданните на торента
     Metadata = metadata;
     //съобщение за здрависване, което се използва от този TorrentMode
     DefaultHandshake = new HandshakeMessage(Global.Instance.PeerId, new byte[8], Metadata.InfoHash, "BitTorrent protocol");
     //конкурентен речник за съхранение на състоянието на активните пиъри
     Peers = new ConcurrentDictionary <string, PeerState>();
     //прикачане на събитието за изключения на BlockManager-а
     manager.RaisedException += (s, e) => HandleException(e.Value);
     //инициализация на теймера за изпращане на KeepAlive съобщения
     KeepAliveTimer = new Timer(SendKeepAlives);
 }
コード例 #6
0
ファイル: DownloadMode.cs プロジェクト: New-Future/BitTorrent
 public DownloadMode(BlockManager manager, BlockStrategist strategist, TorrentData metadata, TransferMonitor monitor) :
     base(manager, strategist, metadata, monitor)
 {
     strategist.HavePiece += (sender, args) => SendHaveMessages(args.Value);
 }
コード例 #7
0
ファイル: SeedMode.cs プロジェクト: fm107/WebTorrent
 public SeedMode(BlockManager manager, BlockStrategist strategist, TorrentData metadata, TransferMonitor monitor)
     :
     base(manager, strategist, metadata, monitor)
 {
 }
コード例 #8
0
ファイル: SeedMode.cs プロジェクト: NewFuture/BitTorrent
 public SeedMode(BlockManager manager, BlockStrategist strategist, TorrentData metadata, TransferMonitor monitor)
     : base(manager, strategist, metadata, monitor)
 {
 }
コード例 #9
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);
     };
 }
コード例 #10
0
ファイル: DownloadMode.cs プロジェクト: NewFuture/BitTorrent
 public DownloadMode(BlockManager manager, BlockStrategist strategist, TorrentData metadata, TransferMonitor monitor)
     : base(manager, strategist, metadata, monitor)
 {
     strategist.HavePiece += (sender, args) => SendHaveMessages(args.Value);
 }