public BitTorrentApplicationProtocol( PeerId localPeerId, Metainfo metainfo, IApplicationProtocolPeerInitiator <PeerConnection, TConnectionContext, PeerConnectionArgs> peerInitiator, Func <IPeerMessageHandler, IPeerMessageHandler> messageHandlerFactory, IModuleManager modules, IPieceDataHandler dataHandler) { this.localPeerId = localPeerId; this.peerInitiator = peerInitiator; this.messageHandlerFactory = messageHandlerFactory; this.modules = modules; DataHandler = dataHandler; dataHandler.PieceCompleted += PieceCompleted; dataHandler.PieceCorrupted += PieceCorrupted; Metainfo = metainfo; blockRequests = new BlockRequestManager(); }
public BitTorrentApplicationProtocol( ILogger <BitTorrentApplicationProtocol> logger, PeerId localPeerId, Metainfo metainfo, IApplicationProtocolPeerInitiator peerInitiator, IEnumerable <IModule> modules, IPieceDataHandler dataHandler) { _logger = logger; _localPeerId = localPeerId; _peerInitiator = peerInitiator; _modules = modules.ToList().AsReadOnly(); DataHandler = dataHandler; dataHandler.PieceCompleted += PieceCompleted; dataHandler.PieceCorrupted += PieceCorrupted; Metainfo = metainfo; _blockRequests = new BlockRequestManager(); }
public TorrentClient( ILogger <TorrentClient> logger, PeerId localPeerId, IMainLoop mainLoop, ITransportProtocol transport, ITrackerClientFactory trackerClientFactory, IApplicationProtocolPeerInitiator peerInitiator, IServiceProvider services) { _logger = logger; _downloads = new Dictionary <Sha1Hash, TorrentDownload>(); _mainLoop = mainLoop; _mainLoop.Start(); _trackerClientFactory = trackerClientFactory; _services = services; _updateStatisticsTimer = new Timer(UpdateStatistics, null, TimeSpan.Zero, TimeSpan.FromSeconds(10)); _peerInitiator = peerInitiator; LocalPeerId = localPeerId; Transport = transport; transport.AcceptConnectionHandler += _peerInitiator.AcceptIncomingConnection; Transport.Start(); }