Commit a7cb98d9 by olly Committed by Oliver Woodman

Pass source to TransferListener events

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=129622239
parent 3ef83734
...@@ -48,7 +48,7 @@ public class OkHttpDataSource implements HttpDataSource { ...@@ -48,7 +48,7 @@ public class OkHttpDataSource implements HttpDataSource {
private final OkHttpClient okHttpClient; private final OkHttpClient okHttpClient;
private final String userAgent; private final String userAgent;
private final Predicate<String> contentTypePredicate; private final Predicate<String> contentTypePredicate;
private final TransferListener listener; private final TransferListener<? super OkHttpDataSource> listener;
private final CacheControl cacheControl; private final CacheControl cacheControl;
private final HashMap<String, String> requestProperties; private final HashMap<String, String> requestProperties;
...@@ -83,7 +83,7 @@ public class OkHttpDataSource implements HttpDataSource { ...@@ -83,7 +83,7 @@ public class OkHttpDataSource implements HttpDataSource {
* @param listener An optional listener. * @param listener An optional listener.
*/ */
public OkHttpDataSource(OkHttpClient client, String userAgent, public OkHttpDataSource(OkHttpClient client, String userAgent,
Predicate<String> contentTypePredicate, TransferListener listener) { Predicate<String> contentTypePredicate, TransferListener<? super OkHttpDataSource> listener) {
this(client, userAgent, contentTypePredicate, listener, null); this(client, userAgent, contentTypePredicate, listener, null);
} }
...@@ -96,10 +96,9 @@ public class OkHttpDataSource implements HttpDataSource { ...@@ -96,10 +96,9 @@ public class OkHttpDataSource implements HttpDataSource {
* @param listener An optional listener. * @param listener An optional listener.
* @param cacheControl An optional {@link CacheControl} which sets all requests' Cache-Control * @param cacheControl An optional {@link CacheControl} which sets all requests' Cache-Control
* header. For example, you could force the network response for all requests. * header. For example, you could force the network response for all requests.
*
*/ */
public OkHttpDataSource(OkHttpClient client, String userAgent, public OkHttpDataSource(OkHttpClient client, String userAgent,
Predicate<String> contentTypePredicate, TransferListener listener, Predicate<String> contentTypePredicate, TransferListener<? super OkHttpDataSource> listener,
CacheControl cacheControl) { CacheControl cacheControl) {
this.okHttpClient = Assertions.checkNotNull(client); this.okHttpClient = Assertions.checkNotNull(client);
this.userAgent = Assertions.checkNotEmpty(userAgent); this.userAgent = Assertions.checkNotEmpty(userAgent);
...@@ -187,7 +186,7 @@ public class OkHttpDataSource implements HttpDataSource { ...@@ -187,7 +186,7 @@ public class OkHttpDataSource implements HttpDataSource {
opened = true; opened = true;
if (listener != null) { if (listener != null) {
listener.onTransferStart(); listener.onTransferStart(this, dataSpec);
} }
return bytesToRead; return bytesToRead;
...@@ -208,7 +207,7 @@ public class OkHttpDataSource implements HttpDataSource { ...@@ -208,7 +207,7 @@ public class OkHttpDataSource implements HttpDataSource {
if (opened) { if (opened) {
opened = false; opened = false;
if (listener != null) { if (listener != null) {
listener.onTransferEnd(); listener.onTransferEnd(this);
} }
closeConnectionQuietly(); closeConnectionQuietly();
} }
...@@ -311,7 +310,7 @@ public class OkHttpDataSource implements HttpDataSource { ...@@ -311,7 +310,7 @@ public class OkHttpDataSource implements HttpDataSource {
} }
bytesSkipped += read; bytesSkipped += read;
if (listener != null) { if (listener != null) {
listener.onBytesTransferred(read); listener.onBytesTransferred(this, read);
} }
} }
...@@ -352,7 +351,7 @@ public class OkHttpDataSource implements HttpDataSource { ...@@ -352,7 +351,7 @@ public class OkHttpDataSource implements HttpDataSource {
bytesRead += read; bytesRead += read;
if (listener != null) { if (listener != null) {
listener.onBytesTransferred(read); listener.onBytesTransferred(this, read);
} }
return read; return read;
} }
......
...@@ -40,7 +40,7 @@ public final class AssetDataSource implements DataSource { ...@@ -40,7 +40,7 @@ public final class AssetDataSource implements DataSource {
} }
private final AssetManager assetManager; private final AssetManager assetManager;
private final TransferListener listener; private final TransferListener<? super AssetDataSource> listener;
private Uri uri; private Uri uri;
private InputStream inputStream; private InputStream inputStream;
...@@ -58,7 +58,7 @@ public final class AssetDataSource implements DataSource { ...@@ -58,7 +58,7 @@ public final class AssetDataSource implements DataSource {
* @param context A context. * @param context A context.
* @param listener An optional listener. * @param listener An optional listener.
*/ */
public AssetDataSource(Context context, TransferListener listener) { public AssetDataSource(Context context, TransferListener<? super AssetDataSource> listener) {
this.assetManager = context.getAssets(); this.assetManager = context.getAssets();
this.listener = listener; this.listener = listener;
} }
...@@ -97,7 +97,7 @@ public final class AssetDataSource implements DataSource { ...@@ -97,7 +97,7 @@ public final class AssetDataSource implements DataSource {
opened = true; opened = true;
if (listener != null) { if (listener != null) {
listener.onTransferStart(); listener.onTransferStart(this, dataSpec);
} }
return bytesRemaining; return bytesRemaining;
} }
...@@ -121,7 +121,7 @@ public final class AssetDataSource implements DataSource { ...@@ -121,7 +121,7 @@ public final class AssetDataSource implements DataSource {
bytesRemaining -= bytesRead; bytesRemaining -= bytesRead;
} }
if (listener != null) { if (listener != null) {
listener.onBytesTransferred(bytesRead); listener.onBytesTransferred(this, bytesRead);
} }
} }
...@@ -147,7 +147,7 @@ public final class AssetDataSource implements DataSource { ...@@ -147,7 +147,7 @@ public final class AssetDataSource implements DataSource {
if (opened) { if (opened) {
opened = false; opened = false;
if (listener != null) { if (listener != null) {
listener.onTransferEnd(); listener.onTransferEnd(this);
} }
} }
} }
......
...@@ -42,7 +42,7 @@ public final class ContentDataSource implements DataSource { ...@@ -42,7 +42,7 @@ public final class ContentDataSource implements DataSource {
} }
private final ContentResolver resolver; private final ContentResolver resolver;
private final TransferListener listener; private final TransferListener<? super ContentDataSource> listener;
private Uri uri; private Uri uri;
private InputStream inputStream; private InputStream inputStream;
...@@ -60,7 +60,7 @@ public final class ContentDataSource implements DataSource { ...@@ -60,7 +60,7 @@ public final class ContentDataSource implements DataSource {
* @param context A context. * @param context A context.
* @param listener An optional listener. * @param listener An optional listener.
*/ */
public ContentDataSource(Context context, TransferListener listener) { public ContentDataSource(Context context, TransferListener<? super ContentDataSource> listener) {
this.resolver = context.getContentResolver(); this.resolver = context.getContentResolver();
this.listener = listener; this.listener = listener;
} }
...@@ -94,7 +94,7 @@ public final class ContentDataSource implements DataSource { ...@@ -94,7 +94,7 @@ public final class ContentDataSource implements DataSource {
opened = true; opened = true;
if (listener != null) { if (listener != null) {
listener.onTransferStart(); listener.onTransferStart(this, dataSpec);
} }
return bytesRemaining; return bytesRemaining;
...@@ -119,7 +119,7 @@ public final class ContentDataSource implements DataSource { ...@@ -119,7 +119,7 @@ public final class ContentDataSource implements DataSource {
bytesRemaining -= bytesRead; bytesRemaining -= bytesRead;
} }
if (listener != null) { if (listener != null) {
listener.onBytesTransferred(bytesRead); listener.onBytesTransferred(this, bytesRead);
} }
} }
...@@ -145,7 +145,7 @@ public final class ContentDataSource implements DataSource { ...@@ -145,7 +145,7 @@ public final class ContentDataSource implements DataSource {
if (opened) { if (opened) {
opened = false; opened = false;
if (listener != null) { if (listener != null) {
listener.onTransferEnd(); listener.onTransferEnd(this);
} }
} }
} }
......
...@@ -24,7 +24,7 @@ import com.google.android.exoplayer2.util.SlidingPercentile; ...@@ -24,7 +24,7 @@ import com.google.android.exoplayer2.util.SlidingPercentile;
* Estimates bandwidth by listening to data transfers. The bandwidth estimate is calculated using * Estimates bandwidth by listening to data transfers. The bandwidth estimate is calculated using
* a {@link SlidingPercentile} and is updated each time a transfer ends. * a {@link SlidingPercentile} and is updated each time a transfer ends.
*/ */
public final class DefaultBandwidthMeter implements BandwidthMeter, TransferListener { public final class DefaultBandwidthMeter implements BandwidthMeter, TransferListener<Object> {
/** /**
* The default maximum weight for the sliding window. * The default maximum weight for the sliding window.
...@@ -67,7 +67,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList ...@@ -67,7 +67,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
} }
@Override @Override
public synchronized void onTransferStart() { public synchronized void onTransferStart(Object source, DataSpec dataSpec) {
if (streamCount == 0) { if (streamCount == 0) {
sampleStartTimeMs = SystemClock.elapsedRealtime(); sampleStartTimeMs = SystemClock.elapsedRealtime();
} }
...@@ -75,12 +75,12 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList ...@@ -75,12 +75,12 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
} }
@Override @Override
public synchronized void onBytesTransferred(int bytes) { public synchronized void onBytesTransferred(Object source, int bytes) {
sampleBytesTransferred += bytes; sampleBytesTransferred += bytes;
} }
@Override @Override
public synchronized void onTransferEnd() { public synchronized void onTransferEnd(Object source) {
Assertions.checkState(streamCount > 0); Assertions.checkState(streamCount > 0);
long nowMs = SystemClock.elapsedRealtime(); long nowMs = SystemClock.elapsedRealtime();
int sampleElapsedTimeMs = (int) (nowMs - sampleStartTimeMs); int sampleElapsedTimeMs = (int) (nowMs - sampleStartTimeMs);
......
...@@ -71,7 +71,7 @@ public class DefaultHttpDataSource implements HttpDataSource { ...@@ -71,7 +71,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
private final String userAgent; private final String userAgent;
private final Predicate<String> contentTypePredicate; private final Predicate<String> contentTypePredicate;
private final HashMap<String, String> requestProperties; private final HashMap<String, String> requestProperties;
private final TransferListener listener; private final TransferListener<? super DefaultHttpDataSource> listener;
private DataSpec dataSpec; private DataSpec dataSpec;
private HttpURLConnection connection; private HttpURLConnection connection;
...@@ -102,7 +102,7 @@ public class DefaultHttpDataSource implements HttpDataSource { ...@@ -102,7 +102,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
* @param listener An optional listener. * @param listener An optional listener.
*/ */
public DefaultHttpDataSource(String userAgent, Predicate<String> contentTypePredicate, public DefaultHttpDataSource(String userAgent, Predicate<String> contentTypePredicate,
TransferListener listener) { TransferListener<? super DefaultHttpDataSource> listener) {
this(userAgent, contentTypePredicate, listener, DEFAULT_CONNECT_TIMEOUT_MILLIS, this(userAgent, contentTypePredicate, listener, DEFAULT_CONNECT_TIMEOUT_MILLIS,
DEFAULT_READ_TIMEOUT_MILLIS); DEFAULT_READ_TIMEOUT_MILLIS);
} }
...@@ -119,7 +119,8 @@ public class DefaultHttpDataSource implements HttpDataSource { ...@@ -119,7 +119,8 @@ public class DefaultHttpDataSource implements HttpDataSource {
* as an infinite timeout. * as an infinite timeout.
*/ */
public DefaultHttpDataSource(String userAgent, Predicate<String> contentTypePredicate, public DefaultHttpDataSource(String userAgent, Predicate<String> contentTypePredicate,
TransferListener listener, int connectTimeoutMillis, int readTimeoutMillis) { TransferListener<? super DefaultHttpDataSource> listener, int connectTimeoutMillis,
int readTimeoutMillis) {
this(userAgent, contentTypePredicate, listener, connectTimeoutMillis, readTimeoutMillis, false); this(userAgent, contentTypePredicate, listener, connectTimeoutMillis, readTimeoutMillis, false);
} }
...@@ -138,8 +139,8 @@ public class DefaultHttpDataSource implements HttpDataSource { ...@@ -138,8 +139,8 @@ public class DefaultHttpDataSource implements HttpDataSource {
* to HTTPS and vice versa) are enabled. * to HTTPS and vice versa) are enabled.
*/ */
public DefaultHttpDataSource(String userAgent, Predicate<String> contentTypePredicate, public DefaultHttpDataSource(String userAgent, Predicate<String> contentTypePredicate,
TransferListener listener, int connectTimeoutMillis, int readTimeoutMillis, TransferListener<? super DefaultHttpDataSource> listener, int connectTimeoutMillis,
boolean allowCrossProtocolRedirects) { int readTimeoutMillis, boolean allowCrossProtocolRedirects) {
this.userAgent = Assertions.checkNotEmpty(userAgent); this.userAgent = Assertions.checkNotEmpty(userAgent);
this.contentTypePredicate = contentTypePredicate; this.contentTypePredicate = contentTypePredicate;
this.listener = listener; this.listener = listener;
...@@ -246,7 +247,7 @@ public class DefaultHttpDataSource implements HttpDataSource { ...@@ -246,7 +247,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
opened = true; opened = true;
if (listener != null) { if (listener != null) {
listener.onTransferStart(); listener.onTransferStart(this, dataSpec);
} }
return bytesToRead; return bytesToRead;
...@@ -279,7 +280,7 @@ public class DefaultHttpDataSource implements HttpDataSource { ...@@ -279,7 +280,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
if (opened) { if (opened) {
opened = false; opened = false;
if (listener != null) { if (listener != null) {
listener.onTransferEnd(); listener.onTransferEnd(this);
} }
} }
} }
...@@ -518,7 +519,7 @@ public class DefaultHttpDataSource implements HttpDataSource { ...@@ -518,7 +519,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
} }
bytesSkipped += read; bytesSkipped += read;
if (listener != null) { if (listener != null) {
listener.onBytesTransferred(read); listener.onBytesTransferred(this, read);
} }
} }
...@@ -559,7 +560,7 @@ public class DefaultHttpDataSource implements HttpDataSource { ...@@ -559,7 +560,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
bytesRead += read; bytesRead += read;
if (listener != null) { if (listener != null) {
listener.onBytesTransferred(read); listener.onBytesTransferred(this, read);
} }
return read; return read;
} }
......
...@@ -37,7 +37,7 @@ public final class FileDataSource implements DataSource { ...@@ -37,7 +37,7 @@ public final class FileDataSource implements DataSource {
} }
private final TransferListener listener; private final TransferListener<? super FileDataSource> listener;
private RandomAccessFile file; private RandomAccessFile file;
private Uri uri; private Uri uri;
...@@ -51,7 +51,7 @@ public final class FileDataSource implements DataSource { ...@@ -51,7 +51,7 @@ public final class FileDataSource implements DataSource {
/** /**
* @param listener An optional listener. * @param listener An optional listener.
*/ */
public FileDataSource(TransferListener listener) { public FileDataSource(TransferListener<? super FileDataSource> listener) {
this.listener = listener; this.listener = listener;
} }
...@@ -72,7 +72,7 @@ public final class FileDataSource implements DataSource { ...@@ -72,7 +72,7 @@ public final class FileDataSource implements DataSource {
opened = true; opened = true;
if (listener != null) { if (listener != null) {
listener.onTransferStart(); listener.onTransferStart(this, dataSpec);
} }
return bytesRemaining; return bytesRemaining;
...@@ -93,7 +93,7 @@ public final class FileDataSource implements DataSource { ...@@ -93,7 +93,7 @@ public final class FileDataSource implements DataSource {
if (bytesRead > 0) { if (bytesRead > 0) {
bytesRemaining -= bytesRead; bytesRemaining -= bytesRead;
if (listener != null) { if (listener != null) {
listener.onBytesTransferred(bytesRead); listener.onBytesTransferred(this, bytesRead);
} }
} }
...@@ -119,7 +119,7 @@ public final class FileDataSource implements DataSource { ...@@ -119,7 +119,7 @@ public final class FileDataSource implements DataSource {
if (opened) { if (opened) {
opened = false; opened = false;
if (listener != null) { if (listener != null) {
listener.onTransferEnd(); listener.onTransferEnd(this);
} }
} }
} }
......
...@@ -18,24 +18,30 @@ package com.google.android.exoplayer2.upstream; ...@@ -18,24 +18,30 @@ package com.google.android.exoplayer2.upstream;
/** /**
* A listener of data transfer events. * A listener of data transfer events.
*/ */
public interface TransferListener { public interface TransferListener<S> {
/** /**
* Called when a transfer starts. * Called when a transfer starts.
*
* @param source The source performing the transfer.
* @param dataSpec Describes the data being transferred.
*/ */
void onTransferStart(); void onTransferStart(S source, DataSpec dataSpec);
/** /**
* Called incrementally during a transfer. * Called incrementally during a transfer.
* *
* @param source The source performing the transfer.
* @param bytesTransferred The number of bytes transferred since the previous call to this * @param bytesTransferred The number of bytes transferred since the previous call to this
* method (or if the first call, since the transfer was started). * method (or if the first call, since the transfer was started).
*/ */
void onBytesTransferred(int bytesTransferred); void onBytesTransferred(S source, int bytesTransferred);
/** /**
* Called when a transfer ends. * Called when a transfer ends.
*
* @param source The source performing the transfer.
*/ */
void onTransferEnd(); void onTransferEnd(S source);
} }
...@@ -51,7 +51,7 @@ public final class UdpDataSource implements DataSource { ...@@ -51,7 +51,7 @@ public final class UdpDataSource implements DataSource {
*/ */
public static final int DEAFULT_SOCKET_TIMEOUT_MILLIS = 8 * 1000; public static final int DEAFULT_SOCKET_TIMEOUT_MILLIS = 8 * 1000;
private final TransferListener listener; private final TransferListener<? super UdpDataSource> listener;
private final int socketTimeoutMillis; private final int socketTimeoutMillis;
private final byte[] packetBuffer; private final byte[] packetBuffer;
private final DatagramPacket packet; private final DatagramPacket packet;
...@@ -76,7 +76,7 @@ public final class UdpDataSource implements DataSource { ...@@ -76,7 +76,7 @@ public final class UdpDataSource implements DataSource {
* @param listener An optional listener. * @param listener An optional listener.
* @param maxPacketSize The maximum datagram packet size, in bytes. * @param maxPacketSize The maximum datagram packet size, in bytes.
*/ */
public UdpDataSource(TransferListener listener, int maxPacketSize) { public UdpDataSource(TransferListener<? super UdpDataSource> listener, int maxPacketSize) {
this(listener, maxPacketSize, DEAFULT_SOCKET_TIMEOUT_MILLIS); this(listener, maxPacketSize, DEAFULT_SOCKET_TIMEOUT_MILLIS);
} }
...@@ -86,7 +86,8 @@ public final class UdpDataSource implements DataSource { ...@@ -86,7 +86,8 @@ public final class UdpDataSource implements DataSource {
* @param socketTimeoutMillis The socket timeout in milliseconds. A timeout of zero is interpreted * @param socketTimeoutMillis The socket timeout in milliseconds. A timeout of zero is interpreted
* as an infinite timeout. * as an infinite timeout.
*/ */
public UdpDataSource(TransferListener listener, int maxPacketSize, int socketTimeoutMillis) { public UdpDataSource(TransferListener<? super UdpDataSource> listener, int maxPacketSize,
int socketTimeoutMillis) {
this.listener = listener; this.listener = listener;
this.socketTimeoutMillis = socketTimeoutMillis; this.socketTimeoutMillis = socketTimeoutMillis;
packetBuffer = new byte[maxPacketSize]; packetBuffer = new byte[maxPacketSize];
...@@ -121,7 +122,7 @@ public final class UdpDataSource implements DataSource { ...@@ -121,7 +122,7 @@ public final class UdpDataSource implements DataSource {
opened = true; opened = true;
if (listener != null) { if (listener != null) {
listener.onTransferStart(); listener.onTransferStart(this, dataSpec);
} }
return C.LENGTH_UNBOUNDED; return C.LENGTH_UNBOUNDED;
} }
...@@ -138,7 +139,7 @@ public final class UdpDataSource implements DataSource { ...@@ -138,7 +139,7 @@ public final class UdpDataSource implements DataSource {
packetRemaining = packet.getLength(); packetRemaining = packet.getLength();
if (listener != null) { if (listener != null) {
listener.onBytesTransferred(packetRemaining); listener.onBytesTransferred(this, packetRemaining);
} }
} }
...@@ -175,7 +176,7 @@ public final class UdpDataSource implements DataSource { ...@@ -175,7 +176,7 @@ public final class UdpDataSource implements DataSource {
if (opened) { if (opened) {
opened = false; opened = false;
if (listener != null) { if (listener != null) {
listener.onTransferEnd(); listener.onTransferEnd(this);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment