Class PeerSelector

  • Direct Known Subclasses:
    FloodfillPeerSelector

    abstract class PeerSelector
    extends Object
    Mostly unused, see overrides in FloodfillPeerSelector
    • Constructor Detail

    • Method Detail

      • selectMostReliablePeers

        List<Hash> selectMostReliablePeers​(Hash key,
                                           int numClosest,
                                           Set<Hash> alreadyChecked,
                                           KBucketSet<Hash> kbuckets)
        UNUSED - See FloodfillPeerSelector override Search through the kbucket set to find the most reliable peers close to the given key, skipping all of the ones already checked List will not include our own hash.
        Returns:
        ordered list of Hash objects
      • selectNearestExplicit

        List<Hash> selectNearestExplicit​(Hash key,
                                         int maxNumRouters,
                                         Set<Hash> peersToIgnore,
                                         KBucketSet<Hash> kbuckets)
        Ignore KBucket ordering and do the XOR explicitly per key. Runs in O(n*log(n)) time (n=routing table size with c ~ 32 xor ops). This gets strict ordering on closest List will not include our own hash.
        Returns:
        List of Hash for the peers selected, ordered by bucket (but intra bucket order is not defined)
      • selectNearestExplicitThin

        List<Hash> selectNearestExplicitThin​(Hash key,
                                             int maxNumRouters,
                                             Set<Hash> peersToIgnore,
                                             KBucketSet<Hash> kbuckets)
        UNUSED - See FloodfillPeerSelector override Ignore KBucket ordering and do the XOR explicitly per key. Runs in O(n*log(n)) time (n=routing table size with c ~ 32 xor ops). This gets strict ordering on closest List will not include our own hash.
        Returns:
        List of Hash for the peers selected, ordered by bucket (but intra bucket order is not defined)
      • selectNearest

        List<Hash> selectNearest​(Hash key,
                                 int maxNumRouters,
                                 Set<Hash> peersToIgnore,
                                 KBucketSet<Hash> kbuckets)
        UNUSED - See FloodfillPeerSelector override Generic KBucket filtering to find the hashes close to a key, regardless of other considerations. This goes through the kbuckets, starting with the key's location, moving towards us, and then away from the key's location's bucket, selecting peers until we have numClosest. List MAY INCLUDE our own router - add to peersToIgnore if you don't want
        Parameters:
        key - the original key (NOT the routing key)
        peersToIgnore - can be null
        Returns:
        List of Hash for the peers selected, ordered by bucket (but intra bucket order is not defined)