com.aelitis.azureus.core.dht.transport.udp.impl
Class DHTTransportUDPImpl
java.lang.Object
com.aelitis.azureus.core.dht.transport.udp.impl.DHTTransportUDPImpl
- All Implemented Interfaces:
- DHTTransport, DHTTransportUDP, DHTUDPRequestHandler
public class DHTTransportUDPImpl
- extends java.lang.Object
- implements DHTTransportUDP, DHTUDPRequestHandler
- Author:
- parg
Fields inherited from interface com.aelitis.azureus.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_BLOCK_KEYS, PROTOCOL_VERSION_CVS, 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_MAIN, PROTOCOL_VERSION_MIN, PROTOCOL_VERSION_MIN_CVS, 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 |
DHTTransportUDPImpl(byte _protocol_version,
int _network,
boolean _v6,
java.lang.String _ip,
java.lang.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 |
void |
addListener(DHTTransportListener l)
|
protected java.net.InetSocketAddress |
askContactForExternalAddress(DHTTransportUDPContactImpl contact)
|
protected void |
checkAddress(DHTTransportUDPContactImpl contact)
|
protected void |
contactAlive(DHTTransportUDPContactImpl contact)
|
protected void |
createPacketHandler()
|
protected void |
dataRequest(DHTTransportUDPContactImpl originator,
DHTUDPPacketData req)
|
void |
exportContact(DHTTransportContact contact,
java.io.DataOutputStream os)
|
java.util.Map<java.lang.String,java.lang.Object> |
exportContactToMap(DHTTransportContact contact)
|
protected void |
externalAddressChange(DHTTransportUDPContactImpl reporter,
java.net.InetSocketAddress new_address,
boolean force)
|
DHTTransportAlternativeNetwork |
getAlternativeNetwork(int network_type)
|
protected long |
getConnectionID()
|
protected void |
getExternalAddress(java.lang.String default_address,
DHTLogger log)
|
protected DHTTransportFullStats |
getFullStats(DHTTransportUDPContactImpl contact)
|
byte |
getGenericFlags()
|
byte |
getGenericFlags2()
|
DHTTransportContact |
getLocalContact()
Gives access to the node ID for this transport |
protected int |
getMaxFailForLiveCount()
|
protected int |
getMaxFailForUnknownCount()
|
byte |
getMinimumProtocolVersion()
|
int |
getNetwork()
|
protected int |
getNodeStatus()
|
DHTUDPPacketHandler |
getPacketHandler()
|
int |
getPort()
|
byte |
getProtocolVersion()
|
DHTTransportContact[] |
getReachableContacts()
|
DHTTransportContact[] |
getRecentContacts()
|
DHTUDPRequestHandler |
getRequestHandler()
|
int |
getRouteablePercentage()
|
DHTTransportStats |
getStats()
|
long |
getTimeout()
|
DHTTransportContact |
importContact(java.io.DataInputStream is,
boolean is_bootstrap)
|
protected void |
importContact(DHTTransportUDPContactImpl contact,
boolean is_bootstrap)
|
DHTTransportUDPContact |
importContact(java.net.InetSocketAddress _address,
byte _protocol_version,
boolean is_bootstrap)
|
DHTTransportUDPContact |
importContact(java.util.Map<java.lang.String,java.lang.Object> map)
|
protected void |
informLocalAddress(java.lang.String address)
|
protected boolean |
invalidExternalAddress(java.net.InetAddress ia)
|
boolean |
isIPV6()
|
boolean |
isReachable()
|
void |
process(DHTUDPPacketHandlerStub packet_handler_stub,
DHTUDPPacketRequest request,
boolean alien)
|
void |
process(DHTUDPPacketRequest request,
boolean alien)
|
byte[] |
readTransfer(DHTTransportProgressListener listener,
DHTTransportContact target,
byte[] handler_key,
byte[] key,
long timeout)
|
protected void |
recordSkew(java.net.InetSocketAddress originator_address,
long skew)
|
void |
registerAlternativeNetwork(DHTTransportAlternativeNetwork network)
|
void |
registerTransferHandler(byte[] handler_key,
DHTTransportTransferHandler handler)
|
void |
registerTransferHandler(byte[] handler_key,
DHTTransportTransferHandler handler,
java.util.Map<java.lang.String,java.lang.Object> options)
|
void |
removeContact(DHTTransportContact contact)
|
void |
removeListener(DHTTransportListener l)
|
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 otherwise |
protected void |
requestSendRequestProcessor(DHTTransportUDPContactImpl contact,
DHTUDPPacketRequest request)
|
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,
java.util.List<java.lang.Object[]> key_details)
|
protected void |
sendStats(DHTTransportUDPContactImpl contact,
DHTTransportReplyHandler handler)
|
void |
sendStore(DHTTransportUDPContactImpl contact,
DHTTransportReplyHandler handler,
byte[][] keys,
DHTTransportValue[][] value_sets,
int priority)
|
void |
setGenericFlag(byte flag,
boolean value)
|
protected void |
setLocalContact()
|
void |
setPort(int new_port)
|
void |
setRequestHandler(DHTTransportRequestHandler _request_handler)
Set the handler for incoming requests |
void |
setSuspended(boolean susp)
|
void |
setTimeout(long timeout)
|
boolean |
supportsStorage()
|
void |
testExternalAddressChange()
|
void |
testInstanceIDChange()
|
void |
testNetworkAlive(boolean alive)
|
void |
testTransportIDChange()
|
void |
unregisterAlternativeNetwork(DHTTransportAlternativeNetwork network)
|
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)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
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:
- Constant Field Values
MIN_ADDRESS_CHANGE_PERIOD_NEXT_DEFAULT
public static final int MIN_ADDRESS_CHANGE_PERIOD_NEXT_DEFAULT
- See Also:
- Constant Field Values
STORE_TIMEOUT_MULTIPLIER
public static final int STORE_TIMEOUT_MULTIPLIER
- See Also:
- Constant Field Values
DHTTransportUDPImpl
public DHTTransportUDPImpl(byte _protocol_version,
int _network,
boolean _v6,
java.lang.String _ip,
java.lang.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
createPacketHandler
protected void createPacketHandler()
throws DHTTransportException
- Throws:
DHTTransportException
getRequestHandler
public DHTUDPRequestHandler getRequestHandler()
- Specified by:
getRequestHandler
in interface DHTTransportUDP
getPacketHandler
public DHTUDPPacketHandler getPacketHandler()
- Specified by:
getPacketHandler
in interface DHTTransportUDP
setSuspended
public void setSuspended(boolean susp)
- Specified by:
setSuspended
in interface DHTTransport
updateStats
protected void updateStats(int tick_count)
recordSkew
protected void recordSkew(java.net.InetSocketAddress originator_address,
long skew)
getNodeStatus
protected int getNodeStatus()
isReachable
public boolean isReachable()
- Specified by:
isReachable
in interface DHTTransport
getProtocolVersion
public byte getProtocolVersion()
- Specified by:
getProtocolVersion
in interface DHTTransport
getMinimumProtocolVersion
public byte getMinimumProtocolVersion()
- Specified by:
getMinimumProtocolVersion
in interface DHTTransport
getPort
public int getPort()
- Specified by:
getPort
in interface DHTTransport
setPort
public void setPort(int new_port)
throws DHTTransportException
- Specified by:
setPort
in interface DHTTransport
- Throws:
DHTTransportException
getTimeout
public long getTimeout()
- Specified by:
getTimeout
in interface DHTTransport
setTimeout
public void setTimeout(long timeout)
- Specified by:
setTimeout
in interface DHTTransport
getNetwork
public int getNetwork()
- Specified by:
getNetwork
in interface DHTTransport
getGenericFlags
public byte getGenericFlags()
- Specified by:
getGenericFlags
in interface DHTTransport
getGenericFlags2
public byte getGenericFlags2()
setGenericFlag
public void setGenericFlag(byte flag,
boolean value)
- Specified by:
setGenericFlag
in interface DHTTransport
isIPV6
public boolean isIPV6()
- Specified by:
isIPV6
in interface DHTTransport
testInstanceIDChange
public void testInstanceIDChange()
throws DHTTransportException
- Throws:
DHTTransportException
testTransportIDChange
public void testTransportIDChange()
throws DHTTransportException
- Throws:
DHTTransportException
testExternalAddressChange
public void testExternalAddressChange()
testNetworkAlive
public void testNetworkAlive(boolean alive)
getExternalAddress
protected void getExternalAddress(java.lang.String default_address,
DHTLogger log)
informLocalAddress
protected void informLocalAddress(java.lang.String address)
externalAddressChange
protected void externalAddressChange(DHTTransportUDPContactImpl reporter,
java.net.InetSocketAddress new_address,
boolean force)
throws DHTTransportException
- Throws:
DHTTransportException
contactAlive
protected void contactAlive(DHTTransportUDPContactImpl contact)
getReachableContacts
public DHTTransportContact[] getReachableContacts()
- Specified by:
getReachableContacts
in interface DHTTransport
getRecentContacts
public DHTTransportContact[] getRecentContacts()
- Specified by:
getRecentContacts
in interface DHTTransport
updateContactStatus
protected void updateContactStatus(DHTTransportUDPContactImpl contact,
int status,
boolean incoming)
getRouteablePercentage
public int getRouteablePercentage()
invalidExternalAddress
protected boolean invalidExternalAddress(java.net.InetAddress ia)
getMaxFailForLiveCount
protected int getMaxFailForLiveCount()
getMaxFailForUnknownCount
protected int getMaxFailForUnknownCount()
getLocalContact
public DHTTransportContact getLocalContact()
- Description copied from interface:
DHTTransport
- Gives access to the node ID for this transport
- Specified by:
getLocalContact
in interface DHTTransport
- Returns:
setLocalContact
protected void setLocalContact()
importContact
public DHTTransportContact importContact(java.io.DataInputStream is,
boolean is_bootstrap)
throws java.io.IOException,
DHTTransportException
- Specified by:
importContact
in interface DHTTransport
- Throws:
java.io.IOException
DHTTransportException
importContact
public DHTTransportUDPContact importContact(java.net.InetSocketAddress _address,
byte _protocol_version,
boolean is_bootstrap)
throws DHTTransportException
- Specified by:
importContact
in interface DHTTransportUDP
- Throws:
DHTTransportException
importContact
protected void importContact(DHTTransportUDPContactImpl contact,
boolean is_bootstrap)
exportContact
public void exportContact(DHTTransportContact contact,
java.io.DataOutputStream os)
throws java.io.IOException,
DHTTransportException
- Throws:
java.io.IOException
DHTTransportException
exportContactToMap
public java.util.Map<java.lang.String,java.lang.Object> exportContactToMap(DHTTransportContact contact)
importContact
public DHTTransportUDPContact importContact(java.util.Map<java.lang.String,java.lang.Object> map)
- Specified by:
importContact
in interface DHTTransportUDP
removeContact
public void removeContact(DHTTransportContact contact)
setRequestHandler
public void setRequestHandler(DHTTransportRequestHandler _request_handler)
- Description copied from interface:
DHTTransport
- Set the handler for incoming requests
- Specified by:
setRequestHandler
in interface DHTTransport
getStats
public DHTTransportStats getStats()
- Specified by:
getStats
in interface DHTTransport
checkAddress
protected void checkAddress(DHTTransportUDPContactImpl contact)
throws DHTUDPPacketHandlerException
- Throws:
DHTUDPPacketHandlerException
sendPing
protected void sendPing(DHTTransportUDPContactImpl contact,
DHTTransportReplyHandler handler,
long timeout,
int priority)
sendPing
protected void sendPing(DHTTransportUDPContactImpl contact,
DHTTransportReplyHandler handler)
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
protected void sendStats(DHTTransportUDPContactImpl contact,
DHTTransportReplyHandler handler)
askContactForExternalAddress
protected java.net.InetSocketAddress askContactForExternalAddress(DHTTransportUDPContactImpl contact)
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,
java.util.List<java.lang.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
protected DHTTransportFullStats getFullStats(DHTTransportUDPContactImpl contact)
registerTransferHandler
public void registerTransferHandler(byte[] handler_key,
DHTTransportTransferHandler handler)
- Specified by:
registerTransferHandler
in interface DHTTransport
registerTransferHandler
public void registerTransferHandler(byte[] handler_key,
DHTTransportTransferHandler handler,
java.util.Map<java.lang.String,java.lang.Object> options)
- Specified by:
registerTransferHandler
in interface DHTTransport
unregisterTransferHandler
public void unregisterTransferHandler(byte[] handler_key,
DHTTransportTransferHandler handler)
- Specified by:
unregisterTransferHandler
in interface DHTTransport
readTransfer
public byte[] readTransfer(DHTTransportProgressListener listener,
DHTTransportContact target,
byte[] handler_key,
byte[] key,
long timeout)
throws DHTTransportException
- Specified by:
readTransfer
in interface DHTTransport
- 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 interface DHTTransport
- Throws:
DHTTransportException
writeReadTransfer
public byte[] writeReadTransfer(DHTTransportProgressListener listener,
DHTTransportContact target,
byte[] handler_key,
byte[] data,
long timeout)
throws DHTTransportException
- Specified by:
writeReadTransfer
in interface DHTTransport
- Throws:
DHTTransportException
dataRequest
protected void dataRequest(DHTTransportUDPContactImpl originator,
DHTUDPPacketData req)
process
public void process(DHTUDPPacketRequest request,
boolean alien)
- Specified by:
process
in interface DHTUDPRequestHandler
process
public void process(DHTUDPPacketHandlerStub packet_handler_stub,
DHTUDPPacketRequest request,
boolean alien)
- Specified by:
process
in interface DHTUDPRequestHandler
getAlternativeNetwork
public DHTTransportAlternativeNetwork getAlternativeNetwork(int network_type)
- Specified by:
getAlternativeNetwork
in interface DHTTransportUDP
registerAlternativeNetwork
public void registerAlternativeNetwork(DHTTransportAlternativeNetwork network)
- Specified by:
registerAlternativeNetwork
in interface DHTTransportUDP
unregisterAlternativeNetwork
public void unregisterAlternativeNetwork(DHTTransportAlternativeNetwork network)
- Specified by:
unregisterAlternativeNetwork
in interface DHTTransportUDP
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 interface DHTTransport
addListener
public void addListener(DHTTransportListener l)
- Specified by:
addListener
in interface DHTTransport
removeListener
public void removeListener(DHTTransportListener l)
- Specified by:
removeListener
in interface DHTTransport