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); }
public DownloadMode(BlockManager manager, BlockStrategist strategist, TorrentData metadata, TransferMonitor monitor) : base(manager, strategist, metadata, monitor) { strategist.HavePiece += (sender, args) => SendHaveMessages(args.Value); }
public SeedMode(BlockManager manager, BlockStrategist strategist, TorrentData metadata, TransferMonitor monitor) : base(manager, strategist, metadata, monitor) { }