discord-jadx/app/src/main/java/androidx/room/RoomTrackingLiveData.java

125 lines
5.0 KiB
Java

package androidx.room;
import android.annotation.SuppressLint;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.WorkerThread;
import androidx.arch.core.executor.ArchTaskExecutor;
import androidx.lifecycle.LiveData;
import androidx.room.InvalidationTracker;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
public class RoomTrackingLiveData<T> extends LiveData<T> {
public final Callable<T> mComputeFunction;
public final AtomicBoolean mComputing = new AtomicBoolean(false);
private final InvalidationLiveDataContainer mContainer;
public final RoomDatabase mDatabase;
public final boolean mInTransaction;
public final AtomicBoolean mInvalid = new AtomicBoolean(true);
public final Runnable mInvalidationRunnable = new AnonymousClass2();
public final InvalidationTracker.Observer mObserver;
public final Runnable mRefreshRunnable = new AnonymousClass1();
public final AtomicBoolean mRegisteredObserver = new AtomicBoolean(false);
/* renamed from: androidx.room.RoomTrackingLiveData$1 reason: invalid class name */
public class AnonymousClass1 implements Runnable {
public AnonymousClass1() {
}
@Override // java.lang.Runnable
@WorkerThread
public void run() {
boolean z2;
boolean z3 = false;
if (RoomTrackingLiveData.this.mRegisteredObserver.compareAndSet(false, true)) {
RoomTrackingLiveData.this.mDatabase.getInvalidationTracker().addWeakObserver(RoomTrackingLiveData.this.mObserver);
}
do {
if (RoomTrackingLiveData.this.mComputing.compareAndSet(false, true)) {
T t = null;
z2 = false;
while (RoomTrackingLiveData.this.mInvalid.compareAndSet(true, false)) {
try {
try {
t = RoomTrackingLiveData.this.mComputeFunction.call();
z2 = true;
} catch (Exception e) {
throw new RuntimeException("Exception while computing database live data.", e);
}
} finally {
RoomTrackingLiveData.this.mComputing.set(z3);
}
}
if (z2) {
RoomTrackingLiveData.access$000(RoomTrackingLiveData.this, t);
}
} else {
z2 = false;
}
if (!z2) {
return;
}
} while (RoomTrackingLiveData.this.mInvalid.get());
}
}
/* renamed from: androidx.room.RoomTrackingLiveData$2 reason: invalid class name */
public class AnonymousClass2 implements Runnable {
public AnonymousClass2() {
}
@Override // java.lang.Runnable
@MainThread
public void run() {
boolean hasActiveObservers = RoomTrackingLiveData.this.hasActiveObservers();
if (RoomTrackingLiveData.this.mInvalid.compareAndSet(false, true) && hasActiveObservers) {
RoomTrackingLiveData.this.getQueryExecutor().execute(RoomTrackingLiveData.this.mRefreshRunnable);
}
}
}
/* renamed from: androidx.room.RoomTrackingLiveData$3 reason: invalid class name */
public class AnonymousClass3 extends InvalidationTracker.Observer {
public AnonymousClass3(String[] strArr) {
super(strArr);
}
@Override // androidx.room.InvalidationTracker.Observer
public void onInvalidated(@NonNull Set<String> set) {
ArchTaskExecutor.getInstance().executeOnMainThread(RoomTrackingLiveData.this.mInvalidationRunnable);
}
}
@SuppressLint({"RestrictedApi"})
public RoomTrackingLiveData(RoomDatabase roomDatabase, InvalidationLiveDataContainer invalidationLiveDataContainer, boolean z2, Callable<T> callable, String[] strArr) {
this.mDatabase = roomDatabase;
this.mInTransaction = z2;
this.mComputeFunction = callable;
this.mContainer = invalidationLiveDataContainer;
this.mObserver = new AnonymousClass3(strArr);
}
public static /* synthetic */ void access$000(RoomTrackingLiveData roomTrackingLiveData, Object obj) {
roomTrackingLiveData.postValue(obj);
}
public Executor getQueryExecutor() {
return this.mInTransaction ? this.mDatabase.getTransactionExecutor() : this.mDatabase.getQueryExecutor();
}
@Override // androidx.lifecycle.LiveData
public void onActive() {
super.onActive();
this.mContainer.onActive(this);
getQueryExecutor().execute(this.mRefreshRunnable);
}
@Override // androidx.lifecycle.LiveData
public void onInactive() {
super.onInactive();
this.mContainer.onInactive(this);
}
}