- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
198 lines
8.8 KiB
Java
198 lines
8.8 KiB
Java
package androidx.room;
|
|
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.ServiceConnection;
|
|
import android.os.IBinder;
|
|
import android.os.RemoteException;
|
|
import android.util.Log;
|
|
import androidx.room.IMultiInstanceInvalidationService;
|
|
import androidx.room.InvalidationTracker;
|
|
import java.util.Set;
|
|
import java.util.concurrent.Executor;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
import kotlin.jvm.internal.Intrinsics;
|
|
import kotlin.jvm.internal.SourceDebugExtension;
|
|
|
|
@SourceDebugExtension({"SMAP\nMultiInstanceInvalidationClient.kt\nKotlin\n*S Kotlin\n*F\n+ 1 MultiInstanceInvalidationClient.kt\nandroidx/room/MultiInstanceInvalidationClient\n+ 2 ArraysJVM.kt\nkotlin/collections/ArraysKt__ArraysJVMKt\n*L\n1#1,130:1\n37#2,2:131\n*S KotlinDebug\n*F\n+ 1 MultiInstanceInvalidationClient.kt\nandroidx/room/MultiInstanceInvalidationClient\n*L\n95#1:131,2\n*E\n"})
|
|
/* loaded from: classes.dex */
|
|
public final class MultiInstanceInvalidationClient {
|
|
private final Context appContext;
|
|
private final IMultiInstanceInvalidationCallback callback;
|
|
private int clientId;
|
|
private final Executor executor;
|
|
private final InvalidationTracker invalidationTracker;
|
|
private final String name;
|
|
public InvalidationTracker.Observer observer;
|
|
private final Runnable removeObserverRunnable;
|
|
private IMultiInstanceInvalidationService service;
|
|
private final ServiceConnection serviceConnection;
|
|
private final Runnable setUpRunnable;
|
|
private final AtomicBoolean stopped;
|
|
|
|
public final IMultiInstanceInvalidationCallback getCallback() {
|
|
return this.callback;
|
|
}
|
|
|
|
public final int getClientId() {
|
|
return this.clientId;
|
|
}
|
|
|
|
public final Executor getExecutor() {
|
|
return this.executor;
|
|
}
|
|
|
|
public final InvalidationTracker getInvalidationTracker() {
|
|
return this.invalidationTracker;
|
|
}
|
|
|
|
public final String getName() {
|
|
return this.name;
|
|
}
|
|
|
|
public final Runnable getRemoveObserverRunnable() {
|
|
return this.removeObserverRunnable;
|
|
}
|
|
|
|
public final IMultiInstanceInvalidationService getService() {
|
|
return this.service;
|
|
}
|
|
|
|
public final ServiceConnection getServiceConnection() {
|
|
return this.serviceConnection;
|
|
}
|
|
|
|
public final Runnable getSetUpRunnable() {
|
|
return this.setUpRunnable;
|
|
}
|
|
|
|
public final AtomicBoolean getStopped() {
|
|
return this.stopped;
|
|
}
|
|
|
|
public final void setClientId(int i) {
|
|
this.clientId = i;
|
|
}
|
|
|
|
public final void setObserver(InvalidationTracker.Observer observer) {
|
|
Intrinsics.checkNotNullParameter(observer, "<set-?>");
|
|
this.observer = observer;
|
|
}
|
|
|
|
public final void setService(IMultiInstanceInvalidationService iMultiInstanceInvalidationService) {
|
|
this.service = iMultiInstanceInvalidationService;
|
|
}
|
|
|
|
public MultiInstanceInvalidationClient(Context context, String name, Intent serviceIntent, InvalidationTracker invalidationTracker, Executor executor) {
|
|
Intrinsics.checkNotNullParameter(context, "context");
|
|
Intrinsics.checkNotNullParameter(name, "name");
|
|
Intrinsics.checkNotNullParameter(serviceIntent, "serviceIntent");
|
|
Intrinsics.checkNotNullParameter(invalidationTracker, "invalidationTracker");
|
|
Intrinsics.checkNotNullParameter(executor, "executor");
|
|
this.name = name;
|
|
this.invalidationTracker = invalidationTracker;
|
|
this.executor = executor;
|
|
Context applicationContext = context.getApplicationContext();
|
|
this.appContext = applicationContext;
|
|
this.callback = new MultiInstanceInvalidationClient$callback$1(this);
|
|
this.stopped = new AtomicBoolean(false);
|
|
ServiceConnection serviceConnection = new ServiceConnection() { // from class: androidx.room.MultiInstanceInvalidationClient$serviceConnection$1
|
|
@Override // android.content.ServiceConnection
|
|
public void onServiceConnected(ComponentName name2, IBinder service) {
|
|
Intrinsics.checkNotNullParameter(name2, "name");
|
|
Intrinsics.checkNotNullParameter(service, "service");
|
|
MultiInstanceInvalidationClient.this.setService(IMultiInstanceInvalidationService.Stub.asInterface(service));
|
|
MultiInstanceInvalidationClient.this.getExecutor().execute(MultiInstanceInvalidationClient.this.getSetUpRunnable());
|
|
}
|
|
|
|
@Override // android.content.ServiceConnection
|
|
public void onServiceDisconnected(ComponentName name2) {
|
|
Intrinsics.checkNotNullParameter(name2, "name");
|
|
MultiInstanceInvalidationClient.this.getExecutor().execute(MultiInstanceInvalidationClient.this.getRemoveObserverRunnable());
|
|
MultiInstanceInvalidationClient.this.setService(null);
|
|
}
|
|
};
|
|
this.serviceConnection = serviceConnection;
|
|
this.setUpRunnable = new Runnable() { // from class: androidx.room.MultiInstanceInvalidationClient$$ExternalSyntheticLambda0
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
MultiInstanceInvalidationClient.setUpRunnable$lambda$1(MultiInstanceInvalidationClient.this);
|
|
}
|
|
};
|
|
this.removeObserverRunnable = new Runnable() { // from class: androidx.room.MultiInstanceInvalidationClient$$ExternalSyntheticLambda1
|
|
@Override // java.lang.Runnable
|
|
public final void run() {
|
|
MultiInstanceInvalidationClient.removeObserverRunnable$lambda$2(MultiInstanceInvalidationClient.this);
|
|
}
|
|
};
|
|
setObserver(new InvalidationTracker.Observer((String[]) invalidationTracker.getTableIdLookup$room_runtime_release().keySet().toArray(new String[0])) { // from class: androidx.room.MultiInstanceInvalidationClient.1
|
|
@Override // androidx.room.InvalidationTracker.Observer
|
|
public boolean isRemote$room_runtime_release() {
|
|
return true;
|
|
}
|
|
|
|
@Override // androidx.room.InvalidationTracker.Observer
|
|
public void onInvalidated(Set<String> tables) {
|
|
Intrinsics.checkNotNullParameter(tables, "tables");
|
|
if (MultiInstanceInvalidationClient.this.getStopped().get()) {
|
|
return;
|
|
}
|
|
try {
|
|
IMultiInstanceInvalidationService service = MultiInstanceInvalidationClient.this.getService();
|
|
if (service != null) {
|
|
service.broadcastInvalidation(MultiInstanceInvalidationClient.this.getClientId(), (String[]) tables.toArray(new String[0]));
|
|
}
|
|
} catch (RemoteException e) {
|
|
Log.w(Room.LOG_TAG, "Cannot broadcast invalidation", e);
|
|
}
|
|
}
|
|
});
|
|
applicationContext.bindService(serviceIntent, serviceConnection, 1);
|
|
}
|
|
|
|
public final InvalidationTracker.Observer getObserver() {
|
|
InvalidationTracker.Observer observer = this.observer;
|
|
if (observer != null) {
|
|
return observer;
|
|
}
|
|
Intrinsics.throwUninitializedPropertyAccessException("observer");
|
|
return null;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static final void setUpRunnable$lambda$1(MultiInstanceInvalidationClient this$0) {
|
|
Intrinsics.checkNotNullParameter(this$0, "this$0");
|
|
try {
|
|
IMultiInstanceInvalidationService iMultiInstanceInvalidationService = this$0.service;
|
|
if (iMultiInstanceInvalidationService != null) {
|
|
this$0.clientId = iMultiInstanceInvalidationService.registerCallback(this$0.callback, this$0.name);
|
|
this$0.invalidationTracker.addObserver(this$0.getObserver());
|
|
}
|
|
} catch (RemoteException e) {
|
|
Log.w(Room.LOG_TAG, "Cannot register multi-instance invalidation callback", e);
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static final void removeObserverRunnable$lambda$2(MultiInstanceInvalidationClient this$0) {
|
|
Intrinsics.checkNotNullParameter(this$0, "this$0");
|
|
this$0.invalidationTracker.removeObserver(this$0.getObserver());
|
|
}
|
|
|
|
public final void stop() {
|
|
if (this.stopped.compareAndSet(false, true)) {
|
|
this.invalidationTracker.removeObserver(getObserver());
|
|
try {
|
|
IMultiInstanceInvalidationService iMultiInstanceInvalidationService = this.service;
|
|
if (iMultiInstanceInvalidationService != null) {
|
|
iMultiInstanceInvalidationService.unregisterCallback(this.callback, this.clientId);
|
|
}
|
|
} catch (RemoteException e) {
|
|
Log.w(Room.LOG_TAG, "Cannot unregister multi-instance invalidation callback", e);
|
|
}
|
|
this.appContext.unbindService(this.serviceConnection);
|
|
}
|
|
}
|
|
}
|