package net.i2p.kademlia
Generic Kademlia distributed hash table implementation supporting multiple hash algorithms (SHA1, SHA256 and others).
- KBucket implementation for peer storage
- KBucketSet for managing multiple buckets
- Generic key support for different hash lengths
- Kademlia routing table management
- Trimmer strategies deciding which peer to evict from a full bucket
Major rewrite of KBucket, KBucketSet, and KBucketImpl from net.i2p.router.networkdb.kademlia, now generic to support SHA1, SHA256, or other key lengths.
- ClassDescriptionKBucket<T extends SimpleDataStructure>Group, without inherent ordering, a set of keys a certain distance away from a local key, using XOR as the distance metricKBucketImpl<T extends SimpleDataStructure>A concurrent implementation using
ConcurrentHashSet.KBucketSet<T extends SimpleDataStructure>In-memory storage of buckets sorted by XOR metric from base (us) passed in via constructor.KBucketSet.BucketComparator<T extends SimpleDataStructure>For Collections.binarySearch.KBucketSet.DummyBucket<T extends SimpleDataStructure>For Collections.binarySearch.KBucketSet.Range<T extends SimpleDataStructure>Calculator of the bucket range for a key.KBucketTrimmer<K extends SimpleDataStructure>Called when a kbucket can no longer be split and is too big.RandomIfOldTrimmer<T extends SimpleDataStructure>Removes a random element, but only if the bucket hasn't changed in 5 minutes.RandomTrimmer<T extends SimpleDataStructure>Removes a random element.RejectTrimmer<T extends SimpleDataStructure>Removes nothing and always rejects the add.SelectionCollector<T extends SimpleDataStructure>Visit kbuckets, gathering matches.XORComparator<T extends SimpleDataStructure>Help sort Hashes in relation to a base key using the XOR metric.