Commit fc2168eb by aquilescanta Committed by Oliver Woodman

Add an errorCount argument to onLoadError

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=202313695
parent 93cbae5b
...@@ -534,7 +534,11 @@ import java.util.Arrays; ...@@ -534,7 +534,11 @@ import java.util.Arrays;
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
ExtractingLoadable loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error) { ExtractingLoadable loadable,
long elapsedRealtimeMs,
long loadDurationMs,
IOException error,
int errorCount) {
boolean isErrorFatal = isLoadableExceptionFatal(error); boolean isErrorFatal = isLoadableExceptionFatal(error);
eventDispatcher.loadError( eventDispatcher.loadError(
loadable.dataSpec, loadable.dataSpec,
......
...@@ -62,7 +62,6 @@ import java.util.Arrays; ...@@ -62,7 +62,6 @@ import java.util.Arrays;
/* package */ boolean loadingSucceeded; /* package */ boolean loadingSucceeded;
/* package */ byte[] sampleData; /* package */ byte[] sampleData;
/* package */ int sampleSize; /* package */ int sampleSize;
private int errorCount;
public SingleSampleMediaPeriod( public SingleSampleMediaPeriod(
DataSpec dataSpec, DataSpec dataSpec,
...@@ -230,8 +229,11 @@ import java.util.Arrays; ...@@ -230,8 +229,11 @@ import java.util.Arrays;
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
SourceLoadable loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error) { SourceLoadable loadable,
errorCount++; long elapsedRealtimeMs,
long loadDurationMs,
IOException error,
int errorCount) {
boolean cancel = treatLoadErrorsAsEndOfStream && errorCount >= minLoadableRetryCount; boolean cancel = treatLoadErrorsAsEndOfStream && errorCount >= minLoadableRetryCount;
eventDispatcher.loadError( eventDispatcher.loadError(
loadable.dataSpec, loadable.dataSpec,
......
...@@ -411,7 +411,11 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S ...@@ -411,7 +411,11 @@ public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, S
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error) { Chunk loadable,
long elapsedRealtimeMs,
long loadDurationMs,
IOException error,
int errorCount) {
long bytesLoaded = loadable.bytesLoaded(); long bytesLoaded = loadable.bytesLoaded();
boolean isMediaChunk = isMediaChunk(loadable); boolean isMediaChunk = isMediaChunk(loadable);
int lastChunkIndex = mediaChunks.size() - 1; int lastChunkIndex = mediaChunks.size() - 1;
......
...@@ -111,12 +111,13 @@ public final class Loader implements LoaderErrorThrower { ...@@ -111,12 +111,13 @@ public final class Loader implements LoaderErrorThrower {
* @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the error occurred. * @param elapsedRealtimeMs {@link SystemClock#elapsedRealtime} when the error occurred.
* @param loadDurationMs The duration of the load up to the point at which the error occurred. * @param loadDurationMs The duration of the load up to the point at which the error occurred.
* @param error The load error. * @param error The load error.
* @param errorCount The number of errors this load has encountered, including this one.
* @return The desired error handling action. One of {@link Loader#RETRY}, {@link * @return The desired error handling action. One of {@link Loader#RETRY}, {@link
* Loader#RETRY_RESET_ERROR_COUNT}, {@link Loader#DONT_RETRY}, {@link * Loader#RETRY_RESET_ERROR_COUNT}, {@link Loader#DONT_RETRY}, {@link
* Loader#DONT_RETRY_FATAL} or a retry action created by {@link #createRetryAction}. * Loader#DONT_RETRY_FATAL} or a retry action created by {@link #createRetryAction}.
*/ */
LoadErrorAction onLoadError( LoadErrorAction onLoadError(
T loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error); T loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error, int errorCount);
} }
/** /**
...@@ -164,7 +165,7 @@ public final class Loader implements LoaderErrorThrower { ...@@ -164,7 +165,7 @@ public final class Loader implements LoaderErrorThrower {
/** /**
* Action that can be taken in response to {@link Callback#onLoadError(Loadable, long, long, * Action that can be taken in response to {@link Callback#onLoadError(Loadable, long, long,
* IOException)}. * IOException, int)}.
*/ */
public static final class LoadErrorAction { public static final class LoadErrorAction {
...@@ -445,12 +446,15 @@ public final class Loader implements LoaderErrorThrower { ...@@ -445,12 +446,15 @@ public final class Loader implements LoaderErrorThrower {
break; break;
case MSG_IO_EXCEPTION: case MSG_IO_EXCEPTION:
currentError = (IOException) msg.obj; currentError = (IOException) msg.obj;
LoadErrorAction action = callback.onLoadError(loadable, nowMs, durationMs, currentError); errorCount++;
LoadErrorAction action =
callback.onLoadError(loadable, nowMs, durationMs, currentError, errorCount);
if (action.type == ACTION_TYPE_DONT_RETRY_FATAL) { if (action.type == ACTION_TYPE_DONT_RETRY_FATAL) {
fatalError = currentError; fatalError = currentError;
} else if (action.type != ACTION_TYPE_DONT_RETRY) { } else if (action.type != ACTION_TYPE_DONT_RETRY) {
errorCount = if (action.type == ACTION_TYPE_RETRY_AND_RESET_ERROR_COUNT) {
action.type == ACTION_TYPE_RETRY_AND_RESET_ERROR_COUNT ? 1 : errorCount + 1; errorCount = 1;
}
start( start(
action.retryDelayMillis != C.TIME_UNSET action.retryDelayMillis != C.TIME_UNSET
? action.retryDelayMillis ? action.retryDelayMillis
......
...@@ -1175,7 +1175,8 @@ public final class DashMediaSource extends BaseMediaSource { ...@@ -1175,7 +1175,8 @@ public final class DashMediaSource extends BaseMediaSource {
ParsingLoadable<DashManifest> loadable, ParsingLoadable<DashManifest> loadable,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error) { IOException error,
int errorCount) {
return onManifestLoadError(loadable, elapsedRealtimeMs, loadDurationMs, error); return onManifestLoadError(loadable, elapsedRealtimeMs, loadDurationMs, error);
} }
...@@ -1200,7 +1201,8 @@ public final class DashMediaSource extends BaseMediaSource { ...@@ -1200,7 +1201,8 @@ public final class DashMediaSource extends BaseMediaSource {
ParsingLoadable<Long> loadable, ParsingLoadable<Long> loadable,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error) { IOException error,
int errorCount) {
return onUtcTimestampLoadError(loadable, elapsedRealtimeMs, loadDurationMs, error); return onUtcTimestampLoadError(loadable, elapsedRealtimeMs, loadDurationMs, error);
} }
......
...@@ -604,7 +604,11 @@ import java.util.Arrays; ...@@ -604,7 +604,11 @@ import java.util.Arrays;
@Override @Override
public LoadErrorAction onLoadError( public LoadErrorAction onLoadError(
Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error) { Chunk loadable,
long elapsedRealtimeMs,
long loadDurationMs,
IOException error,
int errorCount) {
long bytesLoaded = loadable.bytesLoaded(); long bytesLoaded = loadable.bytesLoaded();
boolean isMediaChunk = isMediaChunk(loadable); boolean isMediaChunk = isMediaChunk(loadable);
boolean cancelable = !isMediaChunk || bytesLoaded == 0; boolean cancelable = !isMediaChunk || bytesLoaded == 0;
......
...@@ -234,7 +234,8 @@ public final class DefaultHlsPlaylistTracker ...@@ -234,7 +234,8 @@ public final class DefaultHlsPlaylistTracker
ParsingLoadable<HlsPlaylist> loadable, ParsingLoadable<HlsPlaylist> loadable,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error) { IOException error,
int errorCount) {
boolean isFatal = error instanceof ParserException; boolean isFatal = error instanceof ParserException;
eventDispatcher.loadError( eventDispatcher.loadError(
loadable.dataSpec, loadable.dataSpec,
...@@ -490,7 +491,8 @@ public final class DefaultHlsPlaylistTracker ...@@ -490,7 +491,8 @@ public final class DefaultHlsPlaylistTracker
ParsingLoadable<HlsPlaylist> loadable, ParsingLoadable<HlsPlaylist> loadable,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error) { IOException error,
int errorCount) {
boolean isFatal = error instanceof ParserException; boolean isFatal = error instanceof ParserException;
eventDispatcher.loadError( eventDispatcher.loadError(
loadable.dataSpec, loadable.dataSpec,
......
...@@ -545,7 +545,8 @@ public final class SsMediaSource extends BaseMediaSource ...@@ -545,7 +545,8 @@ public final class SsMediaSource extends BaseMediaSource
ParsingLoadable<SsManifest> loadable, ParsingLoadable<SsManifest> loadable,
long elapsedRealtimeMs, long elapsedRealtimeMs,
long loadDurationMs, long loadDurationMs,
IOException error) { IOException error,
int errorCount) {
boolean isFatal = error instanceof ParserException; boolean isFatal = error instanceof ParserException;
manifestEventDispatcher.loadError( manifestEventDispatcher.loadError(
loadable.dataSpec, loadable.dataSpec,
......
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