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 DHTTransportUDP
DHTTransportUDP.Helper -
Field Summary
FieldsModifier and TypeFieldDescription(package private) booleanprivate final Averageprivate final Averageprivate Map<Integer, DHTTransportAlternativeNetwork> private final Objectprivate final Map<Integer, DHTTransportAlternativeNetworkImpl> private BloomFilterprivate static final intprivate booleanprivate static final AEMonitor(package private) final Map<InetSocketAddress, DHTTransportContact> private static final intprivate static final intprivate final intprivate final intprivate InetAddress(package private) Stringprivate byteprivate byteprivate booleanprivate final IpFilterprivate final Stringprivate longprivate longprivate long(package private) final List(package private) DHTTransportUDPContactImpl(package private) final DHTLoggerprivate final intprivate final intprivate intstatic final intstatic final intprivate final intprivate longprivate long(package private) DHTUDPPacketHandlerprivate intprivate final byteprivate Randomprivate booleanprivate booleanprivate final Mapprivate static final int(package private) DHTTransportRequestHandlerprivate long(package private) final Map<InetSocketAddress, DHTTransportContact> private static final intprivate final MovingImmediateAverage(package private) DHTTransportUDPStatsImplprivate static final intprivate static final longprivate static final intprivate longprivate longstatic final intstatic boolean(package private) final AEMonitorprivate final booleanprivate final DHTTransferHandlerFields inherited from interface DHTTransport
GF_DHT_SLEEPING, GF_NONEFields inherited from interface 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 TypeMethodDescriptionvoidprotected InetSocketAddressprotected voidcheckAddress(DHTTransportUDPContactImpl contact) (package private) voidprotected voidcontactAlive(DHTTransportUDPContactImpl contact) protected voidprotected voiddataRequest(DHTTransportUDPContactImpl originator, DHTUDPPacketData req) voidexportContact(DHTTransportContact contact, DataOutputStream os) exportContactToMap(DHTTransportContact contact) protected voidexternalAddressChange(DHTTransportUDPContactImpl reporter, InetSocketAddress new_address, boolean force) getAlternativeNetwork(int network_type) protected longprotected voidgetExternalAddress(String default_address, DHTLogger log) protected DHTTransportFullStatsgetFullStats(DHTTransportUDPContactImpl contact) bytebyteGives access to the node ID for this transportprotected intprotected intbyteintprotected intintgetPort()byteintgetStats()longprotected voidimportContact(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 voidinformLocalAddress(String address) protected booleanbooleanisIPV6()booleanvoidprocess(DHTUDPPacketRequest request, boolean alien) voidprocess(DHTUDPPacketHandlerStub packet_handler_stub, DHTUDPPacketRequest request, boolean alien) byte[]readTransfer(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] key, long timeout) (package private) voidprotected voidrecordSkew(InetSocketAddress originator_address, long skew) voidvoidregisterTransferHandler(byte[] handler_key, DHTTransportTransferHandler handler) voidregisterTransferHandler(byte[] handler_key, DHTTransportTransferHandler handler, Map<String, Object> options) voidremoveContact(DHTTransportContact contact) voidprivate voidprotected voidrequestReceiveReplyProcessor(DHTTransportUDPContactImpl contact, DHTUDPPacketReply reply) protected voidrequestReceiveRequestProcessor(DHTTransportUDPContactImpl contact, DHTUDPPacketRequest request) protected voidrequestSendReplyProcessor(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 voidrequestSendRequestProcessor(DHTTransportUDPContactImpl contact, DHTUDPPacketRequest request) private voidsendAltContacts(DHTUDPPacketRequestPing request, DHTUDPPacketReplyPing reply) voidsendFindNode(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] nid) voidsendFindValue(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] key, int max_values, short flags) protected voidsendImmediatePing(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, long timeout) protected voidsendKeyBlockRequest(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[] block_request, byte[] block_signature) protected voidsendPing(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler) protected voidsendPing(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, long timeout, int priority) voidsendQueryStore(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, int header_size, List<Object[]> key_details) protected voidsendStats(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler) voidsendStore(DHTTransportUDPContactImpl contact, DHTTransportReplyHandler handler, byte[][] keys, DHTTransportValue[][] value_sets, int priority) voidsetExplicitBindAddress(InetAddress address, boolean autoDelegate) voidsetGenericFlag(byte flag, boolean value) protected voidvoidsetPort(int new_port) voidsetRequestHandler(DHTTransportRequestHandler _request_handler) Set the handler for incoming requestsvoidsetSuspended(boolean susp) voidsetTimeout(long timeout) booleanvoidvoidvoidtestNetworkAlive(boolean alive) voidvoidvoidunregisterTransferHandler(byte[] handler_key, DHTTransportTransferHandler handler) protected voidupdateContactStatus(DHTTransportUDPContactImpl contact, int status, boolean incoming) protected voidupdateStats(int tick_count) byte[]writeReadTransfer(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] data, long timeout) voidwriteTransfer(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:
getRequestHandlerin interfaceDHTTransportUDP
-
getPacketHandler
- Specified by:
getPacketHandlerin interfaceDHTTransportUDP
-
setSuspended
public void setSuspended(boolean susp) - Specified by:
setSuspendedin interfaceDHTTransport
-
updateStats
protected void updateStats(int tick_count) -
recordSkew
-
getNodeStatus
protected int getNodeStatus() -
isReachable
public boolean isReachable()- Specified by:
isReachablein interfaceDHTTransport
-
getProtocolVersion
public byte getProtocolVersion()- Specified by:
getProtocolVersionin interfaceDHTTransport
-
getMinimumProtocolVersion
public byte getMinimumProtocolVersion()- Specified by:
getMinimumProtocolVersionin interfaceDHTTransport
-
getPort
public int getPort()- Specified by:
getPortin interfaceDHTTransport
-
setPort
- Specified by:
setPortin interfaceDHTTransport- Throws:
DHTTransportException
-
getTimeout
public long getTimeout()- Specified by:
getTimeoutin interfaceDHTTransport
-
setTimeout
public void setTimeout(long timeout) - Specified by:
setTimeoutin interfaceDHTTransport
-
getCurrentBindAddress
- Specified by:
getCurrentBindAddressin interfaceDHTTransport
-
getExplicitBindAddress
- Specified by:
getExplicitBindAddressin interfaceDHTTransport
-
setExplicitBindAddress
- Specified by:
setExplicitBindAddressin interfaceDHTTransport
-
getNetwork
public int getNetwork()- Specified by:
getNetworkin interfaceDHTTransport
-
getGenericFlags
public byte getGenericFlags()- Specified by:
getGenericFlagsin interfaceDHTTransport
-
getGenericFlags2
public byte getGenericFlags2() -
setGenericFlag
public void setGenericFlag(byte flag, boolean value) - Specified by:
setGenericFlagin interfaceDHTTransport
-
isIPV6
public boolean isIPV6()- Specified by:
isIPV6in 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:
getReachableContactsin interfaceDHTTransport
-
getRecentContacts
- Specified by:
getRecentContactsin 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:DHTTransportGives access to the node ID for this transport- Specified by:
getLocalContactin interfaceDHTTransport- Returns:
-
setLocalContact
protected void setLocalContact() -
importContact
public DHTTransportContact importContact(DataInputStream is, boolean is_bootstrap) throws IOException, DHTTransportException - Specified by:
importContactin interfaceDHTTransport- Throws:
IOExceptionDHTTransportException
-
importContact
public DHTTransportUDPContact importContact(InetSocketAddress _address, byte _protocol_version, boolean is_bootstrap) throws DHTTransportException - Specified by:
importContactin interfaceDHTTransportUDP- Throws:
DHTTransportException
-
importContact
-
exportContact
public void exportContact(DHTTransportContact contact, DataOutputStream os) throws IOException, DHTTransportException - Throws:
IOExceptionDHTTransportException
-
exportContactToMap
-
importContact
- Specified by:
importContactin interfaceDHTTransportUDP
-
removeContact
-
setRequestHandler
Description copied from interface:DHTTransportSet the handler for incoming requests- Specified by:
setRequestHandlerin interfaceDHTTransport- Parameters:
_request_handler-
-
getStats
- Specified by:
getStatsin 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:
registerTransferHandlerin interfaceDHTTransport
-
registerTransferHandler
public void registerTransferHandler(byte[] handler_key, DHTTransportTransferHandler handler, Map<String, Object> options) - Specified by:
registerTransferHandlerin interfaceDHTTransport
-
unregisterTransferHandler
- Specified by:
unregisterTransferHandlerin interfaceDHTTransport
-
readTransfer
public byte[] readTransfer(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] key, long timeout) throws DHTTransportException - Specified by:
readTransferin interfaceDHTTransport- Throws:
DHTTransportException
-
writeTransfer
public void writeTransfer(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] key, byte[] data, long timeout) throws DHTTransportException - Specified by:
writeTransferin interfaceDHTTransport- Throws:
DHTTransportException
-
writeReadTransfer
public byte[] writeReadTransfer(DHTTransportProgressListener listener, DHTTransportContact target, byte[] handler_key, byte[] data, long timeout) throws DHTTransportException - Specified by:
writeReadTransferin interfaceDHTTransport- Throws:
DHTTransportException
-
dataRequest
-
process
- Specified by:
processin interfaceDHTUDPRequestHandler
-
process
public void process(DHTUDPPacketHandlerStub packet_handler_stub, DHTUDPPacketRequest request, boolean alien) - Specified by:
processin interfaceDHTUDPRequestHandler
-
getAlternativeNetwork
- Specified by:
getAlternativeNetworkin interfaceDHTTransportUDP
-
registerAlternativeNetwork
- Specified by:
registerAlternativeNetworkin interfaceDHTTransportUDP
-
unregisterAlternativeNetwork
- Specified by:
unregisterAlternativeNetworkin 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:
supportsStoragein interfaceDHTTransport
-
addListener
- Specified by:
addListenerin interfaceDHTTransport
-
removeListener
- Specified by:
removeListenerin interfaceDHTTransport
-