Class DHTTransportUDPImpl
java.lang.Object
com.biglybt.core.dht.transport.udp.impl.DHTTransportUDPImpl
- All Implemented Interfaces:
DHTTransport
,DHTTransportUDP
,DHTUDPRequestHandler
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.biglybt.core.dht.transport.udp.DHTTransportUDP
DHTTransportUDP.Helper
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) boolean
private final Average
private final Average
private Map<Integer,
DHTTransportAlternativeNetwork> private final Object
private final Map<Integer,
DHTTransportAlternativeNetworkImpl> private BloomFilter
private static final int
private boolean
private static final AEMonitor
(package private) final Map<InetSocketAddress,
DHTTransportContact> private static final int
private static final int
private final int
private final int
private InetAddress
(package private) String
private byte
private byte
private boolean
private final IpFilter
private final String
private long
private long
private long
(package private) final List
(package private) DHTTransportUDPContactImpl
(package private) final DHTLogger
private final int
private final int
private int
static final int
static final int
private final int
private long
private long
(package private) DHTUDPPacketHandler
private int
private final byte
private Random
private boolean
private boolean
private final Map
private static final int
(package private) DHTTransportRequestHandler
private long
(package private) final Map<InetSocketAddress,
DHTTransportContact> private static final int
private final MovingImmediateAverage
(package private) DHTTransportUDPStatsImpl
private static final int
private static final long
private static final int
private long
private long
static final int
static boolean
(package private) final AEMonitor
private final boolean
private final DHTTransferHandler
Fields inherited from interface com.biglybt.core.dht.transport.DHTTransport
GF_DHT_SLEEPING, GF_NONE
Fields inherited from interface com.biglybt.core.dht.transport.udp.DHTTransportUDP
PROTOCOL_VERSION_2304, PROTOCOL_VERSION_2306, PROTOCOL_VERSION_2400, PROTOCOL_VERSION_2402, PROTOCOL_VERSION_2500, PROTOCOL_VERSION_2502, PROTOCOL_VERSION_3111, PROTOCOL_VERSION_4204, PROTOCOL_VERSION_4208, PROTOCOL_VERSION_4310, PROTOCOL_VERSION_4407, PROTOCOL_VERSION_4511, PROTOCOL_VERSION_4600, PROTOCOL_VERSION_4720, PROTOCOL_VERSION_4800, PROTOCOL_VERSION_5400, PROTOCOL_VERSION_5500, PROTOCOL_VERSION_ALT_CONTACTS, PROTOCOL_VERSION_ANON_VALUES, PROTOCOL_VERSION_ANTI_SPOOF, PROTOCOL_VERSION_ANTI_SPOOF2, PROTOCOL_VERSION_AZ_CVS, PROTOCOL_VERSION_AZ_MAIN, PROTOCOL_VERSION_BBT_UPLOAD_STATS, PROTOCOL_VERSION_BIGLYBT, PROTOCOL_VERSION_BLOCK_KEYS, PROTOCOL_VERSION_CVS_FIX_OVERLOAD_V1, PROTOCOL_VERSION_CVS_FIX_OVERLOAD_V2, PROTOCOL_VERSION_CVS_FIX_OVERLOAD_V3, PROTOCOL_VERSION_DIV_AND_CONT, PROTOCOL_VERSION_ENCRYPT_TT, PROTOCOL_VERSION_FIX_ORIGINATOR, PROTOCOL_VERSION_GENERIC_NETPOS, PROTOCOL_VERSION_LONGER_LIFE, PROTOCOL_VERSION_MIN_AZ, PROTOCOL_VERSION_MIN_AZ_CVS, PROTOCOL_VERSION_MIN_BIGLYBT, PROTOCOL_VERSION_MORE_NODE_STATUS, PROTOCOL_VERSION_MORE_STATS, PROTOCOL_VERSION_NETWORKS, PROTOCOL_VERSION_PACKET_FLAGS, PROTOCOL_VERSION_PACKET_FLAGS2, PROTOCOL_VERSION_PROC_TIME, PROTOCOL_VERSION_REMOVE_DIST_ADD_VER, PROTOCOL_VERSION_REPLICATION_CONTROL, PROTOCOL_VERSION_REPLICATION_CONTROL2, PROTOCOL_VERSION_REPLICATION_CONTROL3, PROTOCOL_VERSION_RESTRICT_ID_PORTS, PROTOCOL_VERSION_RESTRICT_ID_PORTS2, PROTOCOL_VERSION_RESTRICT_ID_PORTS2X, PROTOCOL_VERSION_RESTRICT_ID_PORTS2Y, PROTOCOL_VERSION_RESTRICT_ID_PORTS2Z, PROTOCOL_VERSION_RESTRICT_ID3, PROTOCOL_VERSION_SIZE_ESTIMATE, PROTOCOL_VERSION_VENDOR_ID, PROTOCOL_VERSION_VIVALDI, PROTOCOL_VERSION_VIVALDI_FINDVALUE, PROTOCOL_VERSION_VIVALDI_OPTIONAL, PROTOCOL_VERSION_XFER_STATUS, VENDOR_ID_AELITIS, VENDOR_ID_ME, VENDOR_ID_NONE, VENDOR_ID_ShareNET
-
Constructor Summary
ConstructorsConstructorDescriptionDHTTransportUDPImpl
(byte _protocol_version, int _network, boolean _v6, String _ip, String _default_ip, int _port, int _max_fails_for_live, int _max_fails_for_unknown, long _timeout, int _dht_send_delay, int _dht_receive_delay, boolean _bootstrap_node, boolean _initial_reachability, DHTLogger _logger) -
Method Summary
Modifier and TypeMethodDescriptionvoid
protected InetSocketAddress
protected void
checkAddress
(DHTTransportUDPContactImpl contact) (package private) void
protected void
contactAlive
(DHTTransportUDPContactImpl contact) protected void
protected void
dataRequest
(DHTTransportUDPContactImpl originator, DHTUDPPacketData req) void
exportContact
(DHTTransportContact contact, DataOutputStream os) exportContactToMap
(DHTTransportContact contact) protected void
externalAddressChange
(DHTTransportUDPContactImpl reporter, InetSocketAddress new_address, boolean force) getAlternativeNetwork
(int network_type) protected long
protected void
getExternalAddress
(String default_address, DHTLogger log) protected DHTTransportFullStats
getFullStats
(DHTTransportUDPContactImpl contact) byte
byte
Gives access to the node ID for this transportprotected int
protected int
byte
int
protected int
int
getPort()
byte
int
getStats()
long
protected void
importContact
(DHTTransportUDPContactImpl contact, boolean is_bootstrap) importContact
(DataInputStream is, boolean is_bootstrap) importContact
(InetSocketAddress _address, byte _protocol_version, boolean is_bootstrap) importContact
(Map<String, Object> map) protected void
informLocalAddress
(String address) protected boolean
boolean
isIPV6()
boolean
void
process
(DHTUDPPacketRequest request, boolean alien) void
process
(DHTUDPPacketHandlerStub packet_handler_stub, DHTUDPPacketRequest request, boolean alien) byte[]
readTransfer
(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] key, long timeout) (package private) void
protected void
recordSkew
(InetSocketAddress originator_address, long skew) void
void
registerTransferHandler
(byte[] handler_key, DHTTransportTransferHandler handler) void
registerTransferHandler
(byte[] handler_key, DHTTransportTransferHandler handler, Map<String, Object> options) void
removeContact
(DHTTransportContact contact) void
private void
protected void
requestReceiveReplyProcessor
(DHTTransportUDPContactImpl contact, DHTUDPPacketReply reply) protected void
requestReceiveRequestProcessor
(DHTTransportUDPContactImpl contact, DHTUDPPacketRequest request) protected void
requestSendReplyProcessor
(DHTTransportUDPContactImpl remote_contact, DHTTransportReplyHandler handler, DHTUDPPacketReply reply, long elapsed_time) Returns false if this isn't an error reply, true if it is and a retry can be performed, throws an exception otherwiseprotected void
requestSendRequestProcessor
(DHTTransportUDPContactImpl contact, DHTUDPPacketRequest request) private void
sendAltContacts
(DHTUDPPacketRequestPing request, DHTUDPPacketReplyPing reply) void
sendFindNode
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] nid) void
sendFindValue
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] key, int max_values, short flags) protected void
sendImmediatePing
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, long timeout) protected void
sendKeyBlockRequest
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] block_request, byte[] block_signature) protected void
sendPing
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler) protected void
sendPing
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, long timeout, int priority) void
sendQueryStore
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, int header_size, List<Object[]> key_details) protected void
sendStats
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler) void
sendStore
(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[][] keys, DHTTransportValue[][] value_sets, int priority) void
setExplicitBindAddress
(InetAddress address, boolean autoDelegate) void
setGenericFlag
(byte flag, boolean value) protected void
void
setPort
(int new_port) void
setRequestHandler
(DHTTransportRequestHandler _request_handler) Set the handler for incoming requestsvoid
setSuspended
(boolean susp) void
setTimeout
(long timeout) boolean
void
void
void
testNetworkAlive
(boolean alive) void
void
void
unregisterTransferHandler
(byte[] handler_key, DHTTransportTransferHandler handler) protected void
updateContactStatus
(DHTTransportUDPContactImpl contact, int status, boolean incoming) protected void
updateStats
(int tick_count) byte[]
writeReadTransfer
(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] data, long timeout) void
writeTransfer
(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] key, byte[] data, long timeout)
-
Field Details
-
TEST_EXTERNAL_IP
public static boolean TEST_EXTERNAL_IP -
MIN_ADDRESS_CHANGE_PERIOD_INIT_DEFAULT
public static final int MIN_ADDRESS_CHANGE_PERIOD_INIT_DEFAULT- See Also:
-
MIN_ADDRESS_CHANGE_PERIOD_NEXT_DEFAULT
public static final int MIN_ADDRESS_CHANGE_PERIOD_NEXT_DEFAULT- See Also:
-
STORE_TIMEOUT_MULTIPLIER
public static final int STORE_TIMEOUT_MULTIPLIER- See Also:
-
external_address
String external_address -
min_address_change_period
private int min_address_change_period -
protocol_version
private final byte protocol_version -
network
private final int network -
v6
private final boolean v6 -
ip_override
-
port
private int port -
max_fails_for_live
private final int max_fails_for_live -
max_fails_for_unknown
private final int max_fails_for_unknown -
request_timeout
private long request_timeout -
store_timeout
private long store_timeout -
reachable
private boolean reachable -
reachable_accurate
private boolean reachable_accurate -
dht_send_delay
private final int dht_send_delay -
dht_receive_delay
private final int dht_receive_delay -
explicit_bind
-
logger
-
packet_handler
DHTUDPPacketHandler packet_handler -
request_handler
DHTTransportRequestHandler request_handler -
local_contact
DHTTransportUDPContactImpl local_contact -
last_address_change
private long last_address_change -
listeners
-
ip_filter
-
stats
DHTTransportUDPStatsImpl stats -
bootstrap_node
private boolean bootstrap_node -
generic_flags
private byte generic_flags -
generic_flags2
private byte generic_flags2 -
CONTACT_HISTORY_MAX
private static final int CONTACT_HISTORY_MAX- See Also:
-
CONTACT_HISTORY_PING_SIZE
private static final int CONTACT_HISTORY_PING_SIZE- See Also:
-
contact_history
-
ROUTABLE_CONTACT_HISTORY_MAX
private static final int ROUTABLE_CONTACT_HISTORY_MAX- See Also:
-
routable_contact_history
-
other_routable_total
private long other_routable_total -
other_non_routable_total
private long other_non_routable_total -
routeable_percentage_average
-
RECENT_REPORTS_HISTORY_MAX
private static final int RECENT_REPORTS_HISTORY_MAX- See Also:
-
recent_reports
-
STATS_PERIOD
private static final int STATS_PERIOD- See Also:
-
STATS_DURATION_SECS
private static final int STATS_DURATION_SECS- See Also:
-
STATS_INIT_PERIOD
private static final long STATS_INIT_PERIOD- See Also:
-
stats_start_time
private long stats_start_time -
last_alien_count
private long last_alien_count -
last_alien_fv_count
private long last_alien_fv_count -
alien_average
-
alien_fv_average
-
random
-
BAD_IP_BLOOM_FILTER_SIZE
private static final int BAD_IP_BLOOM_FILTER_SIZE- See Also:
-
bad_ip_bloom_filter
-
class_mon
-
this_mon
-
initial_address_change_deferred
private boolean initial_address_change_deferred -
address_changing
boolean address_changing -
xfer_handler
-
alt_net_states
-
alt_net_providers
-
alt_net_providers_lock
-
-
Constructor Details
-
DHTTransportUDPImpl
public DHTTransportUDPImpl(byte _protocol_version, int _network, boolean _v6, String _ip, String _default_ip, int _port, int _max_fails_for_live, int _max_fails_for_unknown, long _timeout, int _dht_send_delay, int _dht_receive_delay, boolean _bootstrap_node, boolean _initial_reachability, DHTLogger _logger) throws DHTTransportException - Throws:
DHTTransportException
-
-
Method Details
-
createPacketHandler
- Throws:
DHTTransportException
-
getRequestHandler
- Specified by:
getRequestHandler
in interfaceDHTTransportUDP
-
getPacketHandler
- Specified by:
getPacketHandler
in interfaceDHTTransportUDP
-
setSuspended
public void setSuspended(boolean susp) - Specified by:
setSuspended
in interfaceDHTTransport
-
updateStats
protected void updateStats(int tick_count) -
recordSkew
-
getNodeStatus
protected int getNodeStatus() -
isReachable
public boolean isReachable()- Specified by:
isReachable
in interfaceDHTTransport
-
getProtocolVersion
public byte getProtocolVersion()- Specified by:
getProtocolVersion
in interfaceDHTTransport
-
getMinimumProtocolVersion
public byte getMinimumProtocolVersion()- Specified by:
getMinimumProtocolVersion
in interfaceDHTTransport
-
getPort
public int getPort()- Specified by:
getPort
in interfaceDHTTransport
-
setPort
- Specified by:
setPort
in interfaceDHTTransport
- Throws:
DHTTransportException
-
getTimeout
public long getTimeout()- Specified by:
getTimeout
in interfaceDHTTransport
-
setTimeout
public void setTimeout(long timeout) - Specified by:
setTimeout
in interfaceDHTTransport
-
getCurrentBindAddress
- Specified by:
getCurrentBindAddress
in interfaceDHTTransport
-
getExplicitBindAddress
- Specified by:
getExplicitBindAddress
in interfaceDHTTransport
-
setExplicitBindAddress
- Specified by:
setExplicitBindAddress
in interfaceDHTTransport
-
getNetwork
public int getNetwork()- Specified by:
getNetwork
in interfaceDHTTransport
-
getGenericFlags
public byte getGenericFlags()- Specified by:
getGenericFlags
in interfaceDHTTransport
-
getGenericFlags2
public byte getGenericFlags2() -
setGenericFlag
public void setGenericFlag(byte flag, boolean value) - Specified by:
setGenericFlag
in interfaceDHTTransport
-
isIPV6
public boolean isIPV6()- Specified by:
isIPV6
in interfaceDHTTransport
-
testInstanceIDChange
- Throws:
DHTTransportException
-
testTransportIDChange
- Throws:
DHTTransportException
-
testExternalAddressChange
public void testExternalAddressChange() -
testNetworkAlive
public void testNetworkAlive(boolean alive) -
getExternalAddress
-
informLocalAddress
-
externalAddressChange
protected void externalAddressChange(DHTTransportUDPContactImpl reporter, InetSocketAddress new_address, boolean force) throws DHTTransportException - Throws:
DHTTransportException
-
contactAlive
-
getReachableContacts
- Specified by:
getReachableContacts
in interfaceDHTTransport
-
getRecentContacts
- Specified by:
getRecentContacts
in interfaceDHTTransport
-
updateContactStatus
protected void updateContactStatus(DHTTransportUDPContactImpl contact, int status, boolean incoming) -
getRouteablePercentage
public int getRouteablePercentage() -
invalidExternalAddress
-
getMaxFailForLiveCount
protected int getMaxFailForLiveCount() -
getMaxFailForUnknownCount
protected int getMaxFailForUnknownCount() -
getLocalContact
Description copied from interface:DHTTransport
Gives access to the node ID for this transport- Specified by:
getLocalContact
in interfaceDHTTransport
- Returns:
-
setLocalContact
protected void setLocalContact() -
importContact
public DHTTransportContact importContact(DataInputStream is, boolean is_bootstrap) throws IOException, DHTTransportException - Specified by:
importContact
in interfaceDHTTransport
- Throws:
IOException
DHTTransportException
-
importContact
public DHTTransportUDPContact importContact(InetSocketAddress _address, byte _protocol_version, boolean is_bootstrap) throws DHTTransportException - Specified by:
importContact
in interfaceDHTTransportUDP
- Throws:
DHTTransportException
-
importContact
-
exportContact
public void exportContact(DHTTransportContact contact, DataOutputStream os) throws IOException, DHTTransportException - Throws:
IOException
DHTTransportException
-
exportContactToMap
-
importContact
- Specified by:
importContact
in interfaceDHTTransportUDP
-
removeContact
-
setRequestHandler
Description copied from interface:DHTTransport
Set the handler for incoming requests- Specified by:
setRequestHandler
in interfaceDHTTransport
-
getStats
- Specified by:
getStats
in interfaceDHTTransport
-
checkAddress
- Throws:
DHTUDPPacketHandlerException
-
sendPing
protected void sendPing(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, long timeout, int priority) -
sendPing
-
sendImmediatePing
protected void sendImmediatePing(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, long timeout) -
sendKeyBlockRequest
protected void sendKeyBlockRequest(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] block_request, byte[] block_signature) -
sendStats
-
askContactForExternalAddress
-
sendStore
public void sendStore(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[][] keys, DHTTransportValue[][] value_sets, int priority) -
sendQueryStore
public void sendQueryStore(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, int header_size, List<Object[]> key_details) -
sendFindNode
public void sendFindNode(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] nid) -
sendFindValue
public void sendFindValue(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] key, int max_values, short flags) -
getFullStats
-
registerTransferHandler
- Specified by:
registerTransferHandler
in interfaceDHTTransport
-
registerTransferHandler
public void registerTransferHandler(byte[] handler_key, DHTTransportTransferHandler handler, Map<String, Object> options) - Specified by:
registerTransferHandler
in interfaceDHTTransport
-
unregisterTransferHandler
- Specified by:
unregisterTransferHandler
in interfaceDHTTransport
-
readTransfer
public byte[] readTransfer(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] key, long timeout) throws DHTTransportException - Specified by:
readTransfer
in interfaceDHTTransport
- Throws:
DHTTransportException
-
writeTransfer
public void writeTransfer(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] key, byte[] data, long timeout) throws DHTTransportException - Specified by:
writeTransfer
in interfaceDHTTransport
- Throws:
DHTTransportException
-
writeReadTransfer
public byte[] writeReadTransfer(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] data, long timeout) throws DHTTransportException - Specified by:
writeReadTransfer
in interfaceDHTTransport
- Throws:
DHTTransportException
-
dataRequest
-
process
- Specified by:
process
in interfaceDHTUDPRequestHandler
-
process
public void process(DHTUDPPacketHandlerStub packet_handler_stub, DHTUDPPacketRequest request, boolean alien) - Specified by:
process
in interfaceDHTUDPRequestHandler
-
getAlternativeNetwork
- Specified by:
getAlternativeNetwork
in interfaceDHTTransportUDP
-
registerAlternativeNetwork
- Specified by:
registerAlternativeNetwork
in interfaceDHTTransportUDP
-
unregisterAlternativeNetwork
- Specified by:
unregisterAlternativeNetwork
in interfaceDHTTransportUDP
-
checkAltContacts
void checkAltContacts() -
sendAltContacts
-
requestAltContacts
-
receiveAltContacts
-
requestReceiveRequestProcessor
protected void requestReceiveRequestProcessor(DHTTransportUDPContactImpl contact, DHTUDPPacketRequest request) -
requestReceiveReplyProcessor
protected void requestReceiveReplyProcessor(DHTTransportUDPContactImpl contact, DHTUDPPacketReply reply) -
requestSendRequestProcessor
protected void requestSendRequestProcessor(DHTTransportUDPContactImpl contact, DHTUDPPacketRequest request) -
requestSendReplyProcessor
protected void requestSendReplyProcessor(DHTTransportUDPContactImpl remote_contact, DHTTransportReplyHandler handler, DHTUDPPacketReply reply, long elapsed_time) throws DHTUDPPacketHandlerException Returns false if this isn't an error reply, true if it is and a retry can be performed, throws an exception otherwise- Parameters:
reply
-- Throws:
DHTUDPPacketHandlerException
-
getConnectionID
protected long getConnectionID() -
supportsStorage
public boolean supportsStorage()- Specified by:
supportsStorage
in interfaceDHTTransport
-
addListener
- Specified by:
addListener
in interfaceDHTTransport
-
removeListener
- Specified by:
removeListener
in interfaceDHTTransport
-