Skip to content

Commit 8075ff1

Browse files
Add QueryData.with() helpers
Port of firebase/firebase-js-sdk#2148
1 parent ca8570a commit 8075ff1

File tree

9 files changed

+28
-25
lines changed

9 files changed

+28
-25
lines changed

Firestore/Example/Firestore.xcodeproj/xcshareddata/xcschemes/Firestore_Benchmarks_iOS.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<BuildActionEntries>
99
<BuildActionEntry
1010
buildForTesting = "YES"
11-
buildForRunning = "NO"
11+
buildForRunning = "YES"
1212
buildForProfiling = "NO"
1313
buildForArchiving = "NO"
1414
buildForAnalyzing = "NO">

Firestore/Example/Tests/Local/FSTLRUGarbageCollectorTests.mm

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,7 @@ - (QueryData)addNextQueryInTransaction {
179179
}
180180

181181
- (void)updateTargetInTransaction:(const QueryData &)queryData {
182-
QueryData updated = queryData.Copy(queryData.snapshot_version(), testutil::ResumeToken(7),
183-
_persistence->current_sequence_number());
182+
QueryData updated = queryData.WithSequenceNumber(_persistence->current_sequence_number());
184183
_queryCache->UpdateTarget(updated);
185184
}
186185

Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,7 @@ void WatchQuery(const QueryData& query) override {
106106
query.resume_token().ToString());
107107

108108
// Snapshot version is ignored on the wire
109-
QueryData sentQueryData =
110-
query.Copy(SnapshotVersion::None(), query.resume_token(), query.sequence_number());
109+
QueryData sentQueryData = query.WithResumeToken(query.resume_token(), SnapshotVersion::None());
111110
datastore_->IncrementWatchStreamRequests();
112111
active_targets_[query.target_id()] = sentQueryData;
113112
}

Firestore/core/src/firebase/firestore/local/leveldb_lru_reference_delegate.mm

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@
7171
}
7272

7373
void LevelDbLruReferenceDelegate::RemoveTarget(const QueryData& query_data) {
74-
QueryData updated =
75-
query_data.Copy(query_data.snapshot_version(), query_data.resume_token(),
76-
current_sequence_number());
74+
QueryData updated = query_data.WithSequenceNumber(current_sequence_number());
7775
db_->query_cache()->UpdateTarget(std::move(updated));
7876
}
7977

Firestore/core/src/firebase/firestore/local/local_store.mm

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -238,10 +238,6 @@
238238
query_cache_->GetLastRemoteSnapshotVersion();
239239

240240
return persistence_->Run("Apply remote event", [&] {
241-
// TODO(gsoltis): move the sequence number into the reference delegate.
242-
ListenSequenceNumber sequence_number =
243-
persistence_->current_sequence_number();
244-
245241
for (const auto& entry : remote_event.target_changes()) {
246242
TargetId target_id = entry.first;
247243
const TargetChange& change = entry.second;
@@ -266,8 +262,8 @@
266262
const ByteString& resume_token = change.resume_token();
267263
// Update the resume token if the change includes one.
268264
if (!resume_token.empty()) {
269-
QueryData new_query_data = old_query_data.Copy(
270-
remote_event.snapshot_version(), resume_token, sequence_number);
265+
QueryData new_query_data = old_query_data.WithResumeToken(
266+
resume_token, remote_event.snapshot_version());
271267
target_ids[target_id] = new_query_data;
272268

273269
// Update the query data if there are target changes (or if sufficient

Firestore/core/src/firebase/firestore/local/memory_lru_reference_delegate.cc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,7 @@ void MemoryLruReferenceDelegate::AddInMemoryPins(ReferenceSet* set) {
6565
}
6666

6767
void MemoryLruReferenceDelegate::RemoveTarget(const QueryData& query_data) {
68-
QueryData updated =
69-
query_data.Copy(query_data.snapshot_version(), query_data.resume_token(),
70-
current_sequence_number_);
68+
QueryData updated = query_data.WithSequenceNumber(current_sequence_number_);
7169
persistence_->query_cache()->UpdateTarget(updated);
7270
}
7371

Firestore/core/src/firebase/firestore/local/query_data.cc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,16 @@ QueryData QueryData::Invalid() {
8585
SnapshotVersion(SnapshotVersion::None()), {});
8686
}
8787

88-
QueryData QueryData::Copy(SnapshotVersion snapshot_version,
89-
ByteString resume_token,
90-
model::ListenSequenceNumber sequence_number) const {
88+
QueryData QueryData::WithSequenceNumber(
89+
model::ListenSequenceNumber sequence_number) const {
9190
return QueryData(Query(query_), target_id_, sequence_number, purpose_,
91+
snapshot_version_, resume_token_);
92+
}
93+
94+
QueryData QueryData::WithResumeToken(
95+
nanopb::ByteString resume_token,
96+
model::SnapshotVersion snapshot_version) const {
97+
return QueryData(Query(query_), target_id_, sequence_number_, purpose_,
9298
std::move(snapshot_version), std::move(resume_token));
9399
}
94100

Firestore/core/src/firebase/firestore/local/query_data.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,16 @@ class QueryData {
129129
return resume_token_;
130130
}
131131

132-
QueryData Copy(model::SnapshotVersion snapshot_version,
133-
nanopb::ByteString resume_token,
134-
model::ListenSequenceNumber sequence_number) const;
132+
/** Creates a new query data instance with an updated sequence number. */
133+
QueryData WithSequenceNumber(
134+
model::ListenSequenceNumber sequence_number) const;
135+
136+
/**
137+
* Creates a new query data instance with an updated resume token and
138+
* snapshot version.
139+
*/
140+
QueryData WithResumeToken(nanopb::ByteString resume_token,
141+
model::SnapshotVersion snapshot_version) const;
135142

136143
friend bool operator==(const QueryData& lhs, const QueryData& rhs);
137144

Firestore/core/src/firebase/firestore/remote/remote_store.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,8 @@
288288

289289
// A watched target might have been removed already.
290290
if (query_data) {
291-
listen_targets_[target_id] = query_data->Copy(
292-
snapshot_version, resumeToken, query_data->sequence_number());
291+
listen_targets_[target_id] =
292+
query_data->WithResumeToken(resumeToken, snapshot_version);
293293
}
294294
}
295295
}

0 commit comments

Comments
 (0)