diff options
author | Greg Soltis <gsoltis@google.com> | 2018-01-17 12:23:45 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-17 12:23:45 -0800 |
commit | 70d401d4837c7ff76531e74d2f363783e651bd4e (patch) | |
tree | 5b7176d5a0e18375cbc37e20a673c110d0556b43 /Firestore/Source/Local/FSTLevelDBQueryCache.mm | |
parent | b341356be10ab6860a021e0c4da4a1158f40ca8f (diff) |
Listen sequence numbers (#675)
* Generate and save sequence numbers for listens
* Add documentation
* Fix include path
* Fix unavailable comment
* Review feedback
Diffstat (limited to 'Firestore/Source/Local/FSTLevelDBQueryCache.mm')
-rw-r--r-- | Firestore/Source/Local/FSTLevelDBQueryCache.mm | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/Firestore/Source/Local/FSTLevelDBQueryCache.mm b/Firestore/Source/Local/FSTLevelDBQueryCache.mm index 13d15ee..8388b96 100644 --- a/Firestore/Source/Local/FSTLevelDBQueryCache.mm +++ b/Firestore/Source/Local/FSTLevelDBQueryCache.mm @@ -100,6 +100,10 @@ static ReadOptions GetStandardReadOptions() { return self.metadata.highestTargetId; } +- (FSTListenSequenceNumber)highestListenSequenceNumber { + return self.metadata.highestListenSequenceNumber; +} + - (FSTSnapshotVersion *)lastRemoteSnapshotVersion { return _lastRemoteSnapshotVersion; } @@ -116,7 +120,6 @@ static ReadOptions GetStandardReadOptions() { } - (void)addQueryData:(FSTQueryData *)queryData group:(FSTWriteGroup *)group { - // TODO(mcg): actually populate listen sequence number FSTTargetID targetID = queryData.targetID; std::string key = [FSTLevelDBTargetKey keyWithTargetID:targetID]; [group setMessage:[self.serializer encodedQueryData:queryData] forKey:key]; @@ -127,9 +130,19 @@ static ReadOptions GetStandardReadOptions() { std::string emptyBuffer; [group setData:emptyBuffer forKey:indexKey]; + BOOL saveMetadata = NO; FSTPBTargetGlobal *metadata = self.metadata; if (targetID > metadata.highestTargetId) { metadata.highestTargetId = targetID; + saveMetadata = YES; + } + + if (queryData.sequenceNumber > metadata.highestListenSequenceNumber) { + metadata.highestListenSequenceNumber = queryData.sequenceNumber; + saveMetadata = YES; + } + + if (saveMetadata) { [group setMessage:metadata forKey:[FSTLevelDBTargetGlobalKey key]]; } } |