net.i2p.router.networkdb.kademlia
Class FloodfillNetworkDatabaseFacade

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

public class FloodfillNetworkDatabaseFacade
extends KademliaNetworkDatabaseFacade


Field Summary
static char CAPACITY_FLOODFILL
           
 
Fields inherited from class net.i2p.router.networkdb.kademlia.KademliaNetworkDatabaseFacade
_context, _log, _peerSelector, DEFAULT_DB_DIR, MAX_LEASE_FUTURE, PROP_DB_DIR, PROP_ENFORCE_NETID
 
Constructor Summary
FloodfillNetworkDatabaseFacade(RouterContext context)
           
 
Method Summary
(package private)  void complete(Hash key)
           
protected  void createHandlers()
           
protected  PeerSelector createPeerSelector()
           
 void flood(DataStructure ds)
           
 boolean floodfillEnabled()
           
static boolean floodfillEnabled(RouterContext ctx)
           
 java.util.List getFloodfillPeers()
          list of the Hashes of currently known floodfill peers
 java.util.List getKnownRouterData()
           
static boolean isFloodfill(RouterInfo peer)
           
protected  void lookupBeforeDropping(Hash peer, RouterInfo info)
           
 void publish(RouterInfo localRouterInfo)
           
(package private)  SearchJob 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 searchFull(Hash key, java.util.List onFind, java.util.List onFailed, long timeoutMs, boolean isLease)
          Ok, the initial set of searches to the floodfill peers timed out, lets fall back on the wider kademlia-style searches
 void sendStore(Hash key, DataStructure ds, Job onSuccess, Job onFailure, long sendTimeout, java.util.Set toIgnore)
           
 
Methods inherited from class net.i2p.router.networkdb.kademlia.KademliaNetworkDatabaseFacade
dropAfterLookupFailed, fail, findNearestRouters, getAllRouters, getDataStore, getDbDir, getExplicitSendKeys, getExploreKeys, getKBuckets, getKnownLeaseSets, getKnownRouters, getLastExploreNewDate, getLastSent, getPassivelySendKeys, getPeerSelector, getPeerTimeout, lookupLeaseSet, lookupLeaseSetLocally, lookupRouterInfo, lookupRouterInfoLocally, noteKeySent, publish, queueForExploration, queueForPublishing, removeFromExplicitSend, removeFromExploreKeys, removeFromPassiveSend, renderStatusHTML, restart, searchComplete, setLastExploreNewDate, shutdown, startup, stopPublishing, store, store, unpublish, validate, validate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CAPACITY_FLOODFILL

public static final char CAPACITY_FLOODFILL
See Also:
Constant Field Values
Constructor Detail

FloodfillNetworkDatabaseFacade

public FloodfillNetworkDatabaseFacade(RouterContext context)
Method Detail

createHandlers

protected void createHandlers()
Overrides:
createHandlers in class KademliaNetworkDatabaseFacade

publish

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

sendStore

public void sendStore(Hash key,
                      DataStructure ds,
                      Job onSuccess,
                      Job onFailure,
                      long sendTimeout,
                      java.util.Set toIgnore)
Overrides:
sendStore in class KademliaNetworkDatabaseFacade

flood

public void flood(DataStructure ds)

createPeerSelector

protected PeerSelector createPeerSelector()
Overrides:
createPeerSelector in class KademliaNetworkDatabaseFacade

floodfillEnabled

public boolean floodfillEnabled()

floodfillEnabled

public static boolean floodfillEnabled(RouterContext ctx)

isFloodfill

public static boolean isFloodfill(RouterInfo peer)

getKnownRouterData

public java.util.List getKnownRouterData()

search

SearchJob 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)

Overrides:
search in class KademliaNetworkDatabaseFacade

searchFull

void searchFull(Hash key,
                java.util.List onFind,
                java.util.List onFailed,
                long timeoutMs,
                boolean isLease)
Ok, the initial set of searches to the floodfill peers timed out, lets fall back on the wider kademlia-style searches


complete

void complete(Hash key)

getFloodfillPeers

public java.util.List getFloodfillPeers()
list of the Hashes of currently known floodfill peers


lookupBeforeDropping

protected void lookupBeforeDropping(Hash peer,
                                    RouterInfo info)
Overrides:
lookupBeforeDropping in class KademliaNetworkDatabaseFacade