The network database, including implementation of floodfills. Database lookups, stores, exploration, and replies. Management of locally-generated RouterInfos and Leasesets.
Interface Summary Interface Description DataStore
Class Summary Class Description BlindCacheCache of blinding data. ExpireLeasesJobPeriodically 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) ExpireRoutersJobGo through the routing table pick routers that are is out of date, but don't expire routers we're actively connected to. ExploreJobSearch 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 FloodfillDatabaseLookupMessageHandlerBuild a HandleDatabaseLookupMessageJob whenever a DatabaseLookupMessage arrives FloodfillDatabaseStoreMessageHandlerCreate a HandleDatabaseStoreMessageJob whenever a DatabaseStoreMessage arrives FloodfillMonitorJobSimple job to monitor the floodfill pool. FloodfillNetworkDatabaseFacadeThe network database FloodfillPeerSelectorThis is where we implement semi-Kademlia with the floodfills, by selecting floodfills closest to a given key for searches and stores. FloodfillRouterInfoFloodJobJob to flood nearby floodfill routers with our RI. FloodfillStoreJobThis extends StoreJob to fire off a FloodfillVerifyStoreJob after success. FloodfillVerifyStoreJobSend 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 FloodOnlyLookupSelectorMostly replaced by IterativeLookupSelector FloodOnlyLookupTimeoutJobThis is the timeout for the whole search. FloodOnlySearchJobUunused directly, replaced by IterativeSearchJob, but still extended by SingleSearchJob. FloodSearchJobTry 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. FloodThrottlerCount how often we have recently flooded a key This offers basic DOS protection but is not a complete solution. HandleFloodfillDatabaseLookupMessageJobHandle a lookup for a key received from a remote peer. HandleFloodfillDatabaseStoreMessageJobReceive DatabaseStoreMessage data and store it in the local net db IterativeFollowupJobAsk a single peer for a single key. IterativeLookupJobAsk the peer who sent us the DSRM for the RouterInfos... IterativeLookupSelectorSlightly modified version of FloodOnlyLookupSelector. IterativeSearchJobA 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. IterativeTimeoutJobThis is the timeout for a single lookup, not for the whole search. KademliaNetworkDatabaseFacadeKademlia based version of the network database. LocalHashPull the caching used only by KBucketImpl out of Hash and put it here. LookupThrottlerCount how often we have recently received a lookup request with the reply specified to go to a peer/TunnelId pair. MessageWrapperMethod and class for garlic encrypting outbound netdb traffic, and sending keys and tags for others to encrypt inbound netdb traffic, including management of the ElGamal/AES tags. MessageWrapper.OneTimeSessionA single key and tag, for receiving a single message. MessageWrapper.WrappedMessageWrapper so that we can keep track of the key and tags for later notification to the SKM NegativeLookupCacheTrack lookup fails PeerSelectorMostly unused, see overrides in FloodfillPeerSelector PersistentDataStoreWrite 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. RefreshRoutersJobGo through all the routers once, after startup, and refetch their router infos. RepublishLeaseSetJobRun periodically for each locally created leaseSet to cause it to be republished if the client is still connected. SearchJobSearch 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. SearchMessageSelectorCheck to see the message is a reply from the peer regarding the current search SearchReplyJob SearchStateData related to a particular search SearchUpdateReplyFoundJobCalled after a match to a db search is found Used only by SearchJob which is only used by ExploreJob SingleLookupJobAsk the peer who sent us the DSRM for the RouterInfos... SingleSearchJobAsk a single peer for a single key. StartExplorersJobFire off search jobs for random keys from the explore pool, up to MAX_PER_RUN at a time. StoreJobStores through this always request a reply. StoreMessageSelectorCheck to see the message is a reply from the peer regarding the current store StoreStateTracks the state of a StoreJob TransientDataStoreStores in-memory only.
Exception Summary Exception Description UnsupportedCryptoExceptionSignature verification failed because the sig type is unknown or unavailable.