def get_random_peer_having_piece(self, index): ready_peers = [] for peer in self.peers: if peer.is_unchoked() and peer.am_interested() and peer.has_piece(index): ready_peers.append(peer) return random.choice(ready_peers) if ready_peers else None
def unchoked_peers_count(self): cpt = 0 for peer in self.peers: if peer.is_unchoked(): cpt += 1 return cpt
def has_unchoked_peers(self): for peer in self.peers: if peer.is_unchoked(): return True return False