Package net.i2p.router
Class NetworkDatabaseFacade
- java.lang.Object
-
- net.i2p.router.NetworkDatabaseFacade
-
- All Implemented Interfaces:
Service
- Direct Known Subclasses:
DummyNetworkDatabaseFacade,KademliaNetworkDatabaseFacade
public abstract class NetworkDatabaseFacade extends Object implements Service
Defines the mechanism for interacting with I2P's network database
-
-
Constructor Summary
Constructors Constructor Description NetworkDatabaseFacade()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract voidfail(Hash dbEntry)abstract Set<Hash>findNearestRouters(Hash key, int maxNumRouters, Set<Hash> peersToIgnore)Return the RouterInfo structures for the routers closest to the given key.booleanfloodfillEnabled()For convenience, so users don't have to cast to FNDF, and unit tests using Dummy NDF will work.abstract Set<Hash>getAllRouters()List<BlindData>getBlindData()For console ConfigKeyringHelperBlindDatagetBlindData(SigningPublicKey spk)intgetKnownLeaseSets()intgetKnownRouters()longgetLastRouterInfoPublishTime()The last time we successfully published our RI.Set<LeaseSet>getLeases()public for NetDbRenderer in routerconsoleSet<RouterInfo>getRouters()public for NetDbRenderer in routerconsolebooleanisInitialized()booleanisNegativeCachedForever(Hash key)Is it permanently negative cached?abstract voidlookupDestination(Hash key, Job onFinishedJob, long timeoutMs, Hash fromLocalDest)Lookup using the client's tunnels Succeeds even if LS validation fails due to unsupported sig typeabstract DestinationlookupDestinationLocally(Hash key)Lookup locally in netDB and in badDest cache Succeeds even if LS validation failed due to unsupported sig typeabstract voidlookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs)abstract voidlookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs, Hash fromLocalDest)Lookup using the client's tunnelsabstract LeaseSetlookupLeaseSetLocally(Hash key)abstract voidlookupLeaseSetRemotely(Hash key, Hash fromLocalDest)Unconditionally lookup using the client's tunnels.abstract voidlookupLeaseSetRemotely(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs, Hash fromLocalDest)Unconditionally lookup using the client's tunnels.abstract DatabaseEntrylookupLocally(Hash key)abstract DatabaseEntrylookupLocallyWithoutValidation(Hash key)Not for use without validationabstract voidlookupRouterInfo(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs)abstract RouterInfolookupRouterInfoLocally(Hash key)abstract voidpublish(LeaseSet localLeaseSet)abstract voidpublish(RouterInfo localRouterInfo)booleanremoveBlindData(SigningPublicKey spk)For console ConfigKeyringHelpervoidrenderStatusHTML(Writer out)Debug only - all user info moved to NetDbRenderer in router consolevoidrescan()ReseedCheckerreseedChecker()voidroutingKeyChanged()Notify the netDB that the routing key changed at midnight UTCvoidsetBlindData(BlindData bd)DatabaseEntrystore(Hash key, DatabaseEntry entry)abstract LeaseSetstore(Hash key, LeaseSet leaseSet)abstract RouterInfostore(Hash key, RouterInfo routerInfo)abstract voidunpublish(LeaseSet localLeaseSet)
-
-
-
Method Detail
-
findNearestRouters
public abstract Set<Hash> findNearestRouters(Hash key, int maxNumRouters, Set<Hash> peersToIgnore)
Return the RouterInfo structures for the routers closest to the given key. At most maxNumRouters will be returned- Parameters:
key- The keymaxNumRouters- The maximum number of routers to returnpeersToIgnore- Hash of routers not to include
-
lookupLocally
public abstract DatabaseEntry lookupLocally(Hash key)
- Returns:
- RouterInfo, LeaseSet, or null
- Since:
- 0.8.3
-
lookupLocallyWithoutValidation
public abstract DatabaseEntry lookupLocallyWithoutValidation(Hash key)
Not for use without validation- Returns:
- RouterInfo, LeaseSet, or null, NOT validated
- Since:
- 0.9.38
-
lookupLeaseSet
public abstract void lookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs)
-
lookupLeaseSet
public abstract void lookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs, Hash fromLocalDest)
Lookup using the client's tunnels- Parameters:
fromLocalDest- use these tunnels for the lookup, or null for exploratory- Since:
- 0.9.10
-
lookupRouterInfo
public abstract void lookupRouterInfo(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs)
-
lookupRouterInfoLocally
public abstract RouterInfo lookupRouterInfoLocally(Hash key)
-
lookupLeaseSetRemotely
public abstract void lookupLeaseSetRemotely(Hash key, Hash fromLocalDest)
Unconditionally lookup using the client's tunnels. No success or failed jobs, no local lookup, no checks. Use this to refresh a leaseset before expiration.- Parameters:
fromLocalDest- use these tunnels for the lookup, or null for exploratory- Since:
- 0.9.25
-
lookupLeaseSetRemotely
public abstract void lookupLeaseSetRemotely(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs, Hash fromLocalDest)
Unconditionally lookup using the client's tunnels.- Parameters:
fromLocalDest- use these tunnels for the lookup, or null for exploratoryonFindJob- may be nullonFailedLookupJob- may be null- Since:
- 0.9.47
-
lookupDestination
public abstract void lookupDestination(Hash key, Job onFinishedJob, long timeoutMs, Hash fromLocalDest)
Lookup using the client's tunnels Succeeds even if LS validation fails due to unsupported sig type- Parameters:
fromLocalDest- use these tunnels for the lookup, or null for exploratory- Since:
- 0.9.16
-
lookupDestinationLocally
public abstract Destination lookupDestinationLocally(Hash key)
Lookup locally in netDB and in badDest cache Succeeds even if LS validation failed due to unsupported sig type- Since:
- 0.9.16
-
store
public abstract LeaseSet store(Hash key, LeaseSet leaseSet) throws IllegalArgumentException
- Returns:
- the leaseSet if another leaseSet already existed at that key
- Throws:
IllegalArgumentException- if the data is not valid
-
store
public abstract RouterInfo store(Hash key, RouterInfo routerInfo) throws IllegalArgumentException
- Returns:
- the routerInfo if another router already existed at that key
- Throws:
IllegalArgumentException- if the data is not valid
-
store
public DatabaseEntry store(Hash key, DatabaseEntry entry) throws IllegalArgumentException
- Returns:
- the old entry if it already existed at that key
- Throws:
IllegalArgumentException- if the data is not valid- Since:
- 0.9.16
-
publish
public abstract void publish(RouterInfo localRouterInfo) throws IllegalArgumentException
- Throws:
IllegalArgumentException- if the local router is not valid
-
publish
public abstract void publish(LeaseSet localLeaseSet)
-
unpublish
public abstract void unpublish(LeaseSet localLeaseSet)
-
fail
public abstract void fail(Hash dbEntry)
-
getLastRouterInfoPublishTime
public long getLastRouterInfoPublishTime()
The last time we successfully published our RI.- Since:
- 0.9.9
-
getKnownRouters
public int getKnownRouters()
-
getKnownLeaseSets
public int getKnownLeaseSets()
-
isInitialized
public boolean isInitialized()
-
rescan
public void rescan()
-
renderStatusHTML
public void renderStatusHTML(Writer out) throws IOException
Debug only - all user info moved to NetDbRenderer in router console- Specified by:
renderStatusHTMLin interfaceService- Throws:
IOException
-
getRouters
public Set<RouterInfo> getRouters()
public for NetDbRenderer in routerconsole
-
reseedChecker
public ReseedChecker reseedChecker()
- Since:
- 0.9
-
floodfillEnabled
public boolean floodfillEnabled()
For convenience, so users don't have to cast to FNDF, and unit tests using Dummy NDF will work.- Returns:
- false; FNDF overrides to return actual setting
- Since:
- IPv6
-
isNegativeCachedForever
public boolean isNegativeCachedForever(Hash key)
Is it permanently negative cached?- Parameters:
key- only for Destinations; for RouterIdentities, see Banlist- Since:
- 0.9.16
-
getBlindData
public BlindData getBlindData(SigningPublicKey spk)
- Parameters:
spk- unblinded key- Returns:
- BlindData or null
- Since:
- 0.9.40
-
setBlindData
public void setBlindData(BlindData bd)
- Parameters:
bd- new BlindData to put in the cache- Since:
- 0.9.40
-
removeBlindData
public boolean removeBlindData(SigningPublicKey spk)
For console ConfigKeyringHelper- Returns:
- true if removed
- Since:
- 0.9.41
-
routingKeyChanged
public void routingKeyChanged()
Notify the netDB that the routing key changed at midnight UTC- Since:
- 0.9.50
-
-