react-native-video/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerLoadErrorHandlingPolicy.kt
Seyed Mostafa Hasani 4e7c64e707
refactor(android): migrate ReactExoplayerLoadErrorHandlingPolicy to Kotlin (#3995)
* Rename .java to .kt

* refactor(android): migrate ReactExoplayerLoadErrorHandlingPolicy to Kotlin
2024-07-15 11:30:53 +02:00

28 lines
1.3 KiB
Kotlin

package com.brentvatne.exoplayer
import androidx.media3.common.C
import androidx.media3.datasource.HttpDataSource.HttpDataSourceException
import androidx.media3.exoplayer.upstream.DefaultLoadErrorHandlingPolicy
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy.LoadErrorInfo
import kotlin.math.min
class ReactExoplayerLoadErrorHandlingPolicy(private val minLoadRetryCount: Int) : DefaultLoadErrorHandlingPolicy(minLoadRetryCount) {
override fun getRetryDelayMsFor(loadErrorInfo: LoadErrorInfo): Long {
val errorMessage: String? = loadErrorInfo.exception.message
return if (loadErrorInfo.exception is HttpDataSourceException &&
errorMessage != null &&
(errorMessage == "Unable to connect" || errorMessage == "Software caused connection abort")
) {
// Capture the error we get when there is no network connectivity and keep retrying it
1000 // Retry every second
} else if (loadErrorInfo.errorCount < minLoadRetryCount) {
min(((loadErrorInfo.errorCount - 1) * 1000L), 5000L) // Default timeout handling
} else {
C.TIME_UNSET // Done retrying and will return the error immediately
}
}
override fun getMinimumLoadableRetryCount(dataType: Int): Int = Int.MAX_VALUE
}