public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacade
| Modifier and Type | Field and Description |
|---|---|
static char |
CAPABILITY_BW_UNLIMITED |
static char |
CAPABILITY_BW12 |
static char |
CAPABILITY_BW128 |
static char |
CAPABILITY_BW256 |
static char |
CAPABILITY_BW32 |
static char |
CAPABILITY_BW512 |
static char |
CAPABILITY_BW64 |
static char |
CAPABILITY_CONGESTION_MODERATE |
static char |
CAPABILITY_CONGESTION_SEVERE |
static char |
CAPABILITY_FLOODFILL |
static char |
CAPABILITY_NO_TUNNELS |
static char |
CAPABILITY_UNREACHABLE |
static int |
MAX_TO_FLOOD
This is the flood redundancy.
|
protected static int |
MIN_ACTIVE_PEERS
NTCP cons drop quickly but SSU takes a while, so it's prudent to keep this
a little higher than 1 or 2.
|
(package private) static long |
NEXT_RKEY_RI_ADVANCE_TIME |
static String |
PROP_FLOODFILL_AT_RESTART |
static String |
PROP_FLOODFILL_PARTICIPANT |
(package private) static long |
PUBLISH_TIMEOUT
This maybe could be shorter than RepublishLeaseSetJob.REPUBLISH_LEASESET_TIMEOUT,
because we are sending direct, but unresponsive floodfills may take a while due to timeouts.
|
_context, _log, _networkID, _peerSelector, CURRENT_VERSION, DEFAULT_DB_DIR, DONT_FAIL_PERIOD, MAX_EXPLORE_QUEUE, MIN_REMAINING_ROUTERS, MIN_RESEED, MIN_VERSION, minRouterVersion, PROP_BLOCK_MY_COUNTRY, PROP_BLOCK_XG, PROP_BUCKET_SIZE, PROP_DB_DIR, PROP_EXPLORE_QUEUE, PROP_IP_COUNTRY, PROP_KAD_B, PROP_MIN_ROUTER_VERSION, PROP_ROUTER_INFO_EXPIRATION_ADJUSTED, PROP_VALIDATE_ROUTERS_AFTER| Constructor and Description |
|---|
FloodfillNetworkDatabaseFacade(RouterContext context)
Main DB
|
FloodfillNetworkDatabaseFacade(RouterContext context,
Hash dbid)
Sub DBs
|
| Modifier and Type | Method and Description |
|---|---|
(package private) void |
complete(Hash key)
Must be called by the search job queued by search() on success or failure
|
protected void |
createHandlers()
unused, see override
|
void |
flood(DatabaseEntry ds)
Send to a subset of all floodfill peers.
|
boolean |
floodConditional(DatabaseEntry ds)
If we are floodfill AND the key is not throttled,
flood it, otherwise don't.
|
boolean |
floodfillEnabled()
For convenience, so users don't have to cast to FNDF, and unit tests using
Dummy NDF will work.
|
List<Hash> |
getFloodfillPeers()
list of the Hashes of currently known floodfill peers;
Returned list will not include our own hash.
|
List<RouterInfo> |
getKnownRouterData() |
String |
getTunnelName(Destination d) |
static boolean |
isFloodfill(RouterInfo peer) |
(package private) boolean |
isVerifyInProgress(Hash h) |
protected void |
lookupBeforeDropping(Hash peer,
RouterInfo info)
Search for a newer router info, drop it from the db if the search fails,
unless just started up or have bigger problems.
|
void |
publish(RouterInfo localRouterInfo)
Send our RI to the closest floodfill.
|
(package private) SearchJob |
search(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
boolean isLease)
Lookup using exploratory tunnels.
|
(package private) SearchJob |
search(Hash key,
Job onFindJob,
Job onFailedLookupJob,
long timeoutMs,
boolean isLease,
Hash fromLocalDest)
Lookup using the client's tunnels.
|
(package private) void |
sendStore(Hash key,
DatabaseEntry ds,
Job onSuccess,
Job onFailure,
long sendTimeout,
Set<Hash> toIgnore)
See implementation in FNDF
|
void |
setFloodfillEnabled(boolean yes)
Public, called from console.
|
(package private) void |
setFloodfillEnabledFromMonitor(boolean yes)
Package private, called from FloodfillMonitorJob.
|
(package private) boolean |
shouldBanLookup(Hash from,
TunnelId id) |
(package private) boolean |
shouldThrottleFlood(Hash key)
Increments and tests.
|
(package private) boolean |
shouldThrottleLookup(Hash from,
TunnelId id)
Increments and tests.
|
void |
shutdown()
If we are floodfill, turn it off and tell everybody.
|
void |
startup()
Instruct the service that it should start normal operation.
|
(package private) void |
verifyFinished(Hash h) |
(package private) void |
verifyStarted(Hash h) |
blindCache, createPeerSelector, dropAfterLookupFailed, fail, failPermanently, findNearestRouters, getAllRouters, getBlindData, getBlindData, getClientLeases, getDataStore, getDbDir, getExploreKeys, getFloodfillLeases, getKBuckets, getKBucketSetSize, getKnownLeaseSets, getKnownRouters, getLastExploreNewDate, getLastRouterInfoPublishTime, getLeases, getPeerSelector, getPeerTimeout, getPublishedLeases, getRouters, getStoredRouterInfoCount, getUnpublishedLeases, hasActiveRepublishJob, isClientDb, isInitialized, isNegativeCached, isNegativeCachedForever, isNewer, lookupDestination, lookupDestinationLocally, lookupFailed, lookupLeaseSet, lookupLeaseSet, lookupLeaseSetLocally, lookupLeaseSetRemotely, lookupLeaseSetRemotely, lookupLocally, lookupLocallyWithoutValidation, lookupRouterInfo, lookupRouterInfoLocally, publish, queueForExploration, registerPublishingJob, removeBlindData, removeFromExploreKeys, removePublishingJob, renderStatusHTML, rescan, reseedChecker, routerInfoPublishSuccessful, routingKeyChanged, searchComplete, setBlindData, setLastExploreNewDate, setTransient, stopPublishing, store, store, store, store, toString, unpublish, validate, validatestorepublic static final char CAPABILITY_BW_UNLIMITED
public static final char CAPABILITY_BW12
public static final char CAPABILITY_BW128
public static final char CAPABILITY_BW256
public static final char CAPABILITY_BW32
public static final char CAPABILITY_BW512
public static final char CAPABILITY_BW64
public static final char CAPABILITY_CONGESTION_MODERATE
public static final char CAPABILITY_CONGESTION_SEVERE
public static final char CAPABILITY_FLOODFILL
public static final char CAPABILITY_NO_TUNNELS
public static final char CAPABILITY_UNREACHABLE
public static final int MAX_TO_FLOOD
protected static final int MIN_ACTIVE_PEERS
static final long NEXT_RKEY_RI_ADVANCE_TIME
public static final String PROP_FLOODFILL_AT_RESTART
public static final String PROP_FLOODFILL_PARTICIPANT
static final long PUBLISH_TIMEOUT
public FloodfillNetworkDatabaseFacade(RouterContext context)
public FloodfillNetworkDatabaseFacade(RouterContext context, Hash dbid)
dbid - null for main DBvoid complete(Hash key)
protected void createHandlers()
KademliaNetworkDatabaseFacadecreateHandlers in class KademliaNetworkDatabaseFacadepublic void flood(DatabaseEntry ds)
public boolean floodConditional(DatabaseEntry ds)
public boolean floodfillEnabled()
NetworkDatabaseFacadefloodfillEnabled in class NetworkDatabaseFacadepublic List<Hash> getFloodfillPeers()
public List<RouterInfo> getKnownRouterData()
public String getTunnelName(Destination d)
public static boolean isFloodfill(RouterInfo peer)
peer - may be null, returns false if nullboolean isVerifyInProgress(Hash h)
protected void lookupBeforeDropping(Hash peer, RouterInfo info)
lookupBeforeDropping in class KademliaNetworkDatabaseFacadepublic void publish(RouterInfo localRouterInfo) throws IllegalArgumentException
publish in class KademliaNetworkDatabaseFacadeIllegalArgumentException - if the local router info is invalidSearchJob search(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs, boolean isLease)
search in class KademliaNetworkDatabaseFacadeSearchJob search(Hash key, Job onFindJob, Job onFailedLookupJob, long timeoutMs, boolean isLease, Hash fromLocalDest)
search in class KademliaNetworkDatabaseFacadefromLocalDest - use these tunnels for the lookup, or null for exploratoryvoid sendStore(Hash key, DatabaseEntry ds, Job onSuccess, Job onFailure, long sendTimeout, Set<Hash> toIgnore)
KademliaNetworkDatabaseFacadesendStore in class KademliaNetworkDatabaseFacadekey - the DatabaseEntry hashonSuccess - may be null, always called if we are ff and ds is an RIonFailure - may be null, ignored if we are ff and ds is an RIsendTimeout - ignored if we are ff and ds is an RItoIgnore - may be null, if non-null, all attempted and skipped targets will be added as of 0.9.53,
unused if we are ff and ds is an RIpublic void setFloodfillEnabled(boolean yes)
void setFloodfillEnabledFromMonitor(boolean yes)
boolean shouldThrottleFlood(Hash key)
public void shutdown()
shutdown in interface Serviceshutdown in class KademliaNetworkDatabaseFacadepublic void startup()
Servicestartup in interface Servicestartup in class KademliaNetworkDatabaseFacadevoid verifyFinished(Hash h)
void verifyStarted(Hash h)