Commit d5b19694 by eguven Committed by Oliver Woodman

Add percentage field to CacheUtil.CachingCounters

PiperOrigin-RevId: 241524766
parent 9aacef47
......@@ -103,10 +103,7 @@ public final class ProgressiveDownloader implements Downloader {
@Override
public float getDownloadPercentage() {
long contentLength = cachingCounters.contentLength;
return contentLength == C.LENGTH_UNSET
? C.PERCENTAGE_UNSET
: ((cachingCounters.totalCachedBytes() * 100f) / contentLength);
return cachingCounters.percentage;
}
@Override
......
......@@ -42,6 +42,8 @@ public final class CacheUtil {
public volatile long newlyCachedBytes;
/** The length of the content being cached in bytes, or {@link C#LENGTH_UNSET} if unknown. */
public volatile long contentLength = C.LENGTH_UNSET;
/** The percentage of cached data, or {@link C#PERCENTAGE_UNSET} if unavailable. */
public volatile float percentage;
/**
* Returns the sum of {@link #alreadyCachedBytes} and {@link #newlyCachedBytes}.
......@@ -49,6 +51,16 @@ public final class CacheUtil {
public long totalCachedBytes() {
return alreadyCachedBytes + newlyCachedBytes;
}
/** Updates {@link #percentage} value using other values. */
public void updatePercentage() {
// Take local snapshot of the volatile field
long contentLength = this.contentLength;
percentage =
contentLength == C.LENGTH_UNSET
? C.PERCENTAGE_UNSET
: ((totalCachedBytes() * 100f) / contentLength);
}
}
/** Default buffer size to be used while caching. */
......@@ -105,6 +117,7 @@ public final class CacheUtil {
start += blockLength;
left -= left == C.LENGTH_UNSET ? 0 : blockLength;
}
counters.updatePercentage();
}
/**
......@@ -293,6 +306,7 @@ public final class CacheUtil {
}
totalRead += read;
counters.newlyCachedBytes += read;
counters.updatePercentage();
}
return totalRead;
} catch (PriorityTaskManager.PriorityTooLowException exception) {
......
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