mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Allow CronetDataSource's read buffer size to be configured.
PiperOrigin-RevId: 611146397
This commit is contained in:
parent
6809c0a642
commit
87c4d60c37
@ -93,6 +93,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
private int requestPriority;
|
private int requestPriority;
|
||||||
private int connectTimeoutMs;
|
private int connectTimeoutMs;
|
||||||
private int readTimeoutMs;
|
private int readTimeoutMs;
|
||||||
|
private int readBufferSize;
|
||||||
private boolean resetTimeoutOnRedirects;
|
private boolean resetTimeoutOnRedirects;
|
||||||
private boolean handleSetCookieRequests;
|
private boolean handleSetCookieRequests;
|
||||||
private boolean keepPostFor302Redirects;
|
private boolean keepPostFor302Redirects;
|
||||||
@ -117,6 +118,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
requestPriority = REQUEST_PRIORITY_MEDIUM;
|
requestPriority = REQUEST_PRIORITY_MEDIUM;
|
||||||
connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MILLIS;
|
connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MILLIS;
|
||||||
readTimeoutMs = DEFAULT_READ_TIMEOUT_MILLIS;
|
readTimeoutMs = DEFAULT_READ_TIMEOUT_MILLIS;
|
||||||
|
readBufferSize = DEFAULT_READ_BUFFER_SIZE_BYTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -142,6 +144,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
internalFallbackFactory = new DefaultHttpDataSource.Factory();
|
internalFallbackFactory = new DefaultHttpDataSource.Factory();
|
||||||
connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MILLIS;
|
connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MILLIS;
|
||||||
readTimeoutMs = DEFAULT_READ_TIMEOUT_MILLIS;
|
readTimeoutMs = DEFAULT_READ_TIMEOUT_MILLIS;
|
||||||
|
readBufferSize = DEFAULT_READ_BUFFER_SIZE_BYTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
@CanIgnoreReturnValue
|
@CanIgnoreReturnValue
|
||||||
@ -334,6 +337,19 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the read buffer size, in bytes.
|
||||||
|
*
|
||||||
|
* @param readBufferSize The read buffer size, in bytes.
|
||||||
|
* @return This factory.
|
||||||
|
*/
|
||||||
|
@CanIgnoreReturnValue
|
||||||
|
@UnstableApi
|
||||||
|
public Factory setReadBufferSize(int readBufferSize) {
|
||||||
|
this.readBufferSize = readBufferSize;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
@Override
|
@Override
|
||||||
public HttpDataSource createDataSource() {
|
public HttpDataSource createDataSource() {
|
||||||
@ -354,7 +370,8 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
userAgent,
|
userAgent,
|
||||||
defaultRequestProperties,
|
defaultRequestProperties,
|
||||||
contentTypePredicate,
|
contentTypePredicate,
|
||||||
keepPostFor302Redirects);
|
keepPostFor302Redirects,
|
||||||
|
readBufferSize);
|
||||||
if (transferListener != null) {
|
if (transferListener != null) {
|
||||||
dataSource.addTransferListener(transferListener);
|
dataSource.addTransferListener(transferListener);
|
||||||
}
|
}
|
||||||
@ -421,10 +438,11 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
/** The default read timeout, in milliseconds. */
|
/** The default read timeout, in milliseconds. */
|
||||||
@UnstableApi public static final int DEFAULT_READ_TIMEOUT_MILLIS = 8 * 1000;
|
@UnstableApi public static final int DEFAULT_READ_TIMEOUT_MILLIS = 8 * 1000;
|
||||||
|
|
||||||
/* package */ final UrlRequest.Callback urlRequestCallback;
|
|
||||||
|
|
||||||
// The size of read buffer passed to cronet UrlRequest.read().
|
// The size of read buffer passed to cronet UrlRequest.read().
|
||||||
private static final int READ_BUFFER_SIZE_BYTES = 32 * 1024;
|
// TODO: Make this private once CronetDataSourceFactory is deleted.
|
||||||
|
static final int DEFAULT_READ_BUFFER_SIZE_BYTES = 32 * 1024;
|
||||||
|
|
||||||
|
/* package */ final UrlRequest.Callback urlRequestCallback;
|
||||||
|
|
||||||
private final CronetEngine cronetEngine;
|
private final CronetEngine cronetEngine;
|
||||||
private final Executor executor;
|
private final Executor executor;
|
||||||
@ -438,6 +456,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
private final RequestProperties requestProperties;
|
private final RequestProperties requestProperties;
|
||||||
private final ConditionVariable operation;
|
private final ConditionVariable operation;
|
||||||
private final Clock clock;
|
private final Clock clock;
|
||||||
|
private final int readBufferSize;
|
||||||
|
|
||||||
@Nullable private Predicate<String> contentTypePredicate;
|
@Nullable private Predicate<String> contentTypePredicate;
|
||||||
private final boolean keepPostFor302Redirects;
|
private final boolean keepPostFor302Redirects;
|
||||||
@ -476,7 +495,8 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
@Nullable String userAgent,
|
@Nullable String userAgent,
|
||||||
@Nullable RequestProperties defaultRequestProperties,
|
@Nullable RequestProperties defaultRequestProperties,
|
||||||
@Nullable Predicate<String> contentTypePredicate,
|
@Nullable Predicate<String> contentTypePredicate,
|
||||||
boolean keepPostFor302Redirects) {
|
boolean keepPostFor302Redirects,
|
||||||
|
int readBufferSize) {
|
||||||
super(/* isNetwork= */ true);
|
super(/* isNetwork= */ true);
|
||||||
this.cronetEngine = Assertions.checkNotNull(cronetEngine);
|
this.cronetEngine = Assertions.checkNotNull(cronetEngine);
|
||||||
this.executor = Assertions.checkNotNull(executor);
|
this.executor = Assertions.checkNotNull(executor);
|
||||||
@ -490,6 +510,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
this.contentTypePredicate = contentTypePredicate;
|
this.contentTypePredicate = contentTypePredicate;
|
||||||
this.keepPostFor302Redirects = keepPostFor302Redirects;
|
this.keepPostFor302Redirects = keepPostFor302Redirects;
|
||||||
clock = Clock.DEFAULT;
|
clock = Clock.DEFAULT;
|
||||||
|
this.readBufferSize = readBufferSize;
|
||||||
urlRequestCallback = new UrlRequestCallback();
|
urlRequestCallback = new UrlRequestCallback();
|
||||||
requestProperties = new RequestProperties();
|
requestProperties = new RequestProperties();
|
||||||
operation = new ConditionVariable();
|
operation = new ConditionVariable();
|
||||||
@ -1025,7 +1046,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
|||||||
|
|
||||||
private ByteBuffer getOrCreateReadBuffer() {
|
private ByteBuffer getOrCreateReadBuffer() {
|
||||||
if (readBuffer == null) {
|
if (readBuffer == null) {
|
||||||
readBuffer = ByteBuffer.allocateDirect(READ_BUFFER_SIZE_BYTES);
|
readBuffer = ByteBuffer.allocateDirect(readBufferSize);
|
||||||
readBuffer.limit(0);
|
readBuffer.limit(0);
|
||||||
}
|
}
|
||||||
return readBuffer;
|
return readBuffer;
|
||||||
|
@ -370,7 +370,8 @@ public final class CronetDataSourceFactory extends BaseFactory {
|
|||||||
/* userAgent= */ null,
|
/* userAgent= */ null,
|
||||||
defaultRequestProperties,
|
defaultRequestProperties,
|
||||||
/* contentTypePredicate= */ null,
|
/* contentTypePredicate= */ null,
|
||||||
/* keepPostFor302Redirects= */ false);
|
/* keepPostFor302Redirects= */ false,
|
||||||
|
CronetDataSource.DEFAULT_READ_BUFFER_SIZE_BYTES);
|
||||||
if (transferListener != null) {
|
if (transferListener != null) {
|
||||||
dataSource.addTransferListener(transferListener);
|
dataSource.addTransferListener(transferListener);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user