Rabbit-R1/android (non root)/smali/smali_classes2/androidx/media3/datasource/cache/SimpleCache.smali

2999 lines
78 KiB
Smali
Raw Normal View History

2024-05-21 21:08:36 +00:00
.class public final Landroidx/media3/datasource/cache/SimpleCache;
.super Ljava/lang/Object;
.source "SimpleCache.java"
# interfaces
.implements Landroidx/media3/datasource/cache/Cache;
# static fields
.field private static final SUBDIRECTORY_COUNT:I = 0xa
.field private static final TAG:Ljava/lang/String; = "SimpleCache"
.field private static final UID_FILE_SUFFIX:Ljava/lang/String; = ".uid"
.field private static final lockedCacheDirs:Ljava/util/HashSet;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashSet<",
"Ljava/io/File;",
">;"
}
.end annotation
.end field
# instance fields
.field private final cacheDir:Ljava/io/File;
.field private final contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.field private final evictor:Landroidx/media3/datasource/cache/CacheEvictor;
.field private final fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
.field private initializationException:Landroidx/media3/datasource/cache/Cache$CacheException;
.field private final listeners:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap<",
"Ljava/lang/String;",
"Ljava/util/ArrayList<",
"Landroidx/media3/datasource/cache/Cache$Listener;",
">;>;"
}
.end annotation
.end field
.field private final random:Ljava/util/Random;
.field private released:Z
.field private totalSpace:J
.field private final touchCacheSpans:Z
.field private uid:J
# direct methods
.method static constructor <clinit>()V
.locals 1
.line 64
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
sput-object v0, Landroidx/media3/datasource/cache/SimpleCache;->lockedCacheDirs:Ljava/util/HashSet;
return-void
.end method
.method public constructor <init>(Ljava/io/File;Landroidx/media3/datasource/cache/CacheEvictor;)V
.locals 7
.annotation runtime Ljava/lang/Deprecated;
.end annotation
const/4 v3, 0x0
const/4 v4, 0x0
const/4 v5, 0x0
const/4 v6, 0x1
move-object v0, p0
move-object v1, p1
move-object v2, p2
.line 141
invoke-direct/range {v0 .. v6}, Landroidx/media3/datasource/cache/SimpleCache;-><init>(Ljava/io/File;Landroidx/media3/datasource/cache/CacheEvictor;Landroidx/media3/database/DatabaseProvider;[BZZ)V
return-void
.end method
.method public constructor <init>(Ljava/io/File;Landroidx/media3/datasource/cache/CacheEvictor;Landroidx/media3/database/DatabaseProvider;)V
.locals 7
const/4 v4, 0x0
const/4 v5, 0x0
const/4 v6, 0x0
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v3, p3
.line 160
invoke-direct/range {v0 .. v6}, Landroidx/media3/datasource/cache/SimpleCache;-><init>(Ljava/io/File;Landroidx/media3/datasource/cache/CacheEvictor;Landroidx/media3/database/DatabaseProvider;[BZZ)V
return-void
.end method
.method public constructor <init>(Ljava/io/File;Landroidx/media3/datasource/cache/CacheEvictor;Landroidx/media3/database/DatabaseProvider;[BZZ)V
.locals 7
.line 195
new-instance v6, Landroidx/media3/datasource/cache/CachedContentIndex;
move-object v0, v6
move-object v1, p3
move-object v2, p1
move-object v3, p4
move v4, p5
move v5, p6
invoke-direct/range {v0 .. v5}, Landroidx/media3/datasource/cache/CachedContentIndex;-><init>(Landroidx/media3/database/DatabaseProvider;Ljava/io/File;[BZZ)V
if-eqz p3, :cond_0
if-nez p6, :cond_0
.line 205
new-instance p4, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
invoke-direct {p4, p3}, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;-><init>(Landroidx/media3/database/DatabaseProvider;)V
goto :goto_0
:cond_0
const/4 p4, 0x0
.line 195
:goto_0
invoke-direct {p0, p1, p2, v6, p4}, Landroidx/media3/datasource/cache/SimpleCache;-><init>(Ljava/io/File;Landroidx/media3/datasource/cache/CacheEvictor;Landroidx/media3/datasource/cache/CachedContentIndex;Landroidx/media3/datasource/cache/CacheFileMetadataIndex;)V
return-void
.end method
.method constructor <init>(Ljava/io/File;Landroidx/media3/datasource/cache/CacheEvictor;Landroidx/media3/datasource/cache/CachedContentIndex;Landroidx/media3/datasource/cache/CacheFileMetadataIndex;)V
.locals 1
.line 213
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 214
invoke-static {p1}, Landroidx/media3/datasource/cache/SimpleCache;->lockFolder(Ljava/io/File;)Z
move-result v0
if-eqz v0, :cond_0
iput-object p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
iput-object p2, p0, Landroidx/media3/datasource/cache/SimpleCache;->evictor:Landroidx/media3/datasource/cache/CacheEvictor;
iput-object p3, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
iput-object p4, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
.line 222
new-instance p1, Ljava/util/HashMap;
invoke-direct {p1}, Ljava/util/HashMap;-><init>()V
iput-object p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 223
new-instance p1, Ljava/util/Random;
invoke-direct {p1}, Ljava/util/Random;-><init>()V
iput-object p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->random:Ljava/util/Random;
.line 224
invoke-interface {p2}, Landroidx/media3/datasource/cache/CacheEvictor;->requiresCacheSpanTouches()Z
move-result p1
iput-boolean p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->touchCacheSpans:Z
const-wide/16 p1, -0x1
iput-wide p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->uid:J
.line 228
new-instance p1, Landroid/os/ConditionVariable;
invoke-direct {p1}, Landroid/os/ConditionVariable;-><init>()V
.line 229
new-instance p2, Landroidx/media3/datasource/cache/SimpleCache$1;
const-string p3, "ExoPlayer:SimpleCacheInit"
invoke-direct {p2, p0, p3, p1}, Landroidx/media3/datasource/cache/SimpleCache$1;-><init>(Landroidx/media3/datasource/cache/SimpleCache;Ljava/lang/String;Landroid/os/ConditionVariable;)V
.line 238
invoke-virtual {p2}, Landroidx/media3/datasource/cache/SimpleCache$1;->start()V
.line 239
invoke-virtual {p1}, Landroid/os/ConditionVariable;->block()V
return-void
.line 215
:cond_0
new-instance p0, Ljava/lang/IllegalStateException;
new-instance p2, Ljava/lang/StringBuilder;
const-string p3, "Another SimpleCache instance uses the folder: "
invoke-direct {p2, p3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method static synthetic access$000(Landroidx/media3/datasource/cache/SimpleCache;)V
.locals 0
.line 51
invoke-direct {p0}, Landroidx/media3/datasource/cache/SimpleCache;->initialize()V
return-void
.end method
.method static synthetic access$100(Landroidx/media3/datasource/cache/SimpleCache;)Landroidx/media3/datasource/cache/CacheEvictor;
.locals 0
.line 51
iget-object p0, p0, Landroidx/media3/datasource/cache/SimpleCache;->evictor:Landroidx/media3/datasource/cache/CacheEvictor;
return-object p0
.end method
.method private addSpan(Landroidx/media3/datasource/cache/SimpleCacheSpan;)V
.locals 4
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 691
iget-object v1, p1, Landroidx/media3/datasource/cache/SimpleCacheSpan;->key:Ljava/lang/String;
invoke-virtual {v0, v1}, Landroidx/media3/datasource/cache/CachedContentIndex;->getOrAdd(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object v0
invoke-virtual {v0, p1}, Landroidx/media3/datasource/cache/CachedContent;->addSpan(Landroidx/media3/datasource/cache/SimpleCacheSpan;)V
iget-wide v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->totalSpace:J
.line 692
iget-wide v2, p1, Landroidx/media3/datasource/cache/SimpleCacheSpan;->length:J
add-long/2addr v0, v2
iput-wide v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->totalSpace:J
.line 693
invoke-direct {p0, p1}, Landroidx/media3/datasource/cache/SimpleCache;->notifySpanAdded(Landroidx/media3/datasource/cache/SimpleCacheSpan;)V
return-void
.end method
.method private static createCacheDirectories(Ljava/io/File;)V
.locals 2
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/datasource/cache/Cache$CacheException;
}
.end annotation
.line 807
invoke-virtual {p0}, Ljava/io/File;->mkdirs()Z
move-result v0
if-nez v0, :cond_1
invoke-virtual {p0}, Ljava/io/File;->isDirectory()Z
move-result v0
if-eqz v0, :cond_0
goto :goto_0
.line 808
:cond_0
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "Failed to create cache directory: "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
const-string v0, "SimpleCache"
.line 809
invoke-static {v0, p0}, Landroidx/media3/common/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 810
new-instance v0, Landroidx/media3/datasource/cache/Cache$CacheException;
invoke-direct {v0, p0}, Landroidx/media3/datasource/cache/Cache$CacheException;-><init>(Ljava/lang/String;)V
throw v0
:cond_1
:goto_0
return-void
.end method
.method private static createUid(Ljava/io/File;)J
.locals 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 789
new-instance v0, Ljava/security/SecureRandom;
invoke-direct {v0}, Ljava/security/SecureRandom;-><init>()V
invoke-virtual {v0}, Ljava/security/SecureRandom;->nextLong()J
move-result-wide v0
const-wide/high16 v2, -0x8000000000000000L
cmp-long v2, v0, v2
if-nez v2, :cond_0
const-wide/16 v0, 0x0
goto :goto_0
.line 790
:cond_0
invoke-static {v0, v1}, Ljava/lang/Math;->abs(J)J
move-result-wide v0
:goto_0
const/16 v2, 0x10
.line 792
invoke-static {v0, v1, v2}, Ljava/lang/Long;->toString(JI)Ljava/lang/String;
move-result-object v2
.line 793
new-instance v3, Ljava/io/File;
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v4, ".uid"
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v3, p0, v2}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 794
invoke-virtual {v3}, Ljava/io/File;->createNewFile()Z
move-result p0
if-eqz p0, :cond_1
return-wide v0
.line 796
:cond_1
new-instance p0, Ljava/io/IOException;
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "Failed to create UID file: "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method public static delete(Ljava/io/File;Landroidx/media3/database/DatabaseProvider;)V
.locals 6
const-string v0, "Failed to delete file metadata: "
const-string v1, "SimpleCache"
.line 98
invoke-virtual {p0}, Ljava/io/File;->exists()Z
move-result v2
if-nez v2, :cond_0
return-void
.line 102
:cond_0
invoke-virtual {p0}, Ljava/io/File;->listFiles()[Ljava/io/File;
move-result-object v2
if-nez v2, :cond_1
.line 104
invoke-virtual {p0}, Ljava/io/File;->delete()Z
return-void
:cond_1
if-eqz p1, :cond_2
.line 111
invoke-static {v2}, Landroidx/media3/datasource/cache/SimpleCache;->loadUid([Ljava/io/File;)J
move-result-wide v2
const-wide/16 v4, -0x1
cmp-long v4, v2, v4
if-eqz v4, :cond_2
.line 114
:try_start_0
invoke-static {p1, v2, v3}, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;->delete(Landroidx/media3/database/DatabaseProvider;J)V
:try_end_0
.catch Landroidx/media3/database/DatabaseIOException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
.line 116
:catch_0
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v4, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v1, v4}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 119
:goto_0
:try_start_1
invoke-static {p1, v2, v3}, Landroidx/media3/datasource/cache/CachedContentIndex;->delete(Landroidx/media3/database/DatabaseProvider;J)V
:try_end_1
.catch Landroidx/media3/database/DatabaseIOException; {:try_start_1 .. :try_end_1} :catch_1
goto :goto_1
.line 121
:catch_1
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {v1, p1}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 126
:cond_2
:goto_1
invoke-static {p0}, Landroidx/media3/common/util/Util;->recursiveDelete(Ljava/io/File;)V
return-void
.end method
.method private getSpan(Ljava/lang/String;JJ)Landroidx/media3/datasource/cache/SimpleCacheSpan;
.locals 5
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 669
invoke-virtual {v0, p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object v0
if-nez v0, :cond_0
.line 671
invoke-static {p1, p2, p3, p4, p5}, Landroidx/media3/datasource/cache/SimpleCacheSpan;->createHole(Ljava/lang/String;JJ)Landroidx/media3/datasource/cache/SimpleCacheSpan;
move-result-object p0
return-object p0
.line 674
:cond_0
:goto_0
invoke-virtual {v0, p2, p3, p4, p5}, Landroidx/media3/datasource/cache/CachedContent;->getSpan(JJ)Landroidx/media3/datasource/cache/SimpleCacheSpan;
move-result-object p1
.line 675
iget-boolean v1, p1, Landroidx/media3/datasource/cache/SimpleCacheSpan;->isCached:Z
if-eqz v1, :cond_1
iget-object v1, p1, Landroidx/media3/datasource/cache/SimpleCacheSpan;->file:Ljava/io/File;
invoke-virtual {v1}, Ljava/io/File;->length()J
move-result-wide v1
iget-wide v3, p1, Landroidx/media3/datasource/cache/SimpleCacheSpan;->length:J
cmp-long v1, v1, v3
if-eqz v1, :cond_1
.line 678
invoke-direct {p0}, Landroidx/media3/datasource/cache/SimpleCache;->removeStaleSpans()V
goto :goto_0
:cond_1
return-object p1
.end method
.method private initialize()V
.locals 6
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 518
invoke-virtual {v0}, Ljava/io/File;->exists()Z
move-result v0
if-nez v0, :cond_0
:try_start_0
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 520
invoke-static {v0}, Landroidx/media3/datasource/cache/SimpleCache;->createCacheDirectories(Ljava/io/File;)V
:try_end_0
.catch Landroidx/media3/datasource/cache/Cache$CacheException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception v0
iput-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->initializationException:Landroidx/media3/datasource/cache/Cache$CacheException;
return-void
:cond_0
:goto_0
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 527
invoke-virtual {v0}, Ljava/io/File;->listFiles()[Ljava/io/File;
move-result-object v0
const-string v1, "SimpleCache"
if-nez v0, :cond_1
.line 529
new-instance v0, Ljava/lang/StringBuilder;
const-string v2, "Failed to list cache directory files: "
invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 530
invoke-static {v1, v0}, Landroidx/media3/common/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 531
new-instance v1, Landroidx/media3/datasource/cache/Cache$CacheException;
invoke-direct {v1, v0}, Landroidx/media3/datasource/cache/Cache$CacheException;-><init>(Ljava/lang/String;)V
iput-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->initializationException:Landroidx/media3/datasource/cache/Cache$CacheException;
return-void
.line 535
:cond_1
invoke-static {v0}, Landroidx/media3/datasource/cache/SimpleCache;->loadUid([Ljava/io/File;)J
move-result-wide v2
iput-wide v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->uid:J
const-wide/16 v4, -0x1
cmp-long v2, v2, v4
if-nez v2, :cond_2
:try_start_1
iget-object v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 538
invoke-static {v2}, Landroidx/media3/datasource/cache/SimpleCache;->createUid(Ljava/io/File;)J
move-result-wide v2
iput-wide v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->uid:J
:try_end_1
.catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_1
goto :goto_1
:catch_1
move-exception v0
.line 540
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Failed to create cache UID: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v3, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
.line 541
invoke-static {v1, v2, v0}, Landroidx/media3/common/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 542
new-instance v1, Landroidx/media3/datasource/cache/Cache$CacheException;
invoke-direct {v1, v2, v0}, Landroidx/media3/datasource/cache/Cache$CacheException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
iput-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->initializationException:Landroidx/media3/datasource/cache/Cache$CacheException;
return-void
:cond_2
:goto_1
:try_start_2
iget-object v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
iget-wide v3, p0, Landroidx/media3/datasource/cache/SimpleCache;->uid:J
.line 548
invoke-virtual {v2, v3, v4}, Landroidx/media3/datasource/cache/CachedContentIndex;->initialize(J)V
iget-object v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
const/4 v3, 0x1
if-eqz v2, :cond_3
iget-wide v4, p0, Landroidx/media3/datasource/cache/SimpleCache;->uid:J
.line 550
invoke-virtual {v2, v4, v5}, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;->initialize(J)V
iget-object v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
.line 551
invoke-virtual {v2}, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;->getAll()Ljava/util/Map;
move-result-object v2
iget-object v4, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 552
invoke-direct {p0, v4, v3, v0, v2}, Landroidx/media3/datasource/cache/SimpleCache;->loadDirectory(Ljava/io/File;Z[Ljava/io/File;Ljava/util/Map;)V
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
.line 553
invoke-interface {v2}, Ljava/util/Map;->keySet()Ljava/util/Set;
move-result-object v2
invoke-virtual {v0, v2}, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;->removeAll(Ljava/util/Set;)V
goto :goto_2
:cond_3
iget-object v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
const/4 v4, 0x0
.line 555
invoke-direct {p0, v2, v3, v0, v4}, Landroidx/media3/datasource/cache/SimpleCache;->loadDirectory(Ljava/io/File;Z[Ljava/io/File;Ljava/util/Map;)V
:try_end_2
.catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_3
:goto_2
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 564
invoke-virtual {v0}, Landroidx/media3/datasource/cache/CachedContentIndex;->removeEmpty()V
:try_start_3
iget-object p0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 566
invoke-virtual {p0}, Landroidx/media3/datasource/cache/CachedContentIndex;->store()V
:try_end_3
.catch Ljava/io/IOException; {:try_start_3 .. :try_end_3} :catch_2
goto :goto_3
:catch_2
move-exception p0
const-string v0, "Storing index file failed"
.line 568
invoke-static {v1, v0, p0}, Landroidx/media3/common/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:goto_3
return-void
:catch_3
move-exception v0
.line 558
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Failed to initialize cache indices: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v3, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
.line 559
invoke-static {v1, v2, v0}, Landroidx/media3/common/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 560
new-instance v1, Landroidx/media3/datasource/cache/Cache$CacheException;
invoke-direct {v1, v2, v0}, Landroidx/media3/datasource/cache/Cache$CacheException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
iput-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->initializationException:Landroidx/media3/datasource/cache/Cache$CacheException;
return-void
.end method
.method public static declared-synchronized isCacheFolderLocked(Ljava/io/File;)Z
.locals 2
const-class v0, Landroidx/media3/datasource/cache/SimpleCache;
monitor-enter v0
:try_start_0
sget-object v1, Landroidx/media3/datasource/cache/SimpleCache;->lockedCacheDirs:Ljava/util/HashSet;
.line 84
invoke-virtual {p0}, Ljava/io/File;->getAbsoluteFile()Ljava/io/File;
move-result-object p0
invoke-virtual {v1, p0}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
move-result p0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
monitor-exit v0
return p0
:catchall_0
move-exception p0
monitor-exit v0
throw p0
.end method
.method private loadDirectory(Ljava/io/File;Z[Ljava/io/File;Ljava/util/Map;)V
.locals 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/io/File;",
"Z[",
"Ljava/io/File;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Landroidx/media3/datasource/cache/CacheFileMetadata;",
">;)V"
}
.end annotation
if-eqz p3, :cond_8
.line 587
array-length v0, p3
if-nez v0, :cond_0
goto :goto_4
.line 596
:cond_0
array-length p1, p3
const/4 v0, 0x0
move v1, v0
:goto_0
if-ge v1, p1, :cond_7
aget-object v8, p3, v1
.line 597
invoke-virtual {v8}, Ljava/io/File;->getName()Ljava/lang/String;
move-result-object v2
if-eqz p2, :cond_1
const/16 v3, 0x2e
.line 598
invoke-virtual {v2, v3}, Ljava/lang/String;->indexOf(I)I
move-result v3
const/4 v4, -0x1
if-ne v3, v4, :cond_1
.line 599
invoke-virtual {v8}, Ljava/io/File;->listFiles()[Ljava/io/File;
move-result-object v2
invoke-direct {p0, v8, v0, v2, p4}, Landroidx/media3/datasource/cache/SimpleCache;->loadDirectory(Ljava/io/File;Z[Ljava/io/File;Ljava/util/Map;)V
goto :goto_3
:cond_1
if-eqz p2, :cond_2
.line 602
invoke-static {v2}, Landroidx/media3/datasource/cache/CachedContentIndex;->isIndexFile(Ljava/lang/String;)Z
move-result v3
if-nez v3, :cond_6
const-string v3, ".uid"
invoke-virtual {v2, v3}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_2
goto :goto_3
:cond_2
if-eqz p4, :cond_3
.line 609
invoke-interface {p4, v2}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/media3/datasource/cache/CacheFileMetadata;
goto :goto_1
:cond_3
const/4 v2, 0x0
:goto_1
if-eqz v2, :cond_4
.line 611
iget-wide v3, v2, Landroidx/media3/datasource/cache/CacheFileMetadata;->length:J
.line 612
iget-wide v5, v2, Landroidx/media3/datasource/cache/CacheFileMetadata;->lastTouchTimestamp:J
goto :goto_2
:cond_4
const-wide/16 v2, -0x1
const-wide v4, -0x7fffffffffffffffL # -4.9E-324
move-wide v5, v4
move-wide v3, v2
:goto_2
iget-object v7, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
move-object v2, v8
.line 616
invoke-static/range {v2 .. v7}, Landroidx/media3/datasource/cache/SimpleCacheSpan;->createCacheEntry(Ljava/io/File;JJLandroidx/media3/datasource/cache/CachedContentIndex;)Landroidx/media3/datasource/cache/SimpleCacheSpan;
move-result-object v2
if-eqz v2, :cond_5
.line 618
invoke-direct {p0, v2}, Landroidx/media3/datasource/cache/SimpleCache;->addSpan(Landroidx/media3/datasource/cache/SimpleCacheSpan;)V
goto :goto_3
.line 620
:cond_5
invoke-virtual {v8}, Ljava/io/File;->delete()Z
:cond_6
:goto_3
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_7
return-void
:cond_8
:goto_4
if-nez p2, :cond_9
.line 592
invoke-virtual {p1}, Ljava/io/File;->delete()Z
:cond_9
return-void
.end method
.method private static loadUid([Ljava/io/File;)J
.locals 5
.line 771
array-length v0, p0
const/4 v1, 0x0
:goto_0
if-ge v1, v0, :cond_1
aget-object v2, p0, v1
.line 772
invoke-virtual {v2}, Ljava/io/File;->getName()Ljava/lang/String;
move-result-object v3
const-string v4, ".uid"
.line 773
invoke-virtual {v3, v4}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v4
if-eqz v4, :cond_0
.line 775
:try_start_0
invoke-static {v3}, Landroidx/media3/datasource/cache/SimpleCache;->parseUid(Ljava/lang/String;)J
move-result-wide v0
:try_end_0
.catch Ljava/lang/NumberFormatException; {:try_start_0 .. :try_end_0} :catch_0
return-wide v0
.line 778
:catch_0
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Malformed UID file: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
const-string v4, "SimpleCache"
invoke-static {v4, v3}, Landroidx/media3/common/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 779
invoke-virtual {v2}, Ljava/io/File;->delete()Z
:cond_0
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_1
const-wide/16 v0, -0x1
return-wide v0
.end method
.method private static declared-synchronized lockFolder(Ljava/io/File;)Z
.locals 2
const-class v0, Landroidx/media3/datasource/cache/SimpleCache;
monitor-enter v0
:try_start_0
sget-object v1, Landroidx/media3/datasource/cache/SimpleCache;->lockedCacheDirs:Ljava/util/HashSet;
.line 815
invoke-virtual {p0}, Ljava/io/File;->getAbsoluteFile()Ljava/io/File;
move-result-object p0
invoke-virtual {v1, p0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
move-result p0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
monitor-exit v0
return p0
:catchall_0
move-exception p0
monitor-exit v0
throw p0
.end method
.method private notifySpanAdded(Landroidx/media3/datasource/cache/SimpleCacheSpan;)V
.locals 3
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 745
iget-object v1, p1, Landroidx/media3/datasource/cache/SimpleCacheSpan;->key:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/ArrayList;
if-eqz v0, :cond_0
.line 747
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v1
add-int/lit8 v1, v1, -0x1
:goto_0
if-ltz v1, :cond_0
.line 748
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/media3/datasource/cache/Cache$Listener;
invoke-interface {v2, p0, p1}, Landroidx/media3/datasource/cache/Cache$Listener;->onSpanAdded(Landroidx/media3/datasource/cache/Cache;Landroidx/media3/datasource/cache/CacheSpan;)V
add-int/lit8 v1, v1, -0x1
goto :goto_0
:cond_0
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->evictor:Landroidx/media3/datasource/cache/CacheEvictor;
.line 751
invoke-interface {v0, p0, p1}, Landroidx/media3/datasource/cache/CacheEvictor;->onSpanAdded(Landroidx/media3/datasource/cache/Cache;Landroidx/media3/datasource/cache/CacheSpan;)V
return-void
.end method
.method private notifySpanRemoved(Landroidx/media3/datasource/cache/CacheSpan;)V
.locals 3
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 735
iget-object v1, p1, Landroidx/media3/datasource/cache/CacheSpan;->key:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/ArrayList;
if-eqz v0, :cond_0
.line 737
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v1
add-int/lit8 v1, v1, -0x1
:goto_0
if-ltz v1, :cond_0
.line 738
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/media3/datasource/cache/Cache$Listener;
invoke-interface {v2, p0, p1}, Landroidx/media3/datasource/cache/Cache$Listener;->onSpanRemoved(Landroidx/media3/datasource/cache/Cache;Landroidx/media3/datasource/cache/CacheSpan;)V
add-int/lit8 v1, v1, -0x1
goto :goto_0
:cond_0
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->evictor:Landroidx/media3/datasource/cache/CacheEvictor;
.line 741
invoke-interface {v0, p0, p1}, Landroidx/media3/datasource/cache/CacheEvictor;->onSpanRemoved(Landroidx/media3/datasource/cache/Cache;Landroidx/media3/datasource/cache/CacheSpan;)V
return-void
.end method
.method private notifySpanTouched(Landroidx/media3/datasource/cache/SimpleCacheSpan;Landroidx/media3/datasource/cache/CacheSpan;)V
.locals 3
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 755
iget-object v1, p1, Landroidx/media3/datasource/cache/SimpleCacheSpan;->key:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/ArrayList;
if-eqz v0, :cond_0
.line 757
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v1
add-int/lit8 v1, v1, -0x1
:goto_0
if-ltz v1, :cond_0
.line 758
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/media3/datasource/cache/Cache$Listener;
invoke-interface {v2, p0, p1, p2}, Landroidx/media3/datasource/cache/Cache$Listener;->onSpanTouched(Landroidx/media3/datasource/cache/Cache;Landroidx/media3/datasource/cache/CacheSpan;Landroidx/media3/datasource/cache/CacheSpan;)V
add-int/lit8 v1, v1, -0x1
goto :goto_0
:cond_0
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->evictor:Landroidx/media3/datasource/cache/CacheEvictor;
.line 761
invoke-interface {v0, p0, p1, p2}, Landroidx/media3/datasource/cache/CacheEvictor;->onSpanTouched(Landroidx/media3/datasource/cache/Cache;Landroidx/media3/datasource/cache/CacheSpan;Landroidx/media3/datasource/cache/CacheSpan;)V
return-void
.end method
.method private static parseUid(Ljava/lang/String;)J
.locals 2
const/16 v0, 0x2e
.line 802
invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(I)I
move-result v0
const/4 v1, 0x0
invoke-virtual {p0, v1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object p0
const/16 v0, 0x10
invoke-static {p0, v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;I)J
move-result-wide v0
return-wide v0
.end method
.method private removeSpanInternal(Landroidx/media3/datasource/cache/CacheSpan;)V
.locals 5
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 697
iget-object v1, p1, Landroidx/media3/datasource/cache/CacheSpan;->key:Ljava/lang/String;
invoke-virtual {v0, v1}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object v0
if-eqz v0, :cond_2
.line 698
invoke-virtual {v0, p1}, Landroidx/media3/datasource/cache/CachedContent;->removeSpan(Landroidx/media3/datasource/cache/CacheSpan;)Z
move-result v1
if-nez v1, :cond_0
goto :goto_1
:cond_0
iget-wide v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->totalSpace:J
.line 701
iget-wide v3, p1, Landroidx/media3/datasource/cache/CacheSpan;->length:J
sub-long/2addr v1, v3
iput-wide v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->totalSpace:J
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
if-eqz v1, :cond_1
.line 703
iget-object v1, p1, Landroidx/media3/datasource/cache/CacheSpan;->file:Ljava/io/File;
invoke-virtual {v1}, Ljava/io/File;->getName()Ljava/lang/String;
move-result-object v1
:try_start_0
iget-object v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
.line 705
invoke-virtual {v2, v1}, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;->remove(Ljava/lang/String;)V
:try_end_0
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
.line 709
:catch_0
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Failed to remove file index entry for: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const-string v2, "SimpleCache"
invoke-static {v2, v1}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
:cond_1
:goto_0
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 712
iget-object v0, v0, Landroidx/media3/datasource/cache/CachedContent;->key:Ljava/lang/String;
invoke-virtual {v1, v0}, Landroidx/media3/datasource/cache/CachedContentIndex;->maybeRemove(Ljava/lang/String;)V
.line 713
invoke-direct {p0, p1}, Landroidx/media3/datasource/cache/SimpleCache;->notifySpanRemoved(Landroidx/media3/datasource/cache/CacheSpan;)V
:cond_2
:goto_1
return-void
.end method
.method private removeStaleSpans()V
.locals 8
.line 721
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 722
invoke-virtual {v1}, Landroidx/media3/datasource/cache/CachedContentIndex;->getAll()Ljava/util/Collection;
move-result-object v1
invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_0
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_2
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/media3/datasource/cache/CachedContent;
.line 723
invoke-virtual {v2}, Landroidx/media3/datasource/cache/CachedContent;->getSpans()Ljava/util/TreeSet;
move-result-object v2
invoke-virtual {v2}, Ljava/util/TreeSet;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_1
:goto_0
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_0
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Landroidx/media3/datasource/cache/CacheSpan;
.line 724
iget-object v4, v3, Landroidx/media3/datasource/cache/CacheSpan;->file:Ljava/io/File;
invoke-virtual {v4}, Ljava/io/File;->length()J
move-result-wide v4
iget-wide v6, v3, Landroidx/media3/datasource/cache/CacheSpan;->length:J
cmp-long v4, v4, v6
if-eqz v4, :cond_1
.line 725
invoke-virtual {v0, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_0
:cond_2
const/4 v1, 0x0
.line 729
:goto_1
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v2
if-ge v1, v2, :cond_3
.line 730
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/media3/datasource/cache/CacheSpan;
invoke-direct {p0, v2}, Landroidx/media3/datasource/cache/SimpleCache;->removeSpanInternal(Landroidx/media3/datasource/cache/CacheSpan;)V
add-int/lit8 v1, v1, 0x1
goto :goto_1
:cond_3
return-void
.end method
.method private touchSpan(Ljava/lang/String;Landroidx/media3/datasource/cache/SimpleCacheSpan;)Landroidx/media3/datasource/cache/SimpleCacheSpan;
.locals 9
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->touchCacheSpans:Z
if-nez v0, :cond_0
return-object p2
.line 638
:cond_0
iget-object v0, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->file:Ljava/io/File;
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/io/File;
invoke-virtual {v0}, Ljava/io/File;->getName()Ljava/lang/String;
move-result-object v2
.line 639
iget-wide v3, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->length:J
.line 640
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v7
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
if-eqz v1, :cond_1
move-wide v5, v7
.line 644
:try_start_0
invoke-virtual/range {v1 .. v6}, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;->set(Ljava/lang/String;JJ)V
:try_end_0
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
const-string v0, "SimpleCache"
const-string v1, "Failed to update index with new touch timestamp."
.line 646
invoke-static {v0, v1}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
:goto_0
const/4 v0, 0x0
goto :goto_1
:cond_1
const/4 v0, 0x1
:goto_1
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 654
invoke-virtual {v1, p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object p1
invoke-virtual {p1, p2, v7, v8, v0}, Landroidx/media3/datasource/cache/CachedContent;->setLastTouchTimestamp(Landroidx/media3/datasource/cache/SimpleCacheSpan;JZ)Landroidx/media3/datasource/cache/SimpleCacheSpan;
move-result-object p1
.line 655
invoke-direct {p0, p2, p1}, Landroidx/media3/datasource/cache/SimpleCache;->notifySpanTouched(Landroidx/media3/datasource/cache/SimpleCacheSpan;Landroidx/media3/datasource/cache/CacheSpan;)V
return-object p1
.end method
.method private static declared-synchronized unlockFolder(Ljava/io/File;)V
.locals 2
const-class v0, Landroidx/media3/datasource/cache/SimpleCache;
monitor-enter v0
:try_start_0
sget-object v1, Landroidx/media3/datasource/cache/SimpleCache;->lockedCacheDirs:Ljava/util/HashSet;
.line 819
invoke-virtual {p0}, Ljava/io/File;->getAbsoluteFile()Ljava/io/File;
move-result-object p0
invoke-virtual {v1, p0}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 820
monitor-exit v0
return-void
:catchall_0
move-exception p0
monitor-exit v0
throw p0
.end method
# virtual methods
.method public declared-synchronized addListener(Ljava/lang/String;Landroidx/media3/datasource/cache/Cache$Listener;)Ljava/util/NavigableSet;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Landroidx/media3/datasource/cache/Cache$Listener;",
")",
"Ljava/util/NavigableSet<",
"Landroidx/media3/datasource/cache/CacheSpan;",
">;"
}
.end annotation
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 277
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 278
invoke-static {p1}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 279
invoke-static {p2}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 280
invoke-virtual {v0, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/ArrayList;
if-nez v0, :cond_0
.line 282
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 283
invoke-virtual {v1, p1, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 285
:cond_0
invoke-virtual {v0, p2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 286
invoke-virtual {p0, p1}, Landroidx/media3/datasource/cache/SimpleCache;->getCachedSpans(Ljava/lang/String;)Ljava/util/NavigableSet;
move-result-object p1
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
monitor-exit p0
return-object p1
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized applyContentMetadataMutations(Ljava/lang/String;Landroidx/media3/datasource/cache/ContentMetadataMutations;)V
.locals 1
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/datasource/cache/Cache$CacheException;
}
.end annotation
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 499
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 500
invoke-virtual {p0}, Landroidx/media3/datasource/cache/SimpleCache;->checkInitialization()V
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 502
invoke-virtual {v0, p1, p2}, Landroidx/media3/datasource/cache/CachedContentIndex;->applyContentMetadataMutations(Ljava/lang/String;Landroidx/media3/datasource/cache/ContentMetadataMutations;)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
:try_start_1
iget-object p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 504
invoke-virtual {p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->store()V
:try_end_1
.catch Ljava/io/IOException; {:try_start_1 .. :try_end_1} :catch_0
.catchall {:try_start_1 .. :try_end_1} :catchall_0
.line 508
monitor-exit p0
return-void
:catch_0
move-exception p1
.line 506
:try_start_2
new-instance p2, Landroidx/media3/datasource/cache/Cache$CacheException;
invoke-direct {p2, p1}, Landroidx/media3/datasource/cache/Cache$CacheException;-><init>(Ljava/lang/Throwable;)V
throw p2
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_0
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized checkInitialization()V
.locals 1
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/datasource/cache/Cache$CacheException;
}
.end annotation
monitor-enter p0
:try_start_0
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->initializationException:Landroidx/media3/datasource/cache/Cache$CacheException;
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
if-nez v0, :cond_0
.line 251
monitor-exit p0
return-void
.line 249
:cond_0
:try_start_1
throw v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
:catchall_0
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized commitFile(Ljava/io/File;J)V
.locals 9
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/datasource/cache/Cache$CacheException;
}
.end annotation
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
const/4 v1, 0x1
const/4 v2, 0x0
xor-int/2addr v0, v1
.line 396
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 397
invoke-virtual {p1}, Ljava/io/File;->exists()Z
move-result v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
if-nez v0, :cond_0
.line 398
monitor-exit p0
return-void
:cond_0
const-wide/16 v3, 0x0
cmp-long v0, p2, v3
if-nez v0, :cond_1
.line 401
:try_start_1
invoke-virtual {p1}, Ljava/io/File;->delete()Z
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
.line 402
monitor-exit p0
return-void
:cond_1
:try_start_2
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 406
invoke-static {p1, p2, p3, v0}, Landroidx/media3/datasource/cache/SimpleCacheSpan;->createCacheEntry(Ljava/io/File;JLandroidx/media3/datasource/cache/CachedContentIndex;)Landroidx/media3/datasource/cache/SimpleCacheSpan;
move-result-object p2
invoke-static {p2}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p2
check-cast p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;
iget-object p3, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 407
iget-object v0, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->key:Ljava/lang/String;
invoke-virtual {p3, v0}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object p3
invoke-static {p3}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p3
check-cast p3, Landroidx/media3/datasource/cache/CachedContent;
.line 408
iget-wide v3, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->position:J
iget-wide v5, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->length:J
invoke-virtual {p3, v3, v4, v5, v6}, Landroidx/media3/datasource/cache/CachedContent;->isFullyLocked(JJ)Z
move-result v0
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 411
invoke-virtual {p3}, Landroidx/media3/datasource/cache/CachedContent;->getMetadata()Landroidx/media3/datasource/cache/DefaultContentMetadata;
move-result-object p3
invoke-static {p3}, Landroidx/media3/datasource/cache/ContentMetadata;->getContentLength(Landroidx/media3/datasource/cache/ContentMetadata;)J
move-result-wide v3
const-wide/16 v5, -0x1
cmp-long p3, v3, v5
if-eqz p3, :cond_3
.line 413
iget-wide v5, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->position:J
iget-wide v7, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->length:J
add-long/2addr v5, v7
cmp-long p3, v5, v3
if-gtz p3, :cond_2
goto :goto_0
:cond_2
move v1, v2
:goto_0
invoke-static {v1}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
:cond_3
iget-object p3, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
if-eqz p3, :cond_4
.line 417
invoke-virtual {p1}, Ljava/io/File;->getName()Ljava/lang/String;
move-result-object v1
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_0
:try_start_3
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->fileIndex:Landroidx/media3/datasource/cache/CacheFileMetadataIndex;
.line 419
iget-wide v2, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->length:J
iget-wide v4, p2, Landroidx/media3/datasource/cache/SimpleCacheSpan;->lastTouchTimestamp:J
invoke-virtual/range {v0 .. v5}, Landroidx/media3/datasource/cache/CacheFileMetadataIndex;->set(Ljava/lang/String;JJ)V
:try_end_3
.catch Ljava/io/IOException; {:try_start_3 .. :try_end_3} :catch_0
.catchall {:try_start_3 .. :try_end_3} :catchall_0
goto :goto_1
:catch_0
move-exception p1
.line 421
:try_start_4
new-instance p2, Landroidx/media3/datasource/cache/Cache$CacheException;
invoke-direct {p2, p1}, Landroidx/media3/datasource/cache/Cache$CacheException;-><init>(Ljava/lang/Throwable;)V
throw p2
.line 424
:cond_4
:goto_1
invoke-direct {p0, p2}, Landroidx/media3/datasource/cache/SimpleCache;->addSpan(Landroidx/media3/datasource/cache/SimpleCacheSpan;)V
:try_end_4
.catchall {:try_start_4 .. :try_end_4} :catchall_0
:try_start_5
iget-object p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 426
invoke-virtual {p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->store()V
:try_end_5
.catch Ljava/io/IOException; {:try_start_5 .. :try_end_5} :catch_1
.catchall {:try_start_5 .. :try_end_5} :catchall_0
.line 430
:try_start_6
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
:try_end_6
.catchall {:try_start_6 .. :try_end_6} :catchall_0
.line 431
monitor-exit p0
return-void
:catch_1
move-exception p1
.line 428
:try_start_7
new-instance p2, Landroidx/media3/datasource/cache/Cache$CacheException;
invoke-direct {p2, p1}, Landroidx/media3/datasource/cache/Cache$CacheException;-><init>(Ljava/lang/Throwable;)V
throw p2
:try_end_7
.catchall {:try_start_7 .. :try_end_7} :catchall_0
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized getCacheSpace()J
.locals 2
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 320
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-wide v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->totalSpace:J
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 321
monitor-exit p0
return-wide v0
:catchall_0
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getCachedBytes(Ljava/lang/String;JJ)J
.locals 15
monitor-enter p0
const-wide/16 v0, -0x1
cmp-long v0, p4, v0
const-wide v1, 0x7fffffffffffffffL
if-nez v0, :cond_0
move-wide v3, v1
goto :goto_0
:cond_0
add-long v3, p2, p4
:goto_0
const-wide/16 v7, 0x0
cmp-long v0, v3, v7
if-gez v0, :cond_1
move-wide v9, v1
goto :goto_1
:cond_1
move-wide v9, v3
:goto_1
move-wide/from16 v11, p2
move-wide v13, v7
:goto_2
cmp-long v0, v11, v9
if-gez v0, :cond_3
sub-long v5, v9, v11
move-object v1, p0
move-object/from16 v2, p1
move-wide v3, v11
.line 484
:try_start_0
invoke-virtual/range {v1 .. v6}, Landroidx/media3/datasource/cache/SimpleCache;->getCachedLength(Ljava/lang/String;JJ)J
move-result-wide v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
cmp-long v2, v0, v7
if-lez v2, :cond_2
add-long/2addr v13, v0
goto :goto_3
:cond_2
neg-long v0, v0
:goto_3
add-long/2addr v11, v0
goto :goto_2
:catchall_0
move-exception v0
move-object v1, v0
monitor-exit p0
throw v1
.line 493
:cond_3
monitor-exit p0
return-wide v13
.end method
.method public declared-synchronized getCachedLength(Ljava/lang/String;JJ)J
.locals 2
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 465
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
const-wide/16 v0, -0x1
cmp-long v0, p4, v0
if-nez v0, :cond_0
const-wide p4, 0x7fffffffffffffffL
:cond_0
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 469
invoke-virtual {v0, p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object p1
if-eqz p1, :cond_1
.line 470
invoke-virtual {p1, p2, p3, p4, p5}, Landroidx/media3/datasource/cache/CachedContent;->getCachedBytesLength(JJ)J
move-result-wide p1
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
goto :goto_0
:cond_1
neg-long p1, p4
:goto_0
monitor-exit p0
return-wide p1
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized getCachedSpans(Ljava/lang/String;)Ljava/util/NavigableSet;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Ljava/util/NavigableSet<",
"Landroidx/media3/datasource/cache/CacheSpan;",
">;"
}
.end annotation
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 305
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 306
invoke-virtual {v0, p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object p1
if-eqz p1, :cond_1
.line 307
invoke-virtual {p1}, Landroidx/media3/datasource/cache/CachedContent;->isEmpty()Z
move-result v0
if-eqz v0, :cond_0
goto :goto_0
.line 309
:cond_0
new-instance v0, Ljava/util/TreeSet;
invoke-virtual {p1}, Landroidx/media3/datasource/cache/CachedContent;->getSpans()Ljava/util/TreeSet;
move-result-object p1
invoke-direct {v0, p1}, Ljava/util/TreeSet;-><init>(Ljava/util/Collection;)V
goto :goto_1
.line 308
:cond_1
:goto_0
new-instance v0, Ljava/util/TreeSet;
invoke-direct {v0}, Ljava/util/TreeSet;-><init>()V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 307
:goto_1
monitor-exit p0
return-object v0
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized getContentMetadata(Ljava/lang/String;)Landroidx/media3/datasource/cache/ContentMetadata;
.locals 1
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 512
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 513
invoke-virtual {v0, p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->getContentMetadata(Ljava/lang/String;)Landroidx/media3/datasource/cache/ContentMetadata;
move-result-object p1
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
monitor-exit p0
return-object p1
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized getKeys()Ljava/util/Set;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Set<",
"Ljava/lang/String;",
">;"
}
.end annotation
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 314
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 315
new-instance v0, Ljava/util/HashSet;
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
invoke-virtual {v1}, Landroidx/media3/datasource/cache/CachedContentIndex;->getKeys()Ljava/util/Set;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/HashSet;-><init>(Ljava/util/Collection;)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
monitor-exit p0
return-object v0
:catchall_0
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getUid()J
.locals 2
monitor-enter p0
:try_start_0
iget-wide v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->uid:J
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 255
monitor-exit p0
return-wide v0
:catchall_0
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized isCached(Ljava/lang/String;JJ)Z
.locals 3
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
const/4 v1, 0x1
const/4 v2, 0x0
xor-int/2addr v0, v1
.line 458
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 459
invoke-virtual {v0, p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object p1
if-eqz p1, :cond_0
.line 460
invoke-virtual {p1, p2, p3, p4, p5}, Landroidx/media3/datasource/cache/CachedContent;->getCachedBytesLength(JJ)J
move-result-wide p1
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
cmp-long p1, p1, p4
if-ltz p1, :cond_0
goto :goto_0
:cond_0
move v1, v2
:goto_0
monitor-exit p0
return v1
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized release()V
.locals 4
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_1
if-eqz v0, :cond_0
.line 261
monitor-exit p0
return-void
:cond_0
:try_start_1
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 263
invoke-virtual {v0}, Ljava/util/HashMap;->clear()V
.line 264
invoke-direct {p0}, Landroidx/media3/datasource/cache/SimpleCache;->removeStaleSpans()V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_1
const/4 v0, 0x1
:try_start_2
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 266
invoke-virtual {v1}, Landroidx/media3/datasource/cache/CachedContentIndex;->store()V
:try_end_2
.catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_0
.catchall {:try_start_2 .. :try_end_2} :catchall_0
:try_start_3
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 270
invoke-static {v1}, Landroidx/media3/datasource/cache/SimpleCache;->unlockFolder(Ljava/io/File;)V
:goto_0
iput-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
:try_end_3
.catchall {:try_start_3 .. :try_end_3} :catchall_1
goto :goto_1
:catchall_0
move-exception v1
goto :goto_2
:catch_0
move-exception v1
:try_start_4
const-string v2, "SimpleCache"
const-string v3, "Storing index file failed"
.line 268
invoke-static {v2, v3, v1}, Landroidx/media3/common/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_4
.catchall {:try_start_4 .. :try_end_4} :catchall_0
:try_start_5
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 270
invoke-static {v1}, Landroidx/media3/datasource/cache/SimpleCache;->unlockFolder(Ljava/io/File;)V
:try_end_5
.catchall {:try_start_5 .. :try_end_5} :catchall_1
goto :goto_0
.line 273
:goto_1
monitor-exit p0
return-void
:goto_2
:try_start_6
iget-object v2, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 270
invoke-static {v2}, Landroidx/media3/datasource/cache/SimpleCache;->unlockFolder(Ljava/io/File;)V
iput-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
.line 272
throw v1
:try_end_6
.catchall {:try_start_6 .. :try_end_6} :catchall_1
:catchall_1
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized releaseHoleSpan(Landroidx/media3/datasource/cache/CacheSpan;)V
.locals 3
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 435
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 436
iget-object v1, p1, Landroidx/media3/datasource/cache/CacheSpan;->key:Ljava/lang/String;
invoke-virtual {v0, v1}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object v0
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/media3/datasource/cache/CachedContent;
.line 437
iget-wide v1, p1, Landroidx/media3/datasource/cache/CacheSpan;->position:J
invoke-virtual {v0, v1, v2}, Landroidx/media3/datasource/cache/CachedContent;->unlockRange(J)V
iget-object p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 438
iget-object v0, v0, Landroidx/media3/datasource/cache/CachedContent;->key:Ljava/lang/String;
invoke-virtual {p1, v0}, Landroidx/media3/datasource/cache/CachedContentIndex;->maybeRemove(Ljava/lang/String;)V
.line 439
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 440
monitor-exit p0
return-void
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized removeListener(Ljava/lang/String;Landroidx/media3/datasource/cache/Cache$Listener;)V
.locals 1
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
if-eqz v0, :cond_0
.line 292
monitor-exit p0
return-void
:cond_0
:try_start_1
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 294
invoke-virtual {v0, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/ArrayList;
if-eqz v0, :cond_1
.line 296
invoke-virtual {v0, p2}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
.line 297
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result p2
if-eqz p2, :cond_1
iget-object p2, p0, Landroidx/media3/datasource/cache/SimpleCache;->listeners:Ljava/util/HashMap;
.line 298
invoke-virtual {p2, p1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
.line 301
:cond_1
monitor-exit p0
return-void
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized removeResource(Ljava/lang/String;)V
.locals 1
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 444
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 445
invoke-virtual {p0, p1}, Landroidx/media3/datasource/cache/SimpleCache;->getCachedSpans(Ljava/lang/String;)Ljava/util/NavigableSet;
move-result-object p1
invoke-interface {p1}, Ljava/util/NavigableSet;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_0
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_0
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/media3/datasource/cache/CacheSpan;
.line 446
invoke-direct {p0, v0}, Landroidx/media3/datasource/cache/SimpleCache;->removeSpanInternal(Landroidx/media3/datasource/cache/CacheSpan;)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
goto :goto_0
.line 448
:cond_0
monitor-exit p0
return-void
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized removeSpan(Landroidx/media3/datasource/cache/CacheSpan;)V
.locals 1
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 452
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 453
invoke-direct {p0, p1}, Landroidx/media3/datasource/cache/SimpleCache;->removeSpanInternal(Landroidx/media3/datasource/cache/CacheSpan;)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 454
monitor-exit p0
return-void
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized startFile(Ljava/lang/String;JJ)Ljava/io/File;
.locals 8
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/datasource/cache/Cache$CacheException;
}
.end annotation
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 371
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 372
invoke-virtual {p0}, Landroidx/media3/datasource/cache/SimpleCache;->checkInitialization()V
iget-object v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 374
invoke-virtual {v0, p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->get(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object v0
.line 375
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 376
invoke-virtual {v0, p2, p3, p4, p5}, Landroidx/media3/datasource/cache/CachedContent;->isFullyLocked(JJ)Z
move-result v1
invoke-static {v1}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 377
invoke-virtual {v1}, Ljava/io/File;->exists()Z
move-result v1
if-nez v1, :cond_0
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
.line 380
invoke-static {v1}, Landroidx/media3/datasource/cache/SimpleCache;->createCacheDirectories(Ljava/io/File;)V
.line 381
invoke-direct {p0}, Landroidx/media3/datasource/cache/SimpleCache;->removeStaleSpans()V
:cond_0
iget-object v1, p0, Landroidx/media3/datasource/cache/SimpleCache;->evictor:Landroidx/media3/datasource/cache/CacheEvictor;
move-object v2, p0
move-object v3, p1
move-wide v4, p2
move-wide v6, p4
.line 383
invoke-interface/range {v1 .. v7}, Landroidx/media3/datasource/cache/CacheEvictor;->onStartFile(Landroidx/media3/datasource/cache/Cache;Ljava/lang/String;JJ)V
.line 385
new-instance v2, Ljava/io/File;
iget-object p1, p0, Landroidx/media3/datasource/cache/SimpleCache;->cacheDir:Ljava/io/File;
iget-object p4, p0, Landroidx/media3/datasource/cache/SimpleCache;->random:Ljava/util/Random;
const/16 p5, 0xa
invoke-virtual {p4, p5}, Ljava/util/Random;->nextInt(I)I
move-result p4
invoke-static {p4}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
move-result-object p4
invoke-direct {v2, p1, p4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 386
invoke-virtual {v2}, Ljava/io/File;->exists()Z
move-result p1
if-nez p1, :cond_1
.line 387
invoke-static {v2}, Landroidx/media3/datasource/cache/SimpleCache;->createCacheDirectories(Ljava/io/File;)V
.line 389
:cond_1
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v6
.line 390
iget v3, v0, Landroidx/media3/datasource/cache/CachedContent;->id:I
move-wide v4, p2
invoke-static/range {v2 .. v7}, Landroidx/media3/datasource/cache/SimpleCacheSpan;->getCacheFile(Ljava/io/File;IJJ)Ljava/io/File;
move-result-object p1
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
monitor-exit p0
return-object p1
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized startReadWrite(Ljava/lang/String;JJ)Landroidx/media3/datasource/cache/CacheSpan;
.locals 1
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/InterruptedException;,
Landroidx/media3/datasource/cache/Cache$CacheException;
}
.end annotation
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 327
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 328
invoke-virtual {p0}, Landroidx/media3/datasource/cache/SimpleCache;->checkInitialization()V
.line 331
:goto_0
invoke-virtual/range {p0 .. p5}, Landroidx/media3/datasource/cache/SimpleCache;->startReadWriteNonBlocking(Ljava/lang/String;JJ)Landroidx/media3/datasource/cache/CacheSpan;
move-result-object v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
if-eqz v0, :cond_0
.line 333
monitor-exit p0
return-object v0
.line 340
:cond_0
:try_start_1
invoke-virtual {p0}, Ljava/lang/Object;->wait()V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
goto :goto_0
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized startReadWriteNonBlocking(Ljava/lang/String;JJ)Landroidx/media3/datasource/cache/CacheSpan;
.locals 2
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/datasource/cache/Cache$CacheException;
}
.end annotation
monitor-enter p0
:try_start_0
iget-boolean v0, p0, Landroidx/media3/datasource/cache/SimpleCache;->released:Z
xor-int/lit8 v0, v0, 0x1
.line 349
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 350
invoke-virtual {p0}, Landroidx/media3/datasource/cache/SimpleCache;->checkInitialization()V
.line 352
invoke-direct/range {p0 .. p5}, Landroidx/media3/datasource/cache/SimpleCache;->getSpan(Ljava/lang/String;JJ)Landroidx/media3/datasource/cache/SimpleCacheSpan;
move-result-object p4
.line 354
iget-boolean p5, p4, Landroidx/media3/datasource/cache/SimpleCacheSpan;->isCached:Z
if-eqz p5, :cond_0
.line 356
invoke-direct {p0, p1, p4}, Landroidx/media3/datasource/cache/SimpleCache;->touchSpan(Ljava/lang/String;Landroidx/media3/datasource/cache/SimpleCacheSpan;)Landroidx/media3/datasource/cache/SimpleCacheSpan;
move-result-object p1
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
monitor-exit p0
return-object p1
:cond_0
:try_start_1
iget-object p5, p0, Landroidx/media3/datasource/cache/SimpleCache;->contentIndex:Landroidx/media3/datasource/cache/CachedContentIndex;
.line 359
invoke-virtual {p5, p1}, Landroidx/media3/datasource/cache/CachedContentIndex;->getOrAdd(Ljava/lang/String;)Landroidx/media3/datasource/cache/CachedContent;
move-result-object p1
.line 360
iget-wide v0, p4, Landroidx/media3/datasource/cache/SimpleCacheSpan;->length:J
invoke-virtual {p1, p2, p3, v0, v1}, Landroidx/media3/datasource/cache/CachedContent;->lockRange(JJ)Z
move-result p1
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
if-eqz p1, :cond_1
.line 362
monitor-exit p0
return-object p4
.line 366
:cond_1
monitor-exit p0
const/4 p0, 0x0
return-object p0
:catchall_0
move-exception p1
monitor-exit p0
throw p1
.end method