Class PeerSelector
java.lang.Object
net.i2p.router.networkdb.kademlia.PeerSelector
- Direct Known Subclasses:
FloodfillPeerSelector
Mostly unused, see overrides in FloodfillPeerSelector
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionselectMostReliablePeers
(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.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.selectNearestExplicit
(Hash key, int maxNumRouters, Set<Hash> peersToIgnore, KBucketSet<Hash> kbuckets) Ignore KBucket ordering and do the XOR explicitly per key.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.
-
Field Details
-
_log
-
_context
-
-
Constructor Details
-
PeerSelector
-
-
Method Details
-
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)
-