Class DHTDBImpl
java.lang.Object
com.biglybt.core.dht.db.impl.DHTDBImpl
- All Implemented Interfaces:
DHTDB, DHTDBStats
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classprotected static class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final DHTStorageAdapterprivate final TimerEventPeriodicprivate final intprivate TimerEventPeriodic(package private) DHTControlprivate static final booleanprivate booleanprivate static final boolean(package private) booleanprivate static final longprivate BloomFilterprivate static final intprivate final IpFilterprivate long(package private) DHTTransportContact(package private) final DHTLoggerprivate static final intprivate static final intprivate static final longprivate static final intprivate static final longprivate intprivate intprivate final intstatic final intprivate TimerEventPeriodicprivate static final intprivate TimerEventPeriodicprotected static final intprotected static final int(package private) DHTRouterprivate boolean(package private) final Map<HashWrapper, DHTDBMapping> private final Map<DHTDBMapping.ShortHash, DHTDBMapping> private booleanprivate final Map<HashWrapper, Long> private static final booleanprivate static final intprivate final Map<HashWrapper, DHTDBImpl.SurveyContactState> private static final intprivate static final intprivate static final intprivate TimerEventPeriodicprivate boolean(package private) final AEMonitor(package private) intprivate int(package private) int(package private) intprivate static final intFields inherited from interface DHTDBStats
VD_DIRECT_SIZE, VD_DIV_FREQ, VD_DIV_SIZE, VD_INDIRECT_SIZE, VD_LOCAL_SIZE, VD_VALUE_COUNT -
Constructor Summary
ConstructorsConstructorDescriptionDHTDBImpl(DHTStorageAdapter _adapter, int _original_republish_interval, int _cache_republish_interval, byte _protocol_version, DHTLogger _logger) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddToPrefixMap(DHTDBMapping mapping) protected booleanapplyRF(DHTDBMapping mapping) protected voidbanContact(DHTTransportContact contact, String reason) protected voidcheckCacheExpiration(boolean force) protected voidprotected voiddecrementValueAdds(DHTTransportContact contact) voiddestroy()protected voiddoQuery(byte[] survey_my_id, int total, Map<DHTDBMapping, List<DHTTransportContact>> mapping_to_node_map, LinkedList<Map.Entry<DHTTransportContact, ByteArrayHashMap<List<DHTDBMapping>>>> to_do, Map<DHTTransportContact, Object[]> replies, DHTTransportContact done_contact, List<DHTDBMapping> done_mappings, List<byte[]> done_reply) get(DHTTransportContact reader, HashWrapper key, int max_values, short flags, boolean external_request) get(HashWrapper key) Internal lookup for locally originated valuesprotected DHTStorageAdaptergetAllValues(HashWrapper key) getAnyValue(HashWrapper key) Returns a value for the given key (local or remote) if foundintgetKeyBlockDetails(byte[] key) intgetKeys()Returns an iterator over HashWrapper values denoting the snapshot of keys Thus by the time a key is used the entry may no longer existprotected DHTTransportContactintprotected intintgetSize()getStats()intint[]returned values indexed by above VD_ constants for meaningbooleanhasKey(HashWrapper key) protected voidincrementValueAdds(DHTTransportContact contact) booleanisEmpty()booleanisKeyBlocked(byte[] key) keyBlockRequest(DHTTransportContact direct_sender, byte[] request, byte[] signature) protected voidvoidprint(boolean full) protected voidprocessSurvey(byte[] survey_my_id, List<HashWrapper> applicable_keys, ByteArrayHashMap<DHTTransportContact> survey) protected voidqueriesComplete(byte[] survey_my_id, Map<DHTDBMapping, List<DHTTransportContact>> mapping_to_node_map, Map<DHTTransportContact, Object[]> replies) queryStore(DHTTransportContact originating_contact, int header_len, List<Object[]> keys) protected voidrebuildIPBloomFilter(boolean increase_size) remove(DHTTransportContact originator, HashWrapper key) Local remove - returns a value suitable for putting in the DHTremove(DHTTransportContact originator, HashWrapper key, short flags) protected voidremoveFromPrefixMap(DHTDBMapping mapping) protected voidreportSizes(String op) protected int[]protected intvoidsetControl(DHTControl _control) voidsetSleeping(boolean asleep) voidsetSuspended(boolean susp) private voidsleep()bytestore(DHTTransportContact sender, HashWrapper key, DHTTransportValue[] values) Remote storestore(HashWrapper key, byte[] value, short flags, byte life_hours, byte replication_control) Local storeprotected voidsurvey()
-
Field Details
-
MAX_VALUE_LIFETIME
private static final int MAX_VALUE_LIFETIME- See Also:
-
original_republish_interval
private final int original_republish_interval -
ORIGINAL_REPUBLISH_INTERVAL_GRACE
public static final int ORIGINAL_REPUBLISH_INTERVAL_GRACE- See Also:
-
ENABLE_PRECIOUS_STUFF
private static final boolean ENABLE_PRECIOUS_STUFF- See Also:
-
PRECIOUS_CHECK_INTERVAL
private static final int PRECIOUS_CHECK_INTERVAL- See Also:
-
cache_republish_interval
private final int cache_republish_interval -
MIN_CACHE_EXPIRY_CHECK_INTERVAL
private static final long MIN_CACHE_EXPIRY_CHECK_INTERVAL- See Also:
-
last_cache_expiry_check
private long last_cache_expiry_check -
IP_BLOOM_FILTER_REBUILD_PERIOD
private static final long IP_BLOOM_FILTER_REBUILD_PERIOD- See Also:
-
IP_COUNT_BLOOM_SIZE_INCREASE_CHUNK
private static final int IP_COUNT_BLOOM_SIZE_INCREASE_CHUNK- See Also:
-
ip_count_bloom_filter
-
VALUE_VERSION_CHUNK
private static final int VALUE_VERSION_CHUNK- See Also:
-
next_value_version
private int next_value_version -
next_value_version_left
private int next_value_version_left -
QUERY_STORE_REQUEST_ENTRY_SIZE
protected static final int QUERY_STORE_REQUEST_ENTRY_SIZE- See Also:
-
QUERY_STORE_REPLY_ENTRY_SIZE
protected static final int QUERY_STORE_REPLY_ENTRY_SIZE- See Also:
-
stored_values
-
stored_values_prefix_map
-
control
DHTControl control -
adapter
-
router
DHTRouter router -
local_contact
DHTTransportContact local_contact -
logger
-
MAX_TOTAL_SIZE
private static final long MAX_TOTAL_SIZE- See Also:
-
total_size
int total_size -
total_values
int total_values -
total_keys
int total_keys -
total_local_keys
private int total_local_keys -
force_original_republish
boolean force_original_republish -
ip_filter
-
this_mon
-
DEBUG_SURVEY
private static final boolean DEBUG_SURVEY- See Also:
-
SURVEY_ONLY_RF_KEYS
private static final boolean SURVEY_ONLY_RF_KEYS- See Also:
-
SURVEY_PERIOD
private static final int SURVEY_PERIOD- See Also:
-
SURVEY_STATE_INACT_TIMEOUT
private static final int SURVEY_STATE_INACT_TIMEOUT- See Also:
-
SURVEY_STATE_MAX_LIFE_TIMEOUT
private static final int SURVEY_STATE_MAX_LIFE_TIMEOUT- See Also:
-
SURVEY_STATE_MAX_LIFE_RAND
private static final int SURVEY_STATE_MAX_LIFE_RAND- See Also:
-
MAX_SURVEY_SIZE
private static final int MAX_SURVEY_SIZE- See Also:
-
MAX_SURVEY_STATE_SIZE
private static final int MAX_SURVEY_STATE_SIZE- See Also:
-
survey_in_progress
private volatile boolean survey_in_progress -
survey_mapping_times
-
survey_state
-
precious_timer
-
original_republish_timer
-
cache_republish_timer
-
bloom_timer
-
survey_timer
-
sleeping
private boolean sleeping -
suspended
private boolean suspended -
destroyed
private volatile boolean destroyed
-
-
Constructor Details
-
DHTDBImpl
public DHTDBImpl(DHTStorageAdapter _adapter, int _original_republish_interval, int _cache_republish_interval, byte _protocol_version, DHTLogger _logger)
-
-
Method Details
-
setControl
- Specified by:
setControlin interfaceDHTDB
-
store
public DHTDBValue store(HashWrapper key, byte[] value, short flags, byte life_hours, byte replication_control) Description copied from interface:DHTDBLocal store -
store
Description copied from interface:DHTDBRemote store -
get
public DHTDBLookupResult get(DHTTransportContact reader, HashWrapper key, int max_values, short flags, boolean external_request) -
get
Description copied from interface:DHTDBInternal lookup for locally originated values -
getAnyValue
Description copied from interface:DHTDBReturns a value for the given key (local or remote) if found- Specified by:
getAnyValuein interfaceDHTDB- Parameters:
key-- Returns:
-
getAllValues
- Specified by:
getAllValuesin interfaceDHTDB
-
hasKey
-
remove
Description copied from interface:DHTDBLocal remove - returns a value suitable for putting in the DHT -
remove
-
keyBlockRequest
public DHTStorageBlock keyBlockRequest(DHTTransportContact direct_sender, byte[] request, byte[] signature) - Specified by:
keyBlockRequestin interfaceDHTDB
-
getKeyBlockDetails
- Specified by:
getKeyBlockDetailsin interfaceDHTDB
-
isKeyBlocked
public boolean isKeyBlocked(byte[] key) - Specified by:
isKeyBlockedin interfaceDHTDB
-
getDirectKeyBlocks
- Specified by:
getDirectKeyBlocksin interfaceDHTDB
-
isEmpty
-
getKeyCount
public int getKeyCount()- Specified by:
getKeyCountin interfaceDHTDBStats
-
getLocalKeyCount
public int getLocalKeyCount()- Specified by:
getLocalKeyCountin interfaceDHTDBStats
-
getValueCount
public int getValueCount()- Specified by:
getValueCountin interfaceDHTDBStats
-
getSize
public int getSize()- Specified by:
getSizein interfaceDHTDBStats
-
getValueDetails
public int[] getValueDetails()Description copied from interface:DHTDBStatsreturned values indexed by above VD_ constants for meaning- Specified by:
getValueDetailsin interfaceDHTDBStats- Returns:
-
getKeyBlockCount
public int getKeyBlockCount()- Specified by:
getKeyBlockCountin interfaceDHTDBStats
-
getKeys
Description copied from interface:DHTDBReturns an iterator over HashWrapper values denoting the snapshot of keys Thus by the time a key is used the entry may no longer exist -
republishOriginalMappings
protected int republishOriginalMappings() -
republishCachedMappings
protected int[] republishCachedMappings() -
checkCacheExpiration
protected void checkCacheExpiration(boolean force) -
addToPrefixMap
-
removeFromPrefixMap
-
checkPreciousStuff
protected void checkPreciousStuff() -
getLocalContact
-
getAdapter
-
log
-
getStats
-
survey
protected void survey() -
processSurvey
protected void processSurvey(byte[] survey_my_id, List<HashWrapper> applicable_keys, ByteArrayHashMap<DHTTransportContact> survey) -
applyRF
-
doQuery
protected void doQuery(byte[] survey_my_id, int total, Map<DHTDBMapping, List<DHTTransportContact>> mapping_to_node_map, LinkedList<Map.Entry<DHTTransportContact, ByteArrayHashMap<List<DHTDBMapping>>>> to_do, Map<DHTTransportContact, Object[]> replies, DHTTransportContact done_contact, List<DHTDBMapping> done_mappings, List<byte[]> done_reply) -
queriesComplete
protected void queriesComplete(byte[] survey_my_id, Map<DHTDBMapping, List<DHTTransportContact>> mapping_to_node_map, Map<DHTTransportContact, Object[]> replies) -
sleep
private void sleep() -
setSleeping
public void setSleeping(boolean asleep) - Specified by:
setSleepingin interfaceDHTDB
-
setSuspended
public void setSuspended(boolean susp) - Specified by:
setSuspendedin interfaceDHTDB
-
queryStore
public DHTTransportQueryStoreReply queryStore(DHTTransportContact originating_contact, int header_len, List<Object[]> keys) - Specified by:
queryStorein interfaceDHTDB
-
print
-
banContact
-
incrementValueAdds
-
decrementValueAdds
-
rebuildIPBloomFilter
protected void rebuildIPBloomFilter(boolean increase_size) -
reportSizes
-
getNextValueVersion
protected int getNextValueVersion() -
destroy
-