public TorrentClient(TorrentClientSettings settings) { downloads = new Dictionary <Sha1Hash, TorrentDownload>(); mainLoop = new MainLoop(); moduleManager = new ModuleManager(); moduleManager.Register(new CoreMessagingModule()); mainLoop.Start(); peerInitiator = new BitTorrentPeerInitiator(infoHash => (BitTorrentApplicationProtocol <BitTorrentPeerInitiator.IContext>)downloads[infoHash].Manager.ApplicationProtocol, moduleManager); LocalPeerId = settings.PeerId; transport = new TcpTransportProtocol( settings.ListenPort, settings.FindAvailablePort, settings.AdapterAddress, AcceptConnection); transport.Start(); trackerClientFactory = new TrackerClientFactory(transport.LocalConection); updateStatisticsTimer = new Timer(UpdateStatistics, null, TimeSpan.Zero, TimeSpan.FromSeconds(10)); AdapterAddress = settings.AdapterAddress; }
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(); }
public AggregatedTracker(ITrackerClientFactory trackerClientFactory, IReadOnlyList <IReadOnlyList <Uri> > trackers) { this.trackerClientFactory = trackerClientFactory; this.trackers = trackers; activeTrackers = new Dictionary <ITracker, TrackerStatistics>(); }