Пример #1
0
 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();
 }
Пример #3
0
        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();
        }