564 lines
18 KiB
Java
564 lines
18 KiB
Java
package c.i.a.c.h2.y;
|
|
|
|
import android.database.SQLException;
|
|
import android.os.ConditionVariable;
|
|
import android.util.Log;
|
|
import androidx.annotation.Nullable;
|
|
import c.i.a.c.h2.y.i;
|
|
import c.i.a.c.i2.p;
|
|
import c.i.a.c.w1.a;
|
|
import c.i.b.b.z;
|
|
import com.airbnb.lottie.parser.AnimatableValueParser;
|
|
import com.google.android.exoplayer2.database.DatabaseIOException;
|
|
import com.google.android.exoplayer2.upstream.cache.Cache;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.security.SecureRandom;
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
import java.util.Objects;
|
|
import java.util.Random;
|
|
/* compiled from: SimpleCache */
|
|
public final class q implements Cache {
|
|
public static final HashSet<File> a = new HashSet<>();
|
|
public final File b;
|
|
|
|
/* renamed from: c reason: collision with root package name */
|
|
public final d f910c;
|
|
public final j d;
|
|
@Nullable
|
|
public final f e;
|
|
public final HashMap<String, ArrayList<Cache.a>> f;
|
|
public final Random g;
|
|
public final boolean h;
|
|
public long i;
|
|
public long j;
|
|
public Cache.CacheException k;
|
|
|
|
public q(File file, d dVar, a aVar) {
|
|
boolean add;
|
|
j jVar = new j(aVar, file, null, false, false);
|
|
f fVar = new f(aVar);
|
|
synchronized (q.class) {
|
|
add = a.add(file.getAbsoluteFile());
|
|
}
|
|
if (add) {
|
|
this.b = file;
|
|
this.f910c = dVar;
|
|
this.d = jVar;
|
|
this.e = fVar;
|
|
this.f = new HashMap<>();
|
|
this.g = new Random();
|
|
this.h = true;
|
|
this.i = -1;
|
|
ConditionVariable conditionVariable = new ConditionVariable();
|
|
new p(this, "ExoPlayer:SimpleCacheInit", conditionVariable).start();
|
|
conditionVariable.block();
|
|
return;
|
|
}
|
|
throw new IllegalStateException("Another SimpleCache instance uses the folder: " + file);
|
|
}
|
|
|
|
public static void j(q qVar) {
|
|
long j;
|
|
if (!qVar.b.exists()) {
|
|
try {
|
|
m(qVar.b);
|
|
} catch (Cache.CacheException e) {
|
|
qVar.k = e;
|
|
return;
|
|
}
|
|
}
|
|
File[] listFiles = qVar.b.listFiles();
|
|
if (listFiles == null) {
|
|
StringBuilder P = c.d.b.a.a.P("Failed to list cache directory files: ");
|
|
P.append(qVar.b);
|
|
String sb = P.toString();
|
|
Log.e("SimpleCache", sb);
|
|
qVar.k = new Cache.CacheException(sb);
|
|
return;
|
|
}
|
|
int length = listFiles.length;
|
|
int i = 0;
|
|
while (true) {
|
|
if (i >= length) {
|
|
j = -1;
|
|
break;
|
|
}
|
|
File file = listFiles[i];
|
|
String name = file.getName();
|
|
if (name.endsWith(".uid")) {
|
|
try {
|
|
j = Long.parseLong(name.substring(0, name.indexOf(46)), 16);
|
|
break;
|
|
} catch (NumberFormatException unused) {
|
|
Log.e("SimpleCache", "Malformed UID file: " + file);
|
|
file.delete();
|
|
}
|
|
} else {
|
|
i++;
|
|
}
|
|
}
|
|
qVar.i = j;
|
|
if (j == -1) {
|
|
try {
|
|
qVar.i = n(qVar.b);
|
|
} catch (IOException e2) {
|
|
StringBuilder P2 = c.d.b.a.a.P("Failed to create cache UID: ");
|
|
P2.append(qVar.b);
|
|
String sb2 = P2.toString();
|
|
p.b("SimpleCache", sb2, e2);
|
|
qVar.k = new Cache.CacheException(sb2, e2);
|
|
return;
|
|
}
|
|
}
|
|
try {
|
|
qVar.d.e(qVar.i);
|
|
f fVar = qVar.e;
|
|
if (fVar != null) {
|
|
fVar.b(qVar.i);
|
|
Map<String, e> a2 = qVar.e.a();
|
|
qVar.p(qVar.b, true, listFiles, a2);
|
|
qVar.e.c(((HashMap) a2).keySet());
|
|
} else {
|
|
qVar.p(qVar.b, true, listFiles, null);
|
|
}
|
|
j jVar = qVar.d;
|
|
Iterator j2 = z.m(jVar.a.keySet()).iterator();
|
|
while (j2.hasNext()) {
|
|
jVar.f((String) j2.next());
|
|
}
|
|
try {
|
|
qVar.d.g();
|
|
} catch (IOException e3) {
|
|
p.b("SimpleCache", "Storing index file failed", e3);
|
|
}
|
|
} catch (IOException e4) {
|
|
StringBuilder P3 = c.d.b.a.a.P("Failed to initialize cache indices: ");
|
|
P3.append(qVar.b);
|
|
String sb3 = P3.toString();
|
|
p.b("SimpleCache", sb3, e4);
|
|
qVar.k = new Cache.CacheException(sb3, e4);
|
|
}
|
|
}
|
|
|
|
public static void m(File file) throws Cache.CacheException {
|
|
if (!file.mkdirs() && !file.isDirectory()) {
|
|
String str = "Failed to create cache directory: " + file;
|
|
Log.e("SimpleCache", str);
|
|
throw new Cache.CacheException(str);
|
|
}
|
|
}
|
|
|
|
public static long n(File file) throws IOException {
|
|
long nextLong = new SecureRandom().nextLong();
|
|
long abs = nextLong == Long.MIN_VALUE ? 0 : Math.abs(nextLong);
|
|
File file2 = new File(file, c.d.b.a.a.u(Long.toString(abs, 16), ".uid"));
|
|
if (file2.createNewFile()) {
|
|
return abs;
|
|
}
|
|
throw new IOException("Failed to create UID file: " + file2);
|
|
}
|
|
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
public synchronized File a(String str, long j, long j2) throws Cache.CacheException {
|
|
i iVar;
|
|
File file;
|
|
AnimatableValueParser.D(true);
|
|
l();
|
|
iVar = this.d.a.get(str);
|
|
Objects.requireNonNull(iVar);
|
|
AnimatableValueParser.D(iVar.a(j, j2));
|
|
if (!this.b.exists()) {
|
|
m(this.b);
|
|
r();
|
|
}
|
|
this.f910c.a(this, str, j, j2);
|
|
file = new File(this.b, Integer.toString(this.g.nextInt(10)));
|
|
if (!file.exists()) {
|
|
m(file);
|
|
}
|
|
return r.h(file, iVar.a, j, System.currentTimeMillis());
|
|
}
|
|
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
public synchronized l b(String str) {
|
|
i iVar;
|
|
AnimatableValueParser.D(true);
|
|
iVar = this.d.a.get(str);
|
|
return iVar != null ? iVar.e : n.a;
|
|
}
|
|
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
public synchronized void c(String str, m mVar) throws Cache.CacheException {
|
|
AnimatableValueParser.D(true);
|
|
l();
|
|
j jVar = this.d;
|
|
i d = jVar.d(str);
|
|
n nVar = d.e;
|
|
n a2 = nVar.a(mVar);
|
|
d.e = a2;
|
|
if (!a2.equals(nVar)) {
|
|
jVar.e.c(d);
|
|
}
|
|
try {
|
|
this.d.g();
|
|
} catch (IOException e) {
|
|
throw new Cache.CacheException(e);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
public synchronized void d(h hVar) {
|
|
AnimatableValueParser.D(true);
|
|
q(hVar);
|
|
}
|
|
|
|
/* JADX WARNING: Code restructure failed: missing block: B:17:0x0049, code lost:
|
|
if ((r11 + r4) <= r18) goto L_0x0059;
|
|
*/
|
|
/* JADX WARNING: Code restructure failed: missing block: B:21:0x0056, code lost:
|
|
if ((r18 + r6) <= r11) goto L_0x0059;
|
|
*/
|
|
/* JADX WARNING: Removed duplicated region for block: B:26:0x0060 A[LOOP:0: B:10:0x0026->B:26:0x0060, LOOP_END] */
|
|
/* JADX WARNING: Removed duplicated region for block: B:38:0x005e A[SYNTHETIC] */
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
@Nullable
|
|
public synchronized h e(String str, long j, long j2) throws Cache.CacheException {
|
|
r rVar;
|
|
boolean z2;
|
|
boolean z3;
|
|
AnimatableValueParser.D(true);
|
|
l();
|
|
r o = o(str, j, j2);
|
|
if (o.l) {
|
|
return s(str, o);
|
|
}
|
|
i d = this.d.d(str);
|
|
long j3 = o.k;
|
|
int i = 0;
|
|
while (true) {
|
|
if (i >= d.d.size()) {
|
|
rVar = o;
|
|
d.d.add(new i.a(j, j3));
|
|
z2 = true;
|
|
break;
|
|
}
|
|
i.a aVar = d.d.get(i);
|
|
long j4 = aVar.a;
|
|
if (j4 <= j) {
|
|
rVar = o;
|
|
long j5 = aVar.b;
|
|
if (j5 != -1) {
|
|
}
|
|
z3 = true;
|
|
if (z3) {
|
|
z2 = false;
|
|
break;
|
|
}
|
|
i++;
|
|
o = rVar;
|
|
} else {
|
|
rVar = o;
|
|
if (j3 != -1) {
|
|
}
|
|
z3 = true;
|
|
if (z3) {
|
|
}
|
|
}
|
|
z3 = false;
|
|
if (z3) {
|
|
}
|
|
}
|
|
if (z2) {
|
|
return rVar;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
public synchronized h f(String str, long j, long j2) throws InterruptedException, Cache.CacheException {
|
|
h e;
|
|
AnimatableValueParser.D(true);
|
|
l();
|
|
while (true) {
|
|
e = e(str, j, j2);
|
|
if (e == null) {
|
|
wait();
|
|
}
|
|
}
|
|
return e;
|
|
}
|
|
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
public synchronized void g(File file, long j) throws Cache.CacheException {
|
|
boolean z2 = true;
|
|
AnimatableValueParser.D(true);
|
|
if (file.exists()) {
|
|
if (j == 0) {
|
|
file.delete();
|
|
return;
|
|
}
|
|
r g = r.g(file, j, -9223372036854775807L, this.d);
|
|
Objects.requireNonNull(g);
|
|
i c2 = this.d.c(g.i);
|
|
Objects.requireNonNull(c2);
|
|
AnimatableValueParser.D(c2.a(g.j, g.k));
|
|
long a2 = k.a(c2.e);
|
|
if (a2 != -1) {
|
|
if (g.j + g.k > a2) {
|
|
z2 = false;
|
|
}
|
|
AnimatableValueParser.D(z2);
|
|
}
|
|
if (this.e != null) {
|
|
try {
|
|
this.e.d(file.getName(), g.k, g.n);
|
|
} catch (IOException e) {
|
|
throw new Cache.CacheException(e);
|
|
}
|
|
}
|
|
k(g);
|
|
try {
|
|
this.d.g();
|
|
notifyAll();
|
|
} catch (IOException e2) {
|
|
throw new Cache.CacheException(e2);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
public synchronized long h() {
|
|
AnimatableValueParser.D(true);
|
|
return this.j;
|
|
}
|
|
|
|
@Override // com.google.android.exoplayer2.upstream.cache.Cache
|
|
public synchronized void i(h hVar) {
|
|
AnimatableValueParser.D(true);
|
|
i c2 = this.d.c(hVar.i);
|
|
Objects.requireNonNull(c2);
|
|
long j = hVar.j;
|
|
for (int i = 0; i < c2.d.size(); i++) {
|
|
if (c2.d.get(i).a == j) {
|
|
c2.d.remove(i);
|
|
this.d.f(c2.b);
|
|
notifyAll();
|
|
}
|
|
}
|
|
throw new IllegalStateException();
|
|
}
|
|
|
|
public final void k(r rVar) {
|
|
this.d.d(rVar.i).f905c.add(rVar);
|
|
this.j += rVar.k;
|
|
ArrayList<Cache.a> arrayList = this.f.get(rVar.i);
|
|
if (arrayList != null) {
|
|
int size = arrayList.size();
|
|
while (true) {
|
|
size--;
|
|
if (size < 0) {
|
|
break;
|
|
}
|
|
arrayList.get(size).d(this, rVar);
|
|
}
|
|
}
|
|
this.f910c.d(this, rVar);
|
|
}
|
|
|
|
public synchronized void l() throws Cache.CacheException {
|
|
Cache.CacheException cacheException = this.k;
|
|
if (cacheException != null) {
|
|
throw cacheException;
|
|
}
|
|
}
|
|
|
|
public final r o(String str, long j, long j2) {
|
|
r floor;
|
|
long j3;
|
|
i iVar = this.d.a.get(str);
|
|
if (iVar == null) {
|
|
return new r(str, j, j2, -9223372036854775807L, null);
|
|
}
|
|
while (true) {
|
|
r rVar = new r(iVar.b, j, -1, -9223372036854775807L, null);
|
|
floor = iVar.f905c.floor(rVar);
|
|
if (floor == null || floor.j + floor.k <= j) {
|
|
r ceiling = iVar.f905c.ceiling(rVar);
|
|
if (ceiling != null) {
|
|
long j4 = ceiling.j - j;
|
|
if (j2 != -1) {
|
|
j4 = Math.min(j4, j2);
|
|
}
|
|
j3 = j4;
|
|
} else {
|
|
j3 = j2;
|
|
}
|
|
floor = new r(iVar.b, j, j3, -9223372036854775807L, null);
|
|
}
|
|
if (!floor.l || floor.m.length() == floor.k) {
|
|
break;
|
|
}
|
|
r();
|
|
}
|
|
return floor;
|
|
}
|
|
|
|
public final void p(File file, boolean z2, @Nullable File[] fileArr, @Nullable Map<String, e> map) {
|
|
if (fileArr != null && fileArr.length != 0) {
|
|
for (File file2 : fileArr) {
|
|
String name = file2.getName();
|
|
if (z2 && name.indexOf(46) == -1) {
|
|
p(file2, false, file2.listFiles(), map);
|
|
} else if (!z2 || (!name.startsWith("cached_content_index.exi") && !name.endsWith(".uid"))) {
|
|
long j = -1;
|
|
long j2 = -9223372036854775807L;
|
|
e remove = map != null ? map.remove(name) : null;
|
|
if (remove != null) {
|
|
j = remove.a;
|
|
j2 = remove.b;
|
|
}
|
|
r g = r.g(file2, j, j2, this.d);
|
|
if (g != null) {
|
|
k(g);
|
|
} else {
|
|
file2.delete();
|
|
}
|
|
}
|
|
}
|
|
} else if (!z2) {
|
|
file.delete();
|
|
}
|
|
}
|
|
|
|
public final void q(h hVar) {
|
|
boolean z2;
|
|
i c2 = this.d.c(hVar.i);
|
|
if (c2 != null) {
|
|
if (c2.f905c.remove(hVar)) {
|
|
File file = hVar.m;
|
|
if (file != null) {
|
|
file.delete();
|
|
}
|
|
z2 = true;
|
|
} else {
|
|
z2 = false;
|
|
}
|
|
if (z2) {
|
|
this.j -= hVar.k;
|
|
if (this.e != null) {
|
|
String name = hVar.m.getName();
|
|
try {
|
|
f fVar = this.e;
|
|
Objects.requireNonNull(fVar.f904c);
|
|
try {
|
|
fVar.b.getWritableDatabase().delete(fVar.f904c, "name = ?", new String[]{name});
|
|
} catch (SQLException e) {
|
|
throw new DatabaseIOException(e);
|
|
}
|
|
} catch (IOException unused) {
|
|
c.d.b.a.a.l0("Failed to remove file index entry for: ", name, "SimpleCache");
|
|
}
|
|
}
|
|
this.d.f(c2.b);
|
|
ArrayList<Cache.a> arrayList = this.f.get(hVar.i);
|
|
if (arrayList != null) {
|
|
int size = arrayList.size();
|
|
while (true) {
|
|
size--;
|
|
if (size < 0) {
|
|
break;
|
|
}
|
|
arrayList.get(size).b(this, hVar);
|
|
}
|
|
}
|
|
this.f910c.b(this, hVar);
|
|
}
|
|
}
|
|
}
|
|
|
|
public final void r() {
|
|
ArrayList arrayList = new ArrayList();
|
|
for (i iVar : Collections.unmodifiableCollection(this.d.a.values())) {
|
|
Iterator<r> it = iVar.f905c.iterator();
|
|
while (it.hasNext()) {
|
|
r next = it.next();
|
|
if (next.m.length() != next.k) {
|
|
arrayList.add(next);
|
|
}
|
|
}
|
|
}
|
|
for (int i = 0; i < arrayList.size(); i++) {
|
|
q((h) arrayList.get(i));
|
|
}
|
|
}
|
|
|
|
/* JADX WARNING: Removed duplicated region for block: B:20:0x00a0 */
|
|
public final r s(String str, r rVar) {
|
|
File file;
|
|
ArrayList<Cache.a> arrayList;
|
|
if (!this.h) {
|
|
return rVar;
|
|
}
|
|
File file2 = rVar.m;
|
|
Objects.requireNonNull(file2);
|
|
String name = file2.getName();
|
|
long j = rVar.k;
|
|
long currentTimeMillis = System.currentTimeMillis();
|
|
boolean z2 = false;
|
|
f fVar = this.e;
|
|
if (fVar != null) {
|
|
try {
|
|
fVar.d(name, j, currentTimeMillis);
|
|
} catch (IOException unused) {
|
|
Log.w("SimpleCache", "Failed to update index with new touch timestamp.");
|
|
}
|
|
} else {
|
|
z2 = true;
|
|
}
|
|
i iVar = this.d.a.get(str);
|
|
AnimatableValueParser.D(iVar.f905c.remove(rVar));
|
|
File file3 = rVar.m;
|
|
Objects.requireNonNull(file3);
|
|
if (z2) {
|
|
File parentFile = file3.getParentFile();
|
|
Objects.requireNonNull(parentFile);
|
|
File h = r.h(parentFile, iVar.a, rVar.j, currentTimeMillis);
|
|
if (file3.renameTo(h)) {
|
|
file = h;
|
|
AnimatableValueParser.D(rVar.l);
|
|
r rVar2 = new r(rVar.i, rVar.j, rVar.k, currentTimeMillis, file);
|
|
iVar.f905c.add(rVar2);
|
|
arrayList = this.f.get(rVar.i);
|
|
if (arrayList != null) {
|
|
int size = arrayList.size();
|
|
while (true) {
|
|
size--;
|
|
if (size < 0) {
|
|
break;
|
|
}
|
|
arrayList.get(size).c(this, rVar, rVar2);
|
|
}
|
|
}
|
|
this.f910c.c(this, rVar, rVar2);
|
|
return rVar2;
|
|
}
|
|
Log.w("CachedContent", "Failed to rename " + file3 + " to " + h);
|
|
}
|
|
file = file3;
|
|
AnimatableValueParser.D(rVar.l);
|
|
r rVar2 = new r(rVar.i, rVar.j, rVar.k, currentTimeMillis, file);
|
|
iVar.f905c.add(rVar2);
|
|
arrayList = this.f.get(rVar.i);
|
|
if (arrayList != null) {
|
|
}
|
|
this.f910c.c(this, rVar, rVar2);
|
|
return rVar2;
|
|
}
|
|
}
|