public async Task <bool> AddPeerAsync(Peer peer) { Check.Peer(peer); if (HasMetadata && Torrent.IsPrivate) { throw new InvalidOperationException("You cannot add external peers to a private torrent"); } await ClientEngine.MainLoop; if (Peers.Contains(peer)) { return(false); } // Ignore peers in the inactive list if (InactivePeerManager.InactivePeerList.Contains(peer.ConnectionUri)) { return(false); } Peers.AvailablePeers.Add(peer); OnPeerFound?.Invoke(this, new PeerAddedEventArgs(this, peer)); // When we successfully add a peer we try to connect to the next available peer return(true); }
internal int AddPeersCore(Peer peer) { if (Peers.Contains(peer)) { return(0); } // Ignore peers in the inactive list if (InactivePeerManager.InactivePeerList.Contains(peer.ConnectionUri)) { return(0); } Peers.AvailablePeers.Add(peer); OnPeerFound?.Invoke(this, new PeerAddedEventArgs(this, peer)); // When we successfully add a peer we try to connect to the next available peer return(1); }