aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Local/FSTMemoryQueryCache.mm
diff options
context:
space:
mode:
authorGravatar Greg Soltis <gsoltis@google.com>2018-05-08 10:49:54 -0700
committerGravatar GitHub <noreply@github.com>2018-05-08 10:49:54 -0700
commitdddd75037ddd0937f2526ae7b43b62f571b22f49 (patch)
tree8397a40f214a9fc730b49b987669f2c40c03ea42 /Firestore/Source/Local/FSTMemoryQueryCache.mm
parentae5f163b8480310d38cf5589fe58cde6fb060c6e (diff)
Introduce ReferenceDelegates (#1222)
* Bump sequence number on resume token refresh * Style * Fix comment formatting * Add FSTReferenceDelegate definition and documentation * Add methods to return nil for delegates, wire up inMemoryPins * Add hook for removing a reference * Start work on reference delegates * Fix up tests to support adding documents at a sequence number * Implement removing references * Remove from target when dropped from local view * Fix warning * Add hooks for removal from mutation queue * Add hooks for limbo document updates * Style * Drop commented-out code * Fixup after merging master * Drop sequence number plumbing * Style * Drop errant semicolon
Diffstat (limited to 'Firestore/Source/Local/FSTMemoryQueryCache.mm')
-rw-r--r--Firestore/Source/Local/FSTMemoryQueryCache.mm12
1 files changed, 11 insertions, 1 deletions
diff --git a/Firestore/Source/Local/FSTMemoryQueryCache.mm b/Firestore/Source/Local/FSTMemoryQueryCache.mm
index 991faa9..2eba4f6 100644
--- a/Firestore/Source/Local/FSTMemoryQueryCache.mm
+++ b/Firestore/Source/Local/FSTMemoryQueryCache.mm
@@ -19,6 +19,7 @@
#include <utility>
#import "Firestore/Source/Core/FSTQuery.h"
+#import "Firestore/Source/Local/FSTMemoryPersistence.h"
#import "Firestore/Source/Local/FSTQueryData.h"
#import "Firestore/Source/Local/FSTReferenceSet.h"
@@ -27,6 +28,7 @@
using firebase::firestore::model::SnapshotVersion;
using firebase::firestore::model::DocumentKeySet;
+using firebase::firestore::model::DocumentKey;
NS_ASSUME_NONNULL_BEGIN
@@ -46,12 +48,14 @@ NS_ASSUME_NONNULL_BEGIN
@end
@implementation FSTMemoryQueryCache {
+ FSTMemoryPersistence *_persistence;
/** The last received snapshot version. */
SnapshotVersion _lastRemoteSnapshotVersion;
}
-- (instancetype)init {
+- (instancetype)initWithPersistence:(FSTMemoryPersistence *)persistence {
if (self = [super init]) {
+ _persistence = persistence;
_queries = [NSMutableDictionary dictionary];
_references = [[FSTReferenceSet alloc] init];
_lastRemoteSnapshotVersion = SnapshotVersion::None();
@@ -119,10 +123,16 @@ NS_ASSUME_NONNULL_BEGIN
- (void)addMatchingKeys:(const DocumentKeySet &)keys forTargetID:(FSTTargetID)targetID {
[self.references addReferencesToKeys:keys forID:targetID];
+ for (const DocumentKey &key : keys) {
+ [_persistence.referenceDelegate addReference:key target:targetID];
+ }
}
- (void)removeMatchingKeys:(const DocumentKeySet &)keys forTargetID:(FSTTargetID)targetID {
[self.references removeReferencesToKeys:keys forID:targetID];
+ for (const DocumentKey &key : keys) {
+ [_persistence.referenceDelegate removeReference:key target:targetID];
+ }
}
- (void)removeMatchingKeysForTargetID:(FSTTargetID)targetID {