public class UdpSocketHandler extends java.lang.Object implements PrioRunnable, PacketSocketHandler, PortForwardSensitiveSocketHandler
| Modifier and Type | Field and Description |
|---|---|
static int |
MIN_MTU |
static int |
UDP_HEADERS_LENGTH |
| Constructor and Description |
|---|
UdpSocketHandler(int listenPort,
java.net.InetAddress bindto,
Node node,
long startupTime,
java.lang.String title,
IOStatisticCollector collector) |
| Modifier and Type | Method and Description |
|---|---|
int |
calculateMaxPacketSize() |
void |
close() |
AddressTracker |
getAddressTracker() |
java.net.InetAddress |
getBindTo() |
AddressTracker.Status |
getDetectedConnectivityStatus()
Does this port appear to be port forwarded? @see AddressTracker
|
int |
getDropProbability() |
int |
getHeadersLength()
Get the size of the transport layer headers, for byte accounting purposes.
|
int |
getHeadersLength(Peer peer)
Get the size of the transport layer headers, for byte accounting purposes.
|
int |
getMaxPacketSize()
The maximum size of a packet, not including transport layer headers
|
int |
getPacketSendThreshold()
How big must the pending data be before we send a packet? *Includes* transport layer headers.
|
int |
getPortNumber() |
int |
getPriority() |
long |
getStartTime() |
java.lang.String |
getTitle() |
void |
rescanPortForward()
Something has changed at a higher level suggesting the port forwarding status may be bogus,
so we need to rescan.
|
void |
run() |
void |
sendPacket(byte[] blockToSend,
Peer destination,
boolean allowLocalAddresses)
Send a block of encoded bytes to a peer.
|
void |
setDropProbability(int dropProbability) |
void |
setLowLevelFilter(IncomingPacketFilter f)
Must be called, or we will NPE in run()
|
void |
start() |
java.lang.String |
toString() |
public static final int UDP_HEADERS_LENGTH
public static final int MIN_MTU
public UdpSocketHandler(int listenPort,
java.net.InetAddress bindto,
Node node,
long startupTime,
java.lang.String title,
IOStatisticCollector collector)
throws java.net.SocketException
java.net.SocketExceptionpublic void setLowLevelFilter(IncomingPacketFilter f)
setLowLevelFilter in interface PacketSocketHandlerpublic java.net.InetAddress getBindTo()
public java.lang.String getTitle()
public void run()
run in interface java.lang.Runnablepublic void sendPacket(byte[] blockToSend,
Peer destination,
boolean allowLocalAddresses)
throws Peer.LocalAddressException
sendPacket in interface PacketSocketHandlerblockToSend - The data block to send.destination - The peer to send it to.Peer.LocalAddressExceptionpublic int getMaxPacketSize()
PacketSocketHandlergetMaxPacketSize in interface PacketSocketHandlerpublic int calculateMaxPacketSize()
public int getPacketSendThreshold()
PacketSocketHandlergetPacketSendThreshold in interface PacketSocketHandlerpublic void start()
public void close()
public int getDropProbability()
public void setDropProbability(int dropProbability)
public int getPortNumber()
public java.lang.String toString()
toString in class java.lang.Objectpublic int getHeadersLength()
PacketSocketHandlergetHeadersLength in interface PacketSocketHandlerpublic int getHeadersLength(Peer peer)
PacketSocketHandlergetHeadersLength in interface PacketSocketHandlerpeer - used to detect address family.public AddressTracker getAddressTracker()
public void rescanPortForward()
PortForwardSensitiveSocketHandlerrescanPortForward in interface PortForwardSensitiveSocketHandlerpublic AddressTracker.Status getDetectedConnectivityStatus()
PacketSocketHandlergetDetectedConnectivityStatus in interface PacketSocketHandlerpublic int getPriority()
getPriority in interface PrioRunnablepublic long getStartTime()