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.SocketException
public void setLowLevelFilter(IncomingPacketFilter f)
setLowLevelFilter
in interface PacketSocketHandler
public java.net.InetAddress getBindTo()
public java.lang.String getTitle()
public void run()
run
in interface java.lang.Runnable
public void sendPacket(byte[] blockToSend, Peer destination, boolean allowLocalAddresses) throws Peer.LocalAddressException
sendPacket
in interface PacketSocketHandler
blockToSend
- The data block to send.destination
- The peer to send it to.Peer.LocalAddressException
public int getMaxPacketSize()
PacketSocketHandler
getMaxPacketSize
in interface PacketSocketHandler
public int calculateMaxPacketSize()
public int getPacketSendThreshold()
PacketSocketHandler
getPacketSendThreshold
in interface PacketSocketHandler
public 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.Object
public int getHeadersLength()
PacketSocketHandler
getHeadersLength
in interface PacketSocketHandler
public int getHeadersLength(Peer peer)
PacketSocketHandler
getHeadersLength
in interface PacketSocketHandler
peer
- used to detect address family.public AddressTracker getAddressTracker()
public void rescanPortForward()
PortForwardSensitiveSocketHandler
rescanPortForward
in interface PortForwardSensitiveSocketHandler
public AddressTracker.Status getDetectedConnectivityStatus()
PacketSocketHandler
getDetectedConnectivityStatus
in interface PacketSocketHandler
public int getPriority()
getPriority
in interface PrioRunnable
public long getStartTime()