net.i2p.router
Class NetworkDatabaseFacade

java.lang.Object
  extended by 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
NetworkDatabaseFacade()
           
 
Method Summary
abstract  void fail(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.
 boolean floodfillEnabled()
          For convenience, so users don't have to cast to FNDF, and unit tests using Dummy NDF will work.
abstract  Set<Hash> getAllRouters()
           
 int getKnownLeaseSets()
           
 int getKnownRouters()
           
 long getLastRouterInfoPublishTime()
          The last time we successfully published our RI.
 Set<LeaseSet> getLeases()
          public for NetDbRenderer in routerconsole
 Set<RouterInfo> getRouters()
          public for NetDbRenderer in routerconsole
 boolean isInitialized()
           
 boolean isNegativeCachedForever(Hash key)
          Is it permanently negative cached?
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
abstract  Destination lookupDestinationLocally(Hash key)
          Lookup locally in netDB and in badDest cache Succeeds even if LS validation failed due to unsupported sig type
abstract  void lookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs)
           
abstract  void lookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs, Hash fromLocalDest)
          Lookup using the client's tunnels
abstract  LeaseSet lookupLeaseSetLocally(Hash key)
           
abstract  DatabaseEntry lookupLocally(Hash key)
           
abstract  void lookupRouterInfo(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs)
           
abstract  RouterInfo lookupRouterInfoLocally(Hash key)
           
abstract  void publish(LeaseSet localLeaseSet)
           
abstract  void publish(RouterInfo localRouterInfo)
           
 void renderStatusHTML(Writer out)
          Debug only - all user info moved to NetDbRenderer in router console
 void rescan()
           
 ReseedChecker reseedChecker()
           
 DatabaseEntry store(Hash key, DatabaseEntry entry)
           
abstract  LeaseSet store(Hash key, LeaseSet leaseSet)
           
abstract  RouterInfo store(Hash key, RouterInfo routerInfo)
           
abstract  void unpublish(LeaseSet localLeaseSet)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.i2p.router.Service
restart, shutdown, startup
 

Constructor Detail

NetworkDatabaseFacade

public NetworkDatabaseFacade()
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 key
maxNumRouters - The maximum number of routers to return
peersToIgnore - Hash of routers not to include

lookupLocally

public abstract DatabaseEntry lookupLocally(Hash key)
Returns:
RouterInfo, LeaseSet, or null
Since:
0.8.3

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

lookupLeaseSetLocally

public abstract LeaseSet lookupLeaseSetLocally(Hash key)

lookupRouterInfo

public abstract void lookupRouterInfo(Hash key,
                                      Job onFindJob,
                                      Job onFailedLookupJob,
                                      long timeoutMs)

lookupRouterInfoLocally

public abstract RouterInfo lookupRouterInfoLocally(Hash key)

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

getAllRouters

public abstract Set<Hash> getAllRouters()

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:
renderStatusHTML in interface Service
Throws:
IOException

getLeases

public Set<LeaseSet> getLeases()
public for NetDbRenderer in routerconsole


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