Package net.i2p.router.networkdb.kademlia

Interface Summary
DataStore  
KBucket Group, without inherent ordering, a set of keys a certain distance away from a local key, using XOR as the distance metric
SelectionCollector Visit kbuckets, gathering matches
 

Class Summary
ExpireLeasesJob Periodically search through all leases to find expired ones, failing those keys and firing up a new search for each (in case we want it later, might as well preemptively fetch it)
ExpireRoutersJob Deprecated. unused - see comments in KNDF
ExploreJob Search for a particular key iteratively until we either find a value, we run out of peers, or the bucket the key belongs in has sufficient values in it.
ExploreKeySelectorJob Deprecated. unused, see comments in KNDF
FloodfillDatabaseLookupMessageHandler Build a HandleDatabaseLookupMessageJob whenever a DatabaseLookupMessage arrives
FloodfillDatabaseStoreMessageHandler Create a HandleDatabaseStoreMessageJob whenever a DatabaseStoreMessage arrives
FloodfillMonitorJob Simple job to monitor the floodfill pool.
FloodfillNetworkDatabaseFacade The network database
FloodfillPeerSelector This is where we implement semi-Kademlia with the floodfills, by selecting floodfills closest to a given key for searches and stores.
FloodfillStoreJob This extends StoreJob to fire off a FloodfillVerifyStoreJob after success.
FloodfillVerifyStoreJob Send a netDb lookup to a floodfill peer - If it is found, great, but if they reply back saying they dont know it, queue up a store of the key to a random floodfill peer again (via FloodfillStoreJob)
FloodOnlyLookupMatchJob  
FloodOnlyLookupSelector Mostly replaced by IterativeLookupSelector
FloodOnlyLookupTimeoutJob This is the timeout for the whole search.
FloodOnlySearchJob Uunused directly, replaced by IterativeSearchJob, but still extended by SingleSearchJob.
FloodSearchJob Try sending a search to some floodfill peers, but if we don't get a successful match within half the allowed lookup time, give up and start querying through the normal (kademlia) channels.
FloodThrottler Count how often we have recently flooded a key This offers basic DOS protection but is not a complete solution.
HandleFloodfillDatabaseLookupMessageJob Handle a lookup for a key received from a remote peer.
HandleFloodfillDatabaseStoreMessageJob Receive DatabaseStoreMessage data and store it in the local net db
HarvesterJob Simple job to try to keep our peer references up to date by aggressively requerying them every few minutes.
IterativeFollowupJob Ask a single peer for a single key.
IterativeLookupJob Ask the peer who sent us the DSRM for the RouterInfos...
IterativeLookupSelector Slightly modified version of FloodOnlyLookupSelector.
IterativeSearchJob A traditional Kademlia search that continues to search when the initial lookup fails, by iteratively searching the closer-to-the-key peers returned by the query in a DSRM.
IterativeTimeoutJob This is the timeout for a single lookup, not for the whole search.
KademliaNetworkDatabaseFacade Kademlia based version of the network database.
KBucketImpl  
KBucketSet In memory storage of buckets sorted by the XOR metric from the local router's identity, with bucket N containing routers BASE^N through BASE^N+1 away, up through 2^256 bits away (since we use SHA256).
LocalHash Pull the caching used only by KBucketImpl out of Hash and put it here.
LookupThrottler Count how often we have recently received a lookup request with the reply specified to go to a peer/TunnelId pair.
MessageWrapper Method and class for garlic encrypting outbound netdb traffic, including management of the ElGamal/AES tags
MessageWrapper.WrappedMessage Wrapper so that we can keep track of the key and tags for later notification to the SKM
NegativeLookupCache Track lookup fails
PeerSelector Mostly unused, see overrides in FloodfillPeerSelector
PersistentDataStore Write out keys to disk when we get them and periodically read ones we don't know about into memory, with newly read routers are also added to the routing table.
RefreshRoutersJob Go through all the routers once, after startup, and refetch their router infos.
RepublishLeaseSetJob Run periodically for each locally created leaseSet to cause it to be republished if the client is still connected.
SearchJob Search for a particular key iteratively until we either find a value or we run out of peers Note that this is rarely if ever used directly, and is primary used by the ExploreJob extension.
SearchMessageSelector Check to see the message is a reply from the peer regarding the current search
SearchReplyJob  
SearchState Data related to a particular search
SearchUpdateReplyFoundJob Called after a match to a db search is found
SingleLookupJob Ask the peer who sent us the DSRM for the RouterInfos...
SingleSearchJob Ask a single peer for a single key.
StartExplorersJob Fire off search jobs for random keys from the explore pool, up to MAX_PER_RUN at a time.
StoreJob Unused directly - see FloodfillStoreJob
StoreMessageSelector Check to see the message is a reply from the peer regarding the current store
StoreState Tracks the state of a StoreJob
TransientDataStore  
XORComparator Help sort Hashes in relation to a base key using the XOR metric.