Package com.biglybt.core.dht.nat.impl
Class DHTNATPuncherImpl
- java.lang.Object
-
- com.biglybt.core.dht.nat.impl.DHTNATPuncherImpl
-
- All Implemented Interfaces:
DHTNATPuncher
public class DHTNATPuncherImpl extends java.lang.Object implements DHTNATPuncher
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
DHTNATPuncherImpl.BindingData
-
Field Summary
Fields Modifier and Type Field Description private DHTNATPuncherAdapter
adapter
private DHTTransportContact
current_local
(package private) DHTTransportContact
current_target
private DHT
dht
private java.util.Map
explicit_rendezvous_map
private java.util.Map
failed_rendezvous
private static int
FAILED_RENDEZVOUS_HISTORY_MAX
private boolean
force_active
private Formatters
formatters
private boolean
is_secondary
private static long
last_debug
private DHTTransportContact
last_ok_rendezvous
private long
last_publish
(package private) byte[]
last_publish_key
(package private) java.util.List<DHTTransportContact>
last_write_set
private CopyOnWriteList<DHTNATPuncherListener>
listeners
private DHTLogger
logger
private int[]
MESSAGE_STATS
private java.util.List
oustanding_punches
private PluginInterface
plugin_interface
(package private) Monitor
pub_mon
(package private) boolean
publish_in_progress
private Monitor
punch_mon
private int
punch_recv_fail
private int
punch_recv_ok
private int
punch_send_fail
private int
punch_send_ok
private int
rendevzous_fail_count
(package private) java.util.Map<java.lang.String,DHTNATPuncherImpl.BindingData>
rendezvous_bindings
private static int
RENDEZVOUS_CLIENT_PING_PERIOD
private long
rendezvous_last_fail_time
private long
rendezvous_last_ok_time
private DHTTransportContact
rendezvous_local_contact
(package private) java.util.Map<java.lang.String,java.lang.Object[]>
rendezvous_lookup_cache
private long
rendezvous_lookup_cache_tidy_time
private static int
RENDEZVOUS_LOOKUP_TIMEOUT
private static int
RENDEZVOUS_PING_FAIL_LIMIT
private boolean
rendezvous_running
private static int
RENDEZVOUS_SERVER_MAX
private static int
RENDEZVOUS_SERVER_TIMEOUT
(package private) DHTTransportContact
rendezvous_target
private static int
REPUBLISH_TIME_MIN
private static int
RESP_FAILED
private static int
RESP_NOT_OK
private static int
RESP_OK
private static int
RT_BIND_REPLY
private static int
RT_BIND_REQUEST
private static int
RT_CLOSE_REPLY
private static int
RT_CLOSE_REQUEST
private static int
RT_CONNECT_REPLY
private static int
RT_CONNECT_REQUEST
private static int
RT_PUNCH_REPLY
private static int
RT_PUNCH_REQUEST
private static int
RT_QUERY_REPLY
private static int
RT_QUERY_REQUEST
private static int
RT_TUNNEL_INBOUND
private static int
RT_TUNNEL_OUTBOUND
(package private) CopyOnWriteList<DHTNATPuncherImpl>
secondaries
(package private) Monitor
server_mon
private boolean
started
(package private) boolean
suspended
private static boolean
TESTING
private UTTimer
timer1
private UTTimer
timer2
private UTTimer
timer3
private static boolean
TRACE
private static byte[]
transfer_handler_key
private static int
TRANSFER_TIMEOUT
private static int
TUNNEL_TIMEOUT
-
Constructor Summary
Constructors Modifier Constructor Description DHTNATPuncherImpl(DHTNATPuncherAdapter _adapter, DHT _dht)
private
DHTNATPuncherImpl(DHTNATPuncherAdapter _adapter, DHT _dht, boolean _is_secondary)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
active()
We're trying to run a rendezvousvoid
addListener(DHTNATPuncherListener listener)
protected DHTTransportUDPContact
decodeContact(byte[] bytes)
void
destroy()
protected byte[]
encodeContact(DHTTransportContact contact)
protected byte[]
encodePublishValue(DHTTransportContact contact)
void
forceActive(boolean force)
DHTTransportContact
getLocalContact()
protected byte[]
getPublishKey(DHTTransportContact contact)
DHTTransportContact
getRendezvous()
protected DHTTransportContact
getRendezvous(java.lang.String reason, DHTTransportContact target)
DHTNATPuncher
getSecondaryPuncher()
java.lang.String
getStats()
private static java.util.Map
handleDebug(java.util.Map map)
protected void
log(java.lang.String str)
protected void
log(java.lang.Throwable e)
boolean
operational()
Got a good running rendezvousprotected void
publish(boolean force)
protected void
publishSupport()
java.util.Map
punch(java.lang.String reason, DHTTransportContact _target, DHTTransportContact[] rendezvous_used, java.util.Map originator_client_data)
java.util.Map
punch(java.lang.String reason, java.net.InetSocketAddress[] target, DHTTransportContact[] rendezvous_used, java.util.Map originator_client_data)
protected void
receiveBind(DHTTransportUDPContact originator, java.util.Map request, java.util.Map response)
protected void
receiveClose(DHTTransportUDPContact originator, java.util.Map request, java.util.Map response)
protected void
receiveConnect(DHTTransportContact rendezvous, java.util.Map request, java.util.Map response)
protected void
receivePunch(DHTTransportUDPContact originator, java.util.Map request, java.util.Map response)
protected void
receiveQuery(DHTTransportUDPContact originator, java.util.Map request, java.util.Map response)
protected byte[]
receiveRequest(DHTTransportUDPContact originator, byte[] data)
protected java.util.Map
receiveRequest(DHTTransportUDPContact originator, java.util.Map data)
protected void
receiveTunnelInbound(DHTTransportUDPContact originator, java.util.Map data)
protected void
receiveTunnelOutbound(DHTTransportContact originator, java.util.Map data)
void
removeListener(DHTNATPuncherListener listener)
protected void
rendezvousFailed(DHTTransportContact current_target, boolean tidy)
protected void
runRendezvous()
protected void
runRendezvousSupport()
protected int
sendBind(DHTTransportContact target)
protected int
sendClose(DHTTransportContact target)
protected java.util.Map
sendConnect(DHTTransportContact target, DHTTransportContact originator, java.util.Map originator_client_data)
java.util.Map
sendMessage(java.net.InetSocketAddress rendezvous, java.net.InetSocketAddress target, java.util.Map message)
protected java.util.Map
sendPunch(DHTTransportContact rendezvous, DHTTransportUDPContact target, java.util.Map originator_client_data, boolean no_tunnel)
private int
sendQuery(DHTTransportContact target)
XXX: unusedprotected byte[]
sendRequest(DHTTransportContact target, byte[] data, int timeout)
protected java.util.Map
sendRequest(DHTTransportContact target, java.util.Map data, int timeout)
protected boolean
sendTunnelInbound(DHTTransportContact target)
protected boolean
sendTunnelMessage(DHTTransportContact target, byte[] data)
protected boolean
sendTunnelMessage(DHTTransportContact target, java.util.Map data)
protected boolean
sendTunnelOutbound(DHTTransportContact target)
void
setRendezvous(DHTTransportContact target, DHTTransportContact rendezvous)
void
setSuspended(boolean susp)
void
start()
protected void
trace(java.lang.String str)
-
-
-
Field Detail
-
TESTING
private static final boolean TESTING
- See Also:
- Constant Field Values
-
TRACE
private static final boolean TRACE
- See Also:
- Constant Field Values
-
RT_BIND_REQUEST
private static final int RT_BIND_REQUEST
- See Also:
- Constant Field Values
-
RT_BIND_REPLY
private static final int RT_BIND_REPLY
- See Also:
- Constant Field Values
-
RT_PUNCH_REQUEST
private static final int RT_PUNCH_REQUEST
- See Also:
- Constant Field Values
-
RT_PUNCH_REPLY
private static final int RT_PUNCH_REPLY
- See Also:
- Constant Field Values
-
RT_CONNECT_REQUEST
private static final int RT_CONNECT_REQUEST
- See Also:
- Constant Field Values
-
RT_CONNECT_REPLY
private static final int RT_CONNECT_REPLY
- See Also:
- Constant Field Values
-
RT_TUNNEL_INBOUND
private static final int RT_TUNNEL_INBOUND
- See Also:
- Constant Field Values
-
RT_TUNNEL_OUTBOUND
private static final int RT_TUNNEL_OUTBOUND
- See Also:
- Constant Field Values
-
RT_QUERY_REQUEST
private static final int RT_QUERY_REQUEST
- See Also:
- Constant Field Values
-
RT_QUERY_REPLY
private static final int RT_QUERY_REPLY
- See Also:
- Constant Field Values
-
RT_CLOSE_REQUEST
private static final int RT_CLOSE_REQUEST
- See Also:
- Constant Field Values
-
RT_CLOSE_REPLY
private static final int RT_CLOSE_REPLY
- See Also:
- Constant Field Values
-
RESP_OK
private static final int RESP_OK
- See Also:
- Constant Field Values
-
RESP_NOT_OK
private static final int RESP_NOT_OK
- See Also:
- Constant Field Values
-
RESP_FAILED
private static final int RESP_FAILED
- See Also:
- Constant Field Values
-
transfer_handler_key
private static final byte[] transfer_handler_key
-
started
private boolean started
-
adapter
private final DHTNATPuncherAdapter adapter
-
dht
private final DHT dht
-
logger
private final DHTLogger logger
-
is_secondary
private final boolean is_secondary
-
plugin_interface
private final PluginInterface plugin_interface
-
formatters
private final Formatters formatters
-
timer1
private final UTTimer timer1
-
timer2
private final UTTimer timer2
-
timer3
private final UTTimer timer3
-
REPUBLISH_TIME_MIN
private static final int REPUBLISH_TIME_MIN
- See Also:
- Constant Field Values
-
TRANSFER_TIMEOUT
private static final int TRANSFER_TIMEOUT
- See Also:
- Constant Field Values
-
RENDEZVOUS_LOOKUP_TIMEOUT
private static final int RENDEZVOUS_LOOKUP_TIMEOUT
- See Also:
- Constant Field Values
-
TUNNEL_TIMEOUT
private static final int TUNNEL_TIMEOUT
- See Also:
- Constant Field Values
-
RENDEZVOUS_SERVER_MAX
private static final int RENDEZVOUS_SERVER_MAX
- See Also:
- Constant Field Values
-
RENDEZVOUS_SERVER_TIMEOUT
private static final int RENDEZVOUS_SERVER_TIMEOUT
- See Also:
- Constant Field Values
-
RENDEZVOUS_CLIENT_PING_PERIOD
private static final int RENDEZVOUS_CLIENT_PING_PERIOD
- See Also:
- Constant Field Values
-
RENDEZVOUS_PING_FAIL_LIMIT
private static final int RENDEZVOUS_PING_FAIL_LIMIT
- See Also:
- Constant Field Values
-
server_mon
final Monitor server_mon
-
rendezvous_bindings
final java.util.Map<java.lang.String,DHTNATPuncherImpl.BindingData> rendezvous_bindings
-
secondaries
final CopyOnWriteList<DHTNATPuncherImpl> secondaries
-
force_active
private boolean force_active
-
last_publish
private long last_publish
-
pub_mon
final Monitor pub_mon
-
publish_in_progress
boolean publish_in_progress
-
rendezvous_local_contact
private volatile DHTTransportContact rendezvous_local_contact
-
rendezvous_target
volatile DHTTransportContact rendezvous_target
-
last_ok_rendezvous
private volatile DHTTransportContact last_ok_rendezvous
-
MESSAGE_STATS
private final int[] MESSAGE_STATS
-
punch_send_ok
private int punch_send_ok
-
punch_send_fail
private int punch_send_fail
-
punch_recv_ok
private int punch_recv_ok
-
punch_recv_fail
private int punch_recv_fail
-
FAILED_RENDEZVOUS_HISTORY_MAX
private static final int FAILED_RENDEZVOUS_HISTORY_MAX
- See Also:
- Constant Field Values
-
failed_rendezvous
private final java.util.Map failed_rendezvous
-
rendezvous_running
private boolean rendezvous_running
-
explicit_rendezvous_map
private final java.util.Map explicit_rendezvous_map
-
punch_mon
private final Monitor punch_mon
-
oustanding_punches
private final java.util.List oustanding_punches
-
current_local
private DHTTransportContact current_local
-
current_target
DHTTransportContact current_target
-
rendevzous_fail_count
private int rendevzous_fail_count
-
rendezvous_last_ok_time
private long rendezvous_last_ok_time
-
rendezvous_last_fail_time
private long rendezvous_last_fail_time
-
last_publish_key
volatile byte[] last_publish_key
-
last_write_set
volatile java.util.List<DHTTransportContact> last_write_set
-
listeners
private final CopyOnWriteList<DHTNATPuncherListener> listeners
-
suspended
boolean suspended
-
rendezvous_lookup_cache
final java.util.Map<java.lang.String,java.lang.Object[]> rendezvous_lookup_cache
-
rendezvous_lookup_cache_tidy_time
private long rendezvous_lookup_cache_tidy_time
-
last_debug
private static long last_debug
-
-
Constructor Detail
-
DHTNATPuncherImpl
public DHTNATPuncherImpl(DHTNATPuncherAdapter _adapter, DHT _dht)
-
DHTNATPuncherImpl
private DHTNATPuncherImpl(DHTNATPuncherAdapter _adapter, DHT _dht, boolean _is_secondary)
-
-
Method Detail
-
getSecondaryPuncher
public DHTNATPuncher getSecondaryPuncher()
- Specified by:
getSecondaryPuncher
in interfaceDHTNATPuncher
-
start
public void start()
- Specified by:
start
in interfaceDHTNATPuncher
-
setSuspended
public void setSuspended(boolean susp)
- Specified by:
setSuspended
in interfaceDHTNATPuncher
-
active
public boolean active()
Description copied from interface:DHTNATPuncher
We're trying to run a rendezvous- Specified by:
active
in interfaceDHTNATPuncher
- Returns:
-
forceActive
public void forceActive(boolean force)
- Specified by:
forceActive
in interfaceDHTNATPuncher
-
operational
public boolean operational()
Description copied from interface:DHTNATPuncher
Got a good running rendezvous- Specified by:
operational
in interfaceDHTNATPuncher
- Returns:
-
getLocalContact
public DHTTransportContact getLocalContact()
- Specified by:
getLocalContact
in interfaceDHTNATPuncher
-
getRendezvous
public DHTTransportContact getRendezvous()
- Specified by:
getRendezvous
in interfaceDHTNATPuncher
-
publish
protected void publish(boolean force)
-
publishSupport
protected void publishSupport()
-
runRendezvous
protected void runRendezvous()
-
runRendezvousSupport
protected void runRendezvousSupport()
-
rendezvousFailed
protected void rendezvousFailed(DHTTransportContact current_target, boolean tidy)
-
sendRequest
protected byte[] sendRequest(DHTTransportContact target, byte[] data, int timeout)
-
receiveRequest
protected byte[] receiveRequest(DHTTransportUDPContact originator, byte[] data)
-
sendRequest
protected java.util.Map sendRequest(DHTTransportContact target, java.util.Map data, int timeout)
-
receiveRequest
protected java.util.Map receiveRequest(DHTTransportUDPContact originator, java.util.Map data)
-
sendTunnelMessage
protected boolean sendTunnelMessage(DHTTransportContact target, java.util.Map data)
-
sendTunnelMessage
protected boolean sendTunnelMessage(DHTTransportContact target, byte[] data)
-
sendBind
protected int sendBind(DHTTransportContact target)
-
receiveBind
protected void receiveBind(DHTTransportUDPContact originator, java.util.Map request, java.util.Map response)
-
destroy
public void destroy()
- Specified by:
destroy
in interfaceDHTNATPuncher
-
sendClose
protected int sendClose(DHTTransportContact target)
-
receiveClose
protected void receiveClose(DHTTransportUDPContact originator, java.util.Map request, java.util.Map response)
-
sendQuery
private int sendQuery(DHTTransportContact target)
XXX: unused
-
receiveQuery
protected void receiveQuery(DHTTransportUDPContact originator, java.util.Map request, java.util.Map response)
-
sendPunch
protected java.util.Map sendPunch(DHTTransportContact rendezvous, DHTTransportUDPContact target, java.util.Map originator_client_data, boolean no_tunnel)
-
receivePunch
protected void receivePunch(DHTTransportUDPContact originator, java.util.Map request, java.util.Map response)
-
sendConnect
protected java.util.Map sendConnect(DHTTransportContact target, DHTTransportContact originator, java.util.Map originator_client_data)
-
receiveConnect
protected void receiveConnect(DHTTransportContact rendezvous, java.util.Map request, java.util.Map response)
-
sendTunnelInbound
protected boolean sendTunnelInbound(DHTTransportContact target)
-
receiveTunnelInbound
protected void receiveTunnelInbound(DHTTransportUDPContact originator, java.util.Map data)
-
sendTunnelOutbound
protected boolean sendTunnelOutbound(DHTTransportContact target)
-
receiveTunnelOutbound
protected void receiveTunnelOutbound(DHTTransportContact originator, java.util.Map data)
-
punch
public java.util.Map punch(java.lang.String reason, java.net.InetSocketAddress[] target, DHTTransportContact[] rendezvous_used, java.util.Map originator_client_data)
- Specified by:
punch
in interfaceDHTNATPuncher
target
- input/output parameter for target of traversal- Returns:
-
punch
public java.util.Map punch(java.lang.String reason, DHTTransportContact _target, DHTTransportContact[] rendezvous_used, java.util.Map originator_client_data)
- Specified by:
punch
in interfaceDHTNATPuncher
-
sendMessage
public java.util.Map sendMessage(java.net.InetSocketAddress rendezvous, java.net.InetSocketAddress target, java.util.Map message)
- Specified by:
sendMessage
in interfaceDHTNATPuncher
-
setRendezvous
public void setRendezvous(DHTTransportContact target, DHTTransportContact rendezvous)
- Specified by:
setRendezvous
in interfaceDHTNATPuncher
-
getRendezvous
protected DHTTransportContact getRendezvous(java.lang.String reason, DHTTransportContact target)
-
getPublishKey
protected byte[] getPublishKey(DHTTransportContact contact)
-
handleDebug
private static java.util.Map handleDebug(java.util.Map map)
-
encodePublishValue
protected byte[] encodePublishValue(DHTTransportContact contact)
-
encodeContact
protected byte[] encodeContact(DHTTransportContact contact)
-
decodeContact
protected DHTTransportUDPContact decodeContact(byte[] bytes)
-
addListener
public void addListener(DHTNATPuncherListener listener)
- Specified by:
addListener
in interfaceDHTNATPuncher
-
removeListener
public void removeListener(DHTNATPuncherListener listener)
- Specified by:
removeListener
in interfaceDHTNATPuncher
-
log
protected void log(java.lang.String str)
-
log
protected void log(java.lang.Throwable e)
-
trace
protected void trace(java.lang.String str)
-
getStats
public java.lang.String getStats()
- Specified by:
getStats
in interfaceDHTNATPuncher
-
-