LeastRecentlyUsedCacheEvictor.smali
.class public final Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;
.super Ljava/lang/Object;
.source "LeastRecentlyUsedCacheEvictor.java"
# interfaces
.implements Lcom/google/android/exoplayer2/upstream/cache/CacheEvictor;
.implements Ljava/util/Comparator;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Object;",
"Lcom/google/android/exoplayer2/upstream/cache/CacheEvictor;",
"Ljava/util/Comparator<",
"Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;",
">;"
}
.end annotation
# instance fields
.field private currentSize:J
.field private final leastRecentlyUsed:Ljava/util/TreeSet;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/TreeSet<",
"Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;",
">;"
}
.end annotation
.end field
.field private final maxBytes:J
# direct methods
.method public constructor <init>(J)V
.registers 3
.line 32
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 33
iput-wide p1, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->maxBytes:J
.line 34
new-instance p1, Ljava/util/TreeSet;
invoke-direct {p1, p0}, Ljava/util/TreeSet;-><init>(Ljava/util/Comparator;)V
iput-object p1, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->leastRecentlyUsed:Ljava/util/TreeSet;
return-void
.end method
.method private evictCache(Lcom/google/android/exoplayer2/upstream/cache/Cache;J)V
.registers 9
.line 77
:goto_0
iget-wide v0, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->currentSize:J
add-long/2addr v0, p2
iget-wide v2, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->maxBytes:J
cmp-long v4, v0, v2
if-lez v4, :cond_17
.line 79
:try_start_9
iget-object v0, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->leastRecentlyUsed:Ljava/util/TreeSet;
invoke-virtual {v0}, Ljava/util/TreeSet;->first()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;
invoke-interface {p1, v0}, Lcom/google/android/exoplayer2/upstream/cache/Cache;->removeSpan(Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)V
:try_end_14
.catch Lcom/google/android/exoplayer2/upstream/cache/Cache$CacheException; {:try_start_9 .. :try_end_14} :catch_15
goto :goto_0
:catch_15
nop
goto :goto_0
:cond_17
return-void
.end method
# virtual methods
.method public compare(Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)I
.registers 8
.line 68
iget-wide v0, p1, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;->lastAccessTimestamp:J
iget-wide v2, p2, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;->lastAccessTimestamp:J
sub-long/2addr v0, v2
const-wide/16 v2, 0x0
cmp-long v4, v0, v2
if-nez v4, :cond_10
.line 71
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;->compareTo(Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)I
move-result p1
return p1
.line 73
:cond_10
iget-wide v0, p1, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;->lastAccessTimestamp:J
iget-wide p1, p2, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;->lastAccessTimestamp:J
cmp-long v2, v0, p1
if-gez v2, :cond_1a
const/4 p1, -0x1
goto :goto_1b
:cond_1a
const/4 p1, 0x1
:goto_1b
return p1
.end method
.method public bridge synthetic compare(Ljava/lang/Object;Ljava/lang/Object;)I
.registers 3
.line 25
check-cast p1, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;
check-cast p2, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;
invoke-virtual {p0, p1, p2}, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->compare(Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)I
move-result p1
return p1
.end method
.method public onCacheInitialized()V
.registers 1
return-void
.end method
.method public onSpanAdded(Lcom/google/android/exoplayer2/upstream/cache/Cache;Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)V
.registers 7
.line 49
iget-object v0, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->leastRecentlyUsed:Ljava/util/TreeSet;
invoke-virtual {v0, p2}, Ljava/util/TreeSet;->add(Ljava/lang/Object;)Z
.line 50
iget-wide v0, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->currentSize:J
iget-wide v2, p2, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;->length:J
add-long/2addr v0, v2
iput-wide v0, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->currentSize:J
const-wide/16 v0, 0x0
.line 51
invoke-direct {p0, p1, v0, v1}, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->evictCache(Lcom/google/android/exoplayer2/upstream/cache/Cache;J)V
return-void
.end method
.method public onSpanRemoved(Lcom/google/android/exoplayer2/upstream/cache/Cache;Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)V
.registers 5
.line 56
iget-object p1, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->leastRecentlyUsed:Ljava/util/TreeSet;
invoke-virtual {p1, p2}, Ljava/util/TreeSet;->remove(Ljava/lang/Object;)Z
.line 57
iget-wide v0, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->currentSize:J
iget-wide p1, p2, Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;->length:J
sub-long/2addr v0, p1
iput-wide v0, p0, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->currentSize:J
return-void
.end method
.method public onSpanTouched(Lcom/google/android/exoplayer2/upstream/cache/Cache;Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)V
.registers 4
.line 62
invoke-virtual {p0, p1, p2}, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->onSpanRemoved(Lcom/google/android/exoplayer2/upstream/cache/Cache;Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)V
.line 63
invoke-virtual {p0, p1, p3}, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->onSpanAdded(Lcom/google/android/exoplayer2/upstream/cache/Cache;Lcom/google/android/exoplayer2/upstream/cache/CacheSpan;)V
return-void
.end method
.method public onStartFile(Lcom/google/android/exoplayer2/upstream/cache/Cache;Ljava/lang/String;JJ)V
.registers 7
.line 44
invoke-direct {p0, p1, p5, p6}, Lcom/google/android/exoplayer2/upstream/cache/LeastRecentlyUsedCacheEvictor;->evictCache(Lcom/google/android/exoplayer2/upstream/cache/Cache;J)V
return-void
.end method