-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=119182077
This commit is contained in:
olly 2016-04-06 11:21:19 -07:00 committed by Oliver Woodman
parent 92ac270ce5
commit e5d028c425

View File

@ -25,6 +25,7 @@ import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.MulticastSocket;
import java.net.SocketException;
/**
* A UDP {@link DataSource}.
@ -51,8 +52,14 @@ public final class UdpDataSource implements DataSource {
*/
public static final int DEFAULT_MAX_PACKET_SIZE = 2000;
/**
* The default socket timeout, in milliseconds.
*/
public static final int DEAFULT_SOCKET_TIMEOUT_MILLIS = 8 * 1000;
private final TransferListener listener;
private final DatagramPacket packet;
private final int socketTimeoutMillis;
private Uri uri;
private DatagramSocket socket;
@ -76,7 +83,18 @@ public final class UdpDataSource implements DataSource {
* @param maxPacketSize The maximum datagram packet size, in bytes.
*/
public UdpDataSource(TransferListener listener, int maxPacketSize) {
this(listener, maxPacketSize, DEAFULT_SOCKET_TIMEOUT_MILLIS);
}
/**
* @param listener An optional listener.
* @param maxPacketSize The maximum datagram packet size, in bytes.
* @param socketTimeoutMillis The socket timeout in milliseconds. A timeout of zero is interpreted
* as an infinite timeout.
*/
public UdpDataSource(TransferListener listener, int maxPacketSize, int socketTimeoutMillis) {
this.listener = listener;
this.socketTimeoutMillis = socketTimeoutMillis;
packetBuffer = new byte[maxPacketSize];
packet = new DatagramPacket(packetBuffer, 0, maxPacketSize);
}
@ -101,6 +119,12 @@ public final class UdpDataSource implements DataSource {
throw new UdpDataSourceException(e);
}
try {
socket.setSoTimeout(socketTimeoutMillis);
} catch (SocketException e) {
throw new UdpDataSourceException(e);
}
opened = true;
if (listener != null) {
listener.onTransferStart();