mirror of
https://github.com/samsonjs/media.git
synced 2026-04-03 10:55:48 +00:00
Pass source to TransferListener events
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=129622239
This commit is contained in:
parent
3ef837341e
commit
a7cb98d991
8 changed files with 53 additions and 46 deletions
|
|
@ -48,7 +48,7 @@ public class OkHttpDataSource implements HttpDataSource {
|
|||
private final OkHttpClient okHttpClient;
|
||||
private final String userAgent;
|
||||
private final Predicate<String> contentTypePredicate;
|
||||
private final TransferListener listener;
|
||||
private final TransferListener<? super OkHttpDataSource> listener;
|
||||
private final CacheControl cacheControl;
|
||||
private final HashMap<String, String> requestProperties;
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ public class OkHttpDataSource implements HttpDataSource {
|
|||
* @param listener An optional listener.
|
||||
*/
|
||||
public OkHttpDataSource(OkHttpClient client, String userAgent,
|
||||
Predicate<String> contentTypePredicate, TransferListener listener) {
|
||||
Predicate<String> contentTypePredicate, TransferListener<? super OkHttpDataSource> listener) {
|
||||
this(client, userAgent, contentTypePredicate, listener, null);
|
||||
}
|
||||
|
||||
|
|
@ -96,10 +96,9 @@ public class OkHttpDataSource implements HttpDataSource {
|
|||
* @param listener An optional listener.
|
||||
* @param cacheControl An optional {@link CacheControl} which sets all requests' Cache-Control
|
||||
* header. For example, you could force the network response for all requests.
|
||||
*
|
||||
*/
|
||||
public OkHttpDataSource(OkHttpClient client, String userAgent,
|
||||
Predicate<String> contentTypePredicate, TransferListener listener,
|
||||
Predicate<String> contentTypePredicate, TransferListener<? super OkHttpDataSource> listener,
|
||||
CacheControl cacheControl) {
|
||||
this.okHttpClient = Assertions.checkNotNull(client);
|
||||
this.userAgent = Assertions.checkNotEmpty(userAgent);
|
||||
|
|
@ -187,7 +186,7 @@ public class OkHttpDataSource implements HttpDataSource {
|
|||
|
||||
opened = true;
|
||||
if (listener != null) {
|
||||
listener.onTransferStart();
|
||||
listener.onTransferStart(this, dataSpec);
|
||||
}
|
||||
|
||||
return bytesToRead;
|
||||
|
|
@ -208,7 +207,7 @@ public class OkHttpDataSource implements HttpDataSource {
|
|||
if (opened) {
|
||||
opened = false;
|
||||
if (listener != null) {
|
||||
listener.onTransferEnd();
|
||||
listener.onTransferEnd(this);
|
||||
}
|
||||
closeConnectionQuietly();
|
||||
}
|
||||
|
|
@ -311,7 +310,7 @@ public class OkHttpDataSource implements HttpDataSource {
|
|||
}
|
||||
bytesSkipped += read;
|
||||
if (listener != null) {
|
||||
listener.onBytesTransferred(read);
|
||||
listener.onBytesTransferred(this, read);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -352,7 +351,7 @@ public class OkHttpDataSource implements HttpDataSource {
|
|||
|
||||
bytesRead += read;
|
||||
if (listener != null) {
|
||||
listener.onBytesTransferred(read);
|
||||
listener.onBytesTransferred(this, read);
|
||||
}
|
||||
return read;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public final class AssetDataSource implements DataSource {
|
|||
}
|
||||
|
||||
private final AssetManager assetManager;
|
||||
private final TransferListener listener;
|
||||
private final TransferListener<? super AssetDataSource> listener;
|
||||
|
||||
private Uri uri;
|
||||
private InputStream inputStream;
|
||||
|
|
@ -58,7 +58,7 @@ public final class AssetDataSource implements DataSource {
|
|||
* @param context A context.
|
||||
* @param listener An optional listener.
|
||||
*/
|
||||
public AssetDataSource(Context context, TransferListener listener) {
|
||||
public AssetDataSource(Context context, TransferListener<? super AssetDataSource> listener) {
|
||||
this.assetManager = context.getAssets();
|
||||
this.listener = listener;
|
||||
}
|
||||
|
|
@ -97,7 +97,7 @@ public final class AssetDataSource implements DataSource {
|
|||
|
||||
opened = true;
|
||||
if (listener != null) {
|
||||
listener.onTransferStart();
|
||||
listener.onTransferStart(this, dataSpec);
|
||||
}
|
||||
return bytesRemaining;
|
||||
}
|
||||
|
|
@ -121,7 +121,7 @@ public final class AssetDataSource implements DataSource {
|
|||
bytesRemaining -= bytesRead;
|
||||
}
|
||||
if (listener != null) {
|
||||
listener.onBytesTransferred(bytesRead);
|
||||
listener.onBytesTransferred(this, bytesRead);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ public final class AssetDataSource implements DataSource {
|
|||
if (opened) {
|
||||
opened = false;
|
||||
if (listener != null) {
|
||||
listener.onTransferEnd();
|
||||
listener.onTransferEnd(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public final class ContentDataSource implements DataSource {
|
|||
}
|
||||
|
||||
private final ContentResolver resolver;
|
||||
private final TransferListener listener;
|
||||
private final TransferListener<? super ContentDataSource> listener;
|
||||
|
||||
private Uri uri;
|
||||
private InputStream inputStream;
|
||||
|
|
@ -60,7 +60,7 @@ public final class ContentDataSource implements DataSource {
|
|||
* @param context A context.
|
||||
* @param listener An optional listener.
|
||||
*/
|
||||
public ContentDataSource(Context context, TransferListener listener) {
|
||||
public ContentDataSource(Context context, TransferListener<? super ContentDataSource> listener) {
|
||||
this.resolver = context.getContentResolver();
|
||||
this.listener = listener;
|
||||
}
|
||||
|
|
@ -94,7 +94,7 @@ public final class ContentDataSource implements DataSource {
|
|||
|
||||
opened = true;
|
||||
if (listener != null) {
|
||||
listener.onTransferStart();
|
||||
listener.onTransferStart(this, dataSpec);
|
||||
}
|
||||
|
||||
return bytesRemaining;
|
||||
|
|
@ -119,7 +119,7 @@ public final class ContentDataSource implements DataSource {
|
|||
bytesRemaining -= bytesRead;
|
||||
}
|
||||
if (listener != null) {
|
||||
listener.onBytesTransferred(bytesRead);
|
||||
listener.onBytesTransferred(this, bytesRead);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -145,7 +145,7 @@ public final class ContentDataSource implements DataSource {
|
|||
if (opened) {
|
||||
opened = false;
|
||||
if (listener != null) {
|
||||
listener.onTransferEnd();
|
||||
listener.onTransferEnd(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import com.google.android.exoplayer2.util.SlidingPercentile;
|
|||
* Estimates bandwidth by listening to data transfers. The bandwidth estimate is calculated using
|
||||
* 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.
|
||||
|
|
@ -67,7 +67,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
|
|||
}
|
||||
|
||||
@Override
|
||||
public synchronized void onTransferStart() {
|
||||
public synchronized void onTransferStart(Object source, DataSpec dataSpec) {
|
||||
if (streamCount == 0) {
|
||||
sampleStartTimeMs = SystemClock.elapsedRealtime();
|
||||
}
|
||||
|
|
@ -75,12 +75,12 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
|
|||
}
|
||||
|
||||
@Override
|
||||
public synchronized void onBytesTransferred(int bytes) {
|
||||
public synchronized void onBytesTransferred(Object source, int bytes) {
|
||||
sampleBytesTransferred += bytes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void onTransferEnd() {
|
||||
public synchronized void onTransferEnd(Object source) {
|
||||
Assertions.checkState(streamCount > 0);
|
||||
long nowMs = SystemClock.elapsedRealtime();
|
||||
int sampleElapsedTimeMs = (int) (nowMs - sampleStartTimeMs);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||
private final String userAgent;
|
||||
private final Predicate<String> contentTypePredicate;
|
||||
private final HashMap<String, String> requestProperties;
|
||||
private final TransferListener listener;
|
||||
private final TransferListener<? super DefaultHttpDataSource> listener;
|
||||
|
||||
private DataSpec dataSpec;
|
||||
private HttpURLConnection connection;
|
||||
|
|
@ -102,7 +102,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||
* @param listener An optional listener.
|
||||
*/
|
||||
public DefaultHttpDataSource(String userAgent, Predicate<String> contentTypePredicate,
|
||||
TransferListener listener) {
|
||||
TransferListener<? super DefaultHttpDataSource> listener) {
|
||||
this(userAgent, contentTypePredicate, listener, DEFAULT_CONNECT_TIMEOUT_MILLIS,
|
||||
DEFAULT_READ_TIMEOUT_MILLIS);
|
||||
}
|
||||
|
|
@ -119,7 +119,8 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||
* as an infinite timeout.
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -138,8 +139,8 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||
* to HTTPS and vice versa) are enabled.
|
||||
*/
|
||||
public DefaultHttpDataSource(String userAgent, Predicate<String> contentTypePredicate,
|
||||
TransferListener listener, int connectTimeoutMillis, int readTimeoutMillis,
|
||||
boolean allowCrossProtocolRedirects) {
|
||||
TransferListener<? super DefaultHttpDataSource> listener, int connectTimeoutMillis,
|
||||
int readTimeoutMillis, boolean allowCrossProtocolRedirects) {
|
||||
this.userAgent = Assertions.checkNotEmpty(userAgent);
|
||||
this.contentTypePredicate = contentTypePredicate;
|
||||
this.listener = listener;
|
||||
|
|
@ -246,7 +247,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||
|
||||
opened = true;
|
||||
if (listener != null) {
|
||||
listener.onTransferStart();
|
||||
listener.onTransferStart(this, dataSpec);
|
||||
}
|
||||
|
||||
return bytesToRead;
|
||||
|
|
@ -279,7 +280,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||
if (opened) {
|
||||
opened = false;
|
||||
if (listener != null) {
|
||||
listener.onTransferEnd();
|
||||
listener.onTransferEnd(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -518,7 +519,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||
}
|
||||
bytesSkipped += read;
|
||||
if (listener != null) {
|
||||
listener.onBytesTransferred(read);
|
||||
listener.onBytesTransferred(this, read);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -559,7 +560,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||
|
||||
bytesRead += read;
|
||||
if (listener != null) {
|
||||
listener.onBytesTransferred(read);
|
||||
listener.onBytesTransferred(this, read);
|
||||
}
|
||||
return read;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public final class FileDataSource implements DataSource {
|
|||
|
||||
}
|
||||
|
||||
private final TransferListener listener;
|
||||
private final TransferListener<? super FileDataSource> listener;
|
||||
|
||||
private RandomAccessFile file;
|
||||
private Uri uri;
|
||||
|
|
@ -51,7 +51,7 @@ public final class FileDataSource implements DataSource {
|
|||
/**
|
||||
* @param listener An optional listener.
|
||||
*/
|
||||
public FileDataSource(TransferListener listener) {
|
||||
public FileDataSource(TransferListener<? super FileDataSource> listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ public final class FileDataSource implements DataSource {
|
|||
|
||||
opened = true;
|
||||
if (listener != null) {
|
||||
listener.onTransferStart();
|
||||
listener.onTransferStart(this, dataSpec);
|
||||
}
|
||||
|
||||
return bytesRemaining;
|
||||
|
|
@ -93,7 +93,7 @@ public final class FileDataSource implements DataSource {
|
|||
if (bytesRead > 0) {
|
||||
bytesRemaining -= bytesRead;
|
||||
if (listener != null) {
|
||||
listener.onBytesTransferred(bytesRead);
|
||||
listener.onBytesTransferred(this, bytesRead);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -119,7 +119,7 @@ public final class FileDataSource implements DataSource {
|
|||
if (opened) {
|
||||
opened = false;
|
||||
if (listener != null) {
|
||||
listener.onTransferEnd();
|
||||
listener.onTransferEnd(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,24 +18,30 @@ package com.google.android.exoplayer2.upstream;
|
|||
/**
|
||||
* A listener of data transfer events.
|
||||
*/
|
||||
public interface TransferListener {
|
||||
public interface TransferListener<S> {
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @param source The source performing the transfer.
|
||||
* @param bytesTransferred The number of bytes transferred since the previous call to this
|
||||
* 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.
|
||||
*
|
||||
* @param source The source performing the transfer.
|
||||
*/
|
||||
void onTransferEnd();
|
||||
void onTransferEnd(S source);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public final class UdpDataSource implements DataSource {
|
|||
*/
|
||||
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 byte[] packetBuffer;
|
||||
private final DatagramPacket packet;
|
||||
|
|
@ -76,7 +76,7 @@ public final class UdpDataSource implements DataSource {
|
|||
* @param listener An optional listener.
|
||||
* @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);
|
||||
}
|
||||
|
||||
|
|
@ -86,7 +86,8 @@ public final class UdpDataSource implements DataSource {
|
|||
* @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) {
|
||||
public UdpDataSource(TransferListener<? super UdpDataSource> listener, int maxPacketSize,
|
||||
int socketTimeoutMillis) {
|
||||
this.listener = listener;
|
||||
this.socketTimeoutMillis = socketTimeoutMillis;
|
||||
packetBuffer = new byte[maxPacketSize];
|
||||
|
|
@ -121,7 +122,7 @@ public final class UdpDataSource implements DataSource {
|
|||
|
||||
opened = true;
|
||||
if (listener != null) {
|
||||
listener.onTransferStart();
|
||||
listener.onTransferStart(this, dataSpec);
|
||||
}
|
||||
return C.LENGTH_UNBOUNDED;
|
||||
}
|
||||
|
|
@ -138,7 +139,7 @@ public final class UdpDataSource implements DataSource {
|
|||
|
||||
packetRemaining = packet.getLength();
|
||||
if (listener != null) {
|
||||
listener.onBytesTransferred(packetRemaining);
|
||||
listener.onBytesTransferred(this, packetRemaining);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -175,7 +176,7 @@ public final class UdpDataSource implements DataSource {
|
|||
if (opened) {
|
||||
opened = false;
|
||||
if (listener != null) {
|
||||
listener.onTransferEnd();
|
||||
listener.onTransferEnd(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue