what-the-bank/sources/com/google/firebase/firestore/local/MemoryEagerReferenceDelegat...

100 lines
3.6 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package com.google.firebase.firestore.local;
import com.google.firebase.firestore.model.DocumentKey;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/* loaded from: classes2.dex */
class MemoryEagerReferenceDelegate implements ReferenceDelegate {
private ReferenceSet inMemoryPins;
private Set<DocumentKey> orphanedDocuments;
private final MemoryPersistence persistence;
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public long getCurrentSequenceNumber() {
return -1L;
}
/* JADX INFO: Access modifiers changed from: package-private */
public MemoryEagerReferenceDelegate(MemoryPersistence memoryPersistence) {
this.persistence = memoryPersistence;
}
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public void addReference(DocumentKey documentKey) {
this.orphanedDocuments.remove(documentKey);
}
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public void removeReference(DocumentKey documentKey) {
this.orphanedDocuments.add(documentKey);
}
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public void removeMutationReference(DocumentKey documentKey) {
this.orphanedDocuments.add(documentKey);
}
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public void removeTarget(TargetData targetData) {
MemoryTargetCache targetCache = this.persistence.getTargetCache();
Iterator<DocumentKey> it = targetCache.getMatchingKeysForTargetId(targetData.getTargetId()).iterator();
while (it.hasNext()) {
this.orphanedDocuments.add(it.next());
}
targetCache.removeTargetData(targetData);
}
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public void onTransactionStarted() {
this.orphanedDocuments = new HashSet();
}
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public void onTransactionCommitted() {
MemoryRemoteDocumentCache remoteDocumentCache = this.persistence.getRemoteDocumentCache();
ArrayList arrayList = new ArrayList();
for (DocumentKey documentKey : this.orphanedDocuments) {
if (!isReferenced(documentKey)) {
arrayList.add(documentKey);
}
}
remoteDocumentCache.removeAll(arrayList);
this.orphanedDocuments = null;
}
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public void updateLimboDocument(DocumentKey documentKey) {
if (isReferenced(documentKey)) {
this.orphanedDocuments.remove(documentKey);
} else {
this.orphanedDocuments.add(documentKey);
}
}
private boolean mutationQueuesContainKey(DocumentKey documentKey) {
Iterator<MemoryMutationQueue> it = this.persistence.getMutationQueues().iterator();
while (it.hasNext()) {
if (it.next().containsKey(documentKey)) {
return true;
}
}
return false;
}
private boolean isReferenced(DocumentKey documentKey) {
if (this.persistence.getTargetCache().containsKey(documentKey) || mutationQueuesContainKey(documentKey)) {
return true;
}
ReferenceSet referenceSet = this.inMemoryPins;
return referenceSet != null && referenceSet.containsKey(documentKey);
}
@Override // com.google.firebase.firestore.local.ReferenceDelegate
public void setInMemoryPins(ReferenceSet referenceSet) {
this.inMemoryPins = referenceSet;
}
}