Package com.biglybt.core.dht.db.impl
Class DHTDBImpl
java.lang.Object
com.biglybt.core.dht.db.impl.DHTDBImpl
- All Implemented Interfaces:
DHTDB
,DHTDBStats
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected class
protected static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final DHTStorageAdapter
private final TimerEventPeriodic
private final int
private TimerEventPeriodic
(package private) DHTControl
private static final boolean
private boolean
private static final boolean
(package private) boolean
private static final long
private BloomFilter
private static final int
private final IpFilter
private long
(package private) DHTTransportContact
(package private) final DHTLogger
private static final int
private static final int
private static final long
private static final int
private static final long
private int
private int
private final int
static final int
private TimerEventPeriodic
private static final int
private TimerEventPeriodic
protected static final int
protected static final int
(package private) DHTRouter
private boolean
(package private) final Map
<HashWrapper, DHTDBMapping> private final Map
<DHTDBMapping.ShortHash, DHTDBMapping> private boolean
private final Map
<HashWrapper, Long> private static final boolean
private static final int
private final Map
<HashWrapper, DHTDBImpl.SurveyContactState> private static final int
private static final int
private static final int
private TimerEventPeriodic
private boolean
(package private) final AEMonitor
(package private) int
private int
(package private) int
(package private) int
private static final int
Fields inherited from interface com.biglybt.core.dht.db.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 void
addToPrefixMap
(DHTDBMapping mapping) protected boolean
applyRF
(DHTDBMapping mapping) protected void
banContact
(DHTTransportContact contact, String reason) protected void
checkCacheExpiration
(boolean force) protected void
protected void
decrementValueAdds
(DHTTransportContact contact) void
destroy()
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) get
(DHTTransportContact reader, HashWrapper key, int max_values, short flags, boolean external_request) get
(HashWrapper key) Internal lookup for locally originated valuesprotected DHTStorageAdapter
getAllValues
(HashWrapper key) getAnyValue
(HashWrapper key) Returns a value for the given key (local or remote) if foundint
getKeyBlockDetails
(byte[] key) int
getKeys()
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 DHTTransportContact
int
protected int
int
getSize()
getStats()
int
int[]
returned values indexed by above VD_ constants for meaningboolean
hasKey
(HashWrapper key) protected void
incrementValueAdds
(DHTTransportContact contact) boolean
isEmpty()
boolean
isKeyBlocked
(byte[] key) keyBlockRequest
(DHTTransportContact direct_sender, byte[] request, byte[] signature) protected void
void
print
(boolean full) protected void
processSurvey
(byte[] survey_my_id, List<HashWrapper> applicable_keys, ByteArrayHashMap<DHTTransportContact> survey) protected void
queriesComplete
(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 void
rebuildIPBloomFilter
(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 void
removeFromPrefixMap
(DHTDBMapping mapping) protected void
reportSizes
(String op) protected int[]
protected int
void
setControl
(DHTControl _control) void
setSleeping
(boolean asleep) void
setSuspended
(boolean susp) private void
sleep()
byte
store
(DHTTransportContact sender, HashWrapper key, DHTTransportValue[] values) Remote storestore
(HashWrapper key, byte[] value, short flags, byte life_hours, byte replication_control) Local storeprotected void
survey()
-
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:
setControl
in interfaceDHTDB
-
store
public DHTDBValue store(HashWrapper key, byte[] value, short flags, byte life_hours, byte replication_control) Description copied from interface:DHTDB
Local store -
store
Description copied from interface:DHTDB
Remote store -
get
public DHTDBLookupResult get(DHTTransportContact reader, HashWrapper key, int max_values, short flags, boolean external_request) -
get
Description copied from interface:DHTDB
Internal lookup for locally originated values -
getAnyValue
Description copied from interface:DHTDB
Returns a value for the given key (local or remote) if found- Specified by:
getAnyValue
in interfaceDHTDB
- Parameters:
key
-- Returns:
-
getAllValues
- Specified by:
getAllValues
in interfaceDHTDB
-
hasKey
-
remove
Description copied from interface:DHTDB
Local remove - returns a value suitable for putting in the DHT -
remove
-
keyBlockRequest
public DHTStorageBlock keyBlockRequest(DHTTransportContact direct_sender, byte[] request, byte[] signature) - Specified by:
keyBlockRequest
in interfaceDHTDB
-
getKeyBlockDetails
- Specified by:
getKeyBlockDetails
in interfaceDHTDB
-
isKeyBlocked
public boolean isKeyBlocked(byte[] key) - Specified by:
isKeyBlocked
in interfaceDHTDB
-
getDirectKeyBlocks
- Specified by:
getDirectKeyBlocks
in interfaceDHTDB
-
isEmpty
public boolean isEmpty() -
getKeyCount
public int getKeyCount()- Specified by:
getKeyCount
in interfaceDHTDBStats
-
getLocalKeyCount
public int getLocalKeyCount()- Specified by:
getLocalKeyCount
in interfaceDHTDBStats
-
getValueCount
public int getValueCount()- Specified by:
getValueCount
in interfaceDHTDBStats
-
getSize
public int getSize()- Specified by:
getSize
in interfaceDHTDBStats
-
getValueDetails
public int[] getValueDetails()Description copied from interface:DHTDBStats
returned values indexed by above VD_ constants for meaning- Specified by:
getValueDetails
in interfaceDHTDBStats
- Returns:
-
getKeyBlockCount
public int getKeyBlockCount()- Specified by:
getKeyBlockCount
in interfaceDHTDBStats
-
getKeys
Description copied from interface:DHTDB
Returns 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:
setSleeping
in interfaceDHTDB
-
setSuspended
public void setSuspended(boolean susp) - Specified by:
setSuspended
in interfaceDHTDB
-
queryStore
public DHTTransportQueryStoreReply queryStore(DHTTransportContact originating_contact, int header_len, List<Object[]> keys) - Specified by:
queryStore
in interfaceDHTDB
-
print
public void print(boolean full) -
banContact
-
incrementValueAdds
-
decrementValueAdds
-
rebuildIPBloomFilter
protected void rebuildIPBloomFilter(boolean increase_size) -
reportSizes
-
getNextValueVersion
protected int getNextValueVersion() -
destroy
public void destroy()
-