184 lines
8.8 KiB
Java
184 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.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.room.IMultiInstanceInvalidationCallback;
|
|
import androidx.room.IMultiInstanceInvalidationService;
|
|
import androidx.room.InvalidationTracker;
|
|
import java.util.Set;
|
|
import java.util.concurrent.Executor;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
public class MultiInstanceInvalidationClient {
|
|
public final Context mAppContext;
|
|
public final IMultiInstanceInvalidationCallback mCallback = new AnonymousClass1();
|
|
public int mClientId;
|
|
public final Executor mExecutor;
|
|
public final InvalidationTracker mInvalidationTracker;
|
|
public final String mName;
|
|
public final InvalidationTracker.Observer mObserver;
|
|
public final Runnable mRemoveObserverRunnable;
|
|
@Nullable
|
|
public IMultiInstanceInvalidationService mService;
|
|
public final ServiceConnection mServiceConnection;
|
|
public final Runnable mSetUpRunnable;
|
|
public final AtomicBoolean mStopped = new AtomicBoolean(false);
|
|
private final Runnable mTearDownRunnable;
|
|
|
|
/* renamed from: androidx.room.MultiInstanceInvalidationClient$1 reason: invalid class name */
|
|
public class AnonymousClass1 extends IMultiInstanceInvalidationCallback.Stub {
|
|
|
|
/* renamed from: androidx.room.MultiInstanceInvalidationClient$1$1 reason: invalid class name */
|
|
public class AnonymousClass1 implements Runnable {
|
|
public final /* synthetic */ String[] val$tables;
|
|
|
|
public AnonymousClass1(String[] strArr) {
|
|
this.val$tables = strArr;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
MultiInstanceInvalidationClient.this.mInvalidationTracker.notifyObserversByTableNames(this.val$tables);
|
|
}
|
|
}
|
|
|
|
public AnonymousClass1() {
|
|
}
|
|
|
|
@Override // androidx.room.IMultiInstanceInvalidationCallback
|
|
public void onInvalidation(String[] strArr) {
|
|
MultiInstanceInvalidationClient.this.mExecutor.execute(new AnonymousClass1(strArr));
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.room.MultiInstanceInvalidationClient$2 reason: invalid class name */
|
|
public class AnonymousClass2 implements ServiceConnection {
|
|
public AnonymousClass2() {
|
|
}
|
|
|
|
@Override // android.content.ServiceConnection
|
|
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
|
|
MultiInstanceInvalidationClient.this.mService = IMultiInstanceInvalidationService.Stub.asInterface(iBinder);
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient = MultiInstanceInvalidationClient.this;
|
|
multiInstanceInvalidationClient.mExecutor.execute(multiInstanceInvalidationClient.mSetUpRunnable);
|
|
}
|
|
|
|
@Override // android.content.ServiceConnection
|
|
public void onServiceDisconnected(ComponentName componentName) {
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient = MultiInstanceInvalidationClient.this;
|
|
multiInstanceInvalidationClient.mExecutor.execute(multiInstanceInvalidationClient.mRemoveObserverRunnable);
|
|
MultiInstanceInvalidationClient.this.mService = null;
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.room.MultiInstanceInvalidationClient$3 reason: invalid class name */
|
|
public class AnonymousClass3 implements Runnable {
|
|
public AnonymousClass3() {
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
try {
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient = MultiInstanceInvalidationClient.this;
|
|
IMultiInstanceInvalidationService iMultiInstanceInvalidationService = multiInstanceInvalidationClient.mService;
|
|
if (iMultiInstanceInvalidationService != null) {
|
|
multiInstanceInvalidationClient.mClientId = iMultiInstanceInvalidationService.registerCallback(multiInstanceInvalidationClient.mCallback, multiInstanceInvalidationClient.mName);
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient2 = MultiInstanceInvalidationClient.this;
|
|
multiInstanceInvalidationClient2.mInvalidationTracker.addObserver(multiInstanceInvalidationClient2.mObserver);
|
|
}
|
|
} catch (RemoteException e) {
|
|
Log.w("ROOM", "Cannot register multi-instance invalidation callback", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.room.MultiInstanceInvalidationClient$4 reason: invalid class name */
|
|
public class AnonymousClass4 implements Runnable {
|
|
public AnonymousClass4() {
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient = MultiInstanceInvalidationClient.this;
|
|
multiInstanceInvalidationClient.mInvalidationTracker.removeObserver(multiInstanceInvalidationClient.mObserver);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.room.MultiInstanceInvalidationClient$5 reason: invalid class name */
|
|
public class AnonymousClass5 implements Runnable {
|
|
public AnonymousClass5() {
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient = MultiInstanceInvalidationClient.this;
|
|
multiInstanceInvalidationClient.mInvalidationTracker.removeObserver(multiInstanceInvalidationClient.mObserver);
|
|
try {
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient2 = MultiInstanceInvalidationClient.this;
|
|
IMultiInstanceInvalidationService iMultiInstanceInvalidationService = multiInstanceInvalidationClient2.mService;
|
|
if (iMultiInstanceInvalidationService != null) {
|
|
iMultiInstanceInvalidationService.unregisterCallback(multiInstanceInvalidationClient2.mCallback, multiInstanceInvalidationClient2.mClientId);
|
|
}
|
|
} catch (RemoteException e) {
|
|
Log.w("ROOM", "Cannot unregister multi-instance invalidation callback", e);
|
|
}
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient3 = MultiInstanceInvalidationClient.this;
|
|
multiInstanceInvalidationClient3.mAppContext.unbindService(multiInstanceInvalidationClient3.mServiceConnection);
|
|
}
|
|
}
|
|
|
|
/* renamed from: androidx.room.MultiInstanceInvalidationClient$6 reason: invalid class name */
|
|
public class AnonymousClass6 extends InvalidationTracker.Observer {
|
|
public AnonymousClass6(String[] strArr) {
|
|
super(strArr);
|
|
}
|
|
|
|
@Override // androidx.room.InvalidationTracker.Observer
|
|
public boolean isRemote() {
|
|
return true;
|
|
}
|
|
|
|
@Override // androidx.room.InvalidationTracker.Observer
|
|
public void onInvalidated(@NonNull Set<String> set) {
|
|
if (!MultiInstanceInvalidationClient.this.mStopped.get()) {
|
|
try {
|
|
MultiInstanceInvalidationClient multiInstanceInvalidationClient = MultiInstanceInvalidationClient.this;
|
|
IMultiInstanceInvalidationService iMultiInstanceInvalidationService = multiInstanceInvalidationClient.mService;
|
|
if (iMultiInstanceInvalidationService != null) {
|
|
iMultiInstanceInvalidationService.broadcastInvalidation(multiInstanceInvalidationClient.mClientId, (String[]) set.toArray(new String[0]));
|
|
}
|
|
} catch (RemoteException e) {
|
|
Log.w("ROOM", "Cannot broadcast invalidation", e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public MultiInstanceInvalidationClient(Context context, String str, InvalidationTracker invalidationTracker, Executor executor) {
|
|
AnonymousClass2 r0 = new AnonymousClass2();
|
|
this.mServiceConnection = r0;
|
|
this.mSetUpRunnable = new AnonymousClass3();
|
|
this.mRemoveObserverRunnable = new AnonymousClass4();
|
|
this.mTearDownRunnable = new AnonymousClass5();
|
|
Context applicationContext = context.getApplicationContext();
|
|
this.mAppContext = applicationContext;
|
|
this.mName = str;
|
|
this.mInvalidationTracker = invalidationTracker;
|
|
this.mExecutor = executor;
|
|
this.mObserver = new AnonymousClass6((String[]) invalidationTracker.mTableIdLookup.keySet().toArray(new String[0]));
|
|
applicationContext.bindService(new Intent(applicationContext, MultiInstanceInvalidationService.class), r0, 1);
|
|
}
|
|
|
|
public void stop() {
|
|
if (this.mStopped.compareAndSet(false, true)) {
|
|
this.mExecutor.execute(this.mTearDownRunnable);
|
|
}
|
|
}
|
|
}
|