33 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
|   | package com.brentvatne.exoplayer;
 | ||
|  | 
 | ||
|  | import java.io.IOException;
 | ||
|  | import com.google.android.exoplayer2.upstream.DefaultLoadErrorHandlingPolicy;
 | ||
|  | import com.google.android.exoplayer2.upstream.HttpDataSource.HttpDataSourceException;
 | ||
|  | import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy.LoadErrorInfo;
 | ||
|  | import com.google.android.exoplayer2.C;
 | ||
|  | 
 | ||
|  | public final class ReactExoplayerLoadErrorHandlingPolicy extends DefaultLoadErrorHandlingPolicy {
 | ||
|  |   private int minLoadRetryCount = Integer.MAX_VALUE;
 | ||
|  | 
 | ||
|  |   public ReactExoplayerLoadErrorHandlingPolicy(int minLoadRetryCount) {
 | ||
|  |     super(minLoadRetryCount);
 | ||
|  |     this.minLoadRetryCount = minLoadRetryCount;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   @Override
 | ||
|  |   public long getRetryDelayMsFor(LoadErrorInfo loadErrorInfo) {
 | ||
|  |     if (loadErrorInfo.exception instanceof HttpDataSourceException) {
 | ||
|  |       // Capture the error we get when there is no network connectivity and keep retrying it
 | ||
|  |       return 1000; // Retry every second
 | ||
|  |     } else if(loadErrorInfo.errorCount < this.minLoadRetryCount) {
 | ||
|  |       return Math.min((loadErrorInfo.errorCount - 1) * 1000, 5000); // Default timeout handling
 | ||
|  |     } else {
 | ||
|  |       return C.TIME_UNSET; // Done retrying and will return the error immediately
 | ||
|  |     }
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   @Override
 | ||
|  |   public int getMinimumLoadableRetryCount(int dataType) {
 | ||
|  |     return Integer.MAX_VALUE;
 | ||
|  |   }
 | ||
|  | }
 |