net.i2p.router.networkdb.kademlia
Class KademliaNetworkDatabaseFacade

java.lang.Object
  extended bynet.i2p.router.NetworkDatabaseFacade
      extended bynet.i2p.router.networkdb.kademlia.KademliaNetworkDatabaseFacade
All Implemented Interfaces:
Service

public class KademliaNetworkDatabaseFacade
extends NetworkDatabaseFacade

Kademlia based version of the network database


Field Summary
static java.lang.String DEFAULT_DB_DIR
           
static java.lang.String PROP_DB_DIR
           
static java.lang.String PROP_ENFORCE_NETID
           
 
Constructor Summary
KademliaNetworkDatabaseFacade(RouterContext context)
           
 
Method Summary
 void fail(Hash dbEntry)
           
 java.util.Set findNearestRouters(Hash key, int maxNumRouters, java.util.Set peersToIgnore)
          Get the routers closest to that key in response to a remote lookup
(package private)  java.util.Set getAllRouters()
          get the hashes for all known routers
(package private)  DataStore getDataStore()
           
(package private)  java.lang.String getDbDir()
           
 java.util.Set getExplicitSendKeys()
           
 java.util.Set getExploreKeys()
           
(package private)  KBucketSet getKBuckets()
           
 int getKnownRouters()
           
(package private)  long getLastExploreNewDate()
           
 java.lang.Long getLastSent(Hash key)
           
 java.util.Set getPassivelySendKeys()
           
 void lookupLeaseSet(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs)
           
 LeaseSet lookupLeaseSetLocally(Hash key)
           
 void lookupRouterInfo(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs)
           
 RouterInfo lookupRouterInfoLocally(Hash key)
           
 void noteKeySent(Hash key)
           
 void publish(LeaseSet localLeaseSet)
           
 void publish(RouterInfo localRouterInfo)
           
 void queueForExploration(java.util.Set keys)
           
 void queueForPublishing(java.util.Set toSend)
           
 void removeFromExplicitSend(java.util.Set toRemove)
           
 void removeFromExploreKeys(java.util.Set toRemove)
           
 void removeFromPassiveSend(java.util.Set toRemove)
           
 void renderStatusHTML(java.io.Writer out)
           
 void restart()
          Perform a soft restart.
(package private)  void search(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs, boolean isLease)
          Begin a kademlia style search for the key specified, which can take up to timeoutMs and will fire the appropriate jobs on success or timeout (or if the kademlia search completes without any match)
(package private)  void searchComplete(Hash key)
          The search for the given key is no longer active
(package private)  void setLastExploreNewDate(long when)
           
 void shutdown()
          Instruct the service that the router is shutting down and that it should do whatever is necessary to go down gracefully.
 void startup()
          Instruct the service that it should start normal operation.
(package private)  void stopPublishing(Hash target)
           
 LeaseSet store(Hash key, LeaseSet leaseSet)
          Store the leaseSet
 RouterInfo store(Hash key, RouterInfo routerInfo)
          store the routerInfo
 void unpublish(LeaseSet localLeaseSet)
           
(package private)  java.lang.String validate(Hash key, LeaseSet leaseSet)
          Determine whether this leaseSet will be accepted as valid and current given what we know now.
(package private)  java.lang.String validate(Hash key, RouterInfo routerInfo)
          Determine whether this routerInfo will be accepted as valid and current given what we know now.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROP_ENFORCE_NETID

public static final java.lang.String PROP_ENFORCE_NETID
See Also:
Constant Field Values

PROP_DB_DIR

public static final java.lang.String PROP_DB_DIR
See Also:
Constant Field Values

DEFAULT_DB_DIR

public static final java.lang.String DEFAULT_DB_DIR
See Also:
Constant Field Values
Constructor Detail

KademliaNetworkDatabaseFacade

public KademliaNetworkDatabaseFacade(RouterContext context)
Method Detail

searchComplete

void searchComplete(Hash key)
The search for the given key is no longer active


getKBuckets

KBucketSet getKBuckets()

getDataStore

DataStore getDataStore()

getLastExploreNewDate

long getLastExploreNewDate()

setLastExploreNewDate

void setLastExploreNewDate(long when)

getExplicitSendKeys

public java.util.Set getExplicitSendKeys()

getPassivelySendKeys

public java.util.Set getPassivelySendKeys()

removeFromExplicitSend

public void removeFromExplicitSend(java.util.Set toRemove)

removeFromPassiveSend

public void removeFromPassiveSend(java.util.Set toRemove)

queueForPublishing

public void queueForPublishing(java.util.Set toSend)

getLastSent

public java.lang.Long getLastSent(Hash key)

noteKeySent

public void noteKeySent(Hash key)

getExploreKeys

public java.util.Set getExploreKeys()

removeFromExploreKeys

public void removeFromExploreKeys(java.util.Set toRemove)

queueForExploration

public void queueForExploration(java.util.Set keys)

shutdown

public void shutdown()
Description copied from interface: Service
Instruct the service that the router is shutting down and that it should do whatever is necessary to go down gracefully. It should not depend on other components at this point. This call DOES block.


restart

public void restart()
Description copied from interface: Service
Perform a soft restart.


getDbDir

java.lang.String getDbDir()

startup

public void startup()
Description copied from interface: Service
Instruct the service that it should start normal operation. This call DOES block until the service is ready.


findNearestRouters

public java.util.Set findNearestRouters(Hash key,
                                        int maxNumRouters,
                                        java.util.Set peersToIgnore)
Get the routers closest to that key in response to a remote lookup

Specified by:
findNearestRouters in class NetworkDatabaseFacade
Parameters:
key - The key
maxNumRouters - The maximum number of routers to return
peersToIgnore - Hash of routers not to include

getAllRouters

java.util.Set getAllRouters()
get the hashes for all known routers


getKnownRouters

public int getKnownRouters()
Overrides:
getKnownRouters in class NetworkDatabaseFacade

lookupLeaseSet

public void lookupLeaseSet(Hash key,
                           Job onFindJob,
                           Job onFailedLookupJob,
                           long timeoutMs)
Specified by:
lookupLeaseSet in class NetworkDatabaseFacade

lookupLeaseSetLocally

public LeaseSet lookupLeaseSetLocally(Hash key)
Specified by:
lookupLeaseSetLocally in class NetworkDatabaseFacade

lookupRouterInfo

public void lookupRouterInfo(Hash key,
                             Job onFindJob,
                             Job onFailedLookupJob,
                             long timeoutMs)
Specified by:
lookupRouterInfo in class NetworkDatabaseFacade

lookupRouterInfoLocally

public RouterInfo lookupRouterInfoLocally(Hash key)
Specified by:
lookupRouterInfoLocally in class NetworkDatabaseFacade

publish

public void publish(LeaseSet localLeaseSet)
Specified by:
publish in class NetworkDatabaseFacade

stopPublishing

void stopPublishing(Hash target)

publish

public void publish(RouterInfo localRouterInfo)
             throws java.lang.IllegalArgumentException
Specified by:
publish in class NetworkDatabaseFacade
Throws:
java.lang.IllegalArgumentException - if the local router info is invalid

validate

java.lang.String validate(Hash key,
                          LeaseSet leaseSet)
Determine whether this leaseSet will be accepted as valid and current given what we know now.

Returns:
reason why the entry is not valid, or null if it is valid

store

public LeaseSet store(Hash key,
                      LeaseSet leaseSet)
               throws java.lang.IllegalArgumentException
Store the leaseSet

Specified by:
store in class NetworkDatabaseFacade
Throws:
java.lang.IllegalArgumentException - if the leaseSet is not valid

validate

java.lang.String validate(Hash key,
                          RouterInfo routerInfo)
                    throws java.lang.IllegalArgumentException
Determine whether this routerInfo will be accepted as valid and current given what we know now.

Throws:
java.lang.IllegalArgumentException

store

public RouterInfo store(Hash key,
                        RouterInfo routerInfo)
                 throws java.lang.IllegalArgumentException
store the routerInfo

Specified by:
store in class NetworkDatabaseFacade
Throws:
java.lang.IllegalArgumentException - if the routerInfo is not valid

fail

public void fail(Hash dbEntry)
Specified by:
fail in class NetworkDatabaseFacade

unpublish

public void unpublish(LeaseSet localLeaseSet)
Specified by:
unpublish in class NetworkDatabaseFacade

search

void search(Hash key,
            Job onFindJob,
            Job onFailedLookupJob,
            long timeoutMs,
            boolean isLease)
Begin a kademlia style search for the key specified, which can take up to timeoutMs and will fire the appropriate jobs on success or timeout (or if the kademlia search completes without any match)


renderStatusHTML

public void renderStatusHTML(java.io.Writer out)
                      throws java.io.IOException
Throws:
java.io.IOException