aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Firestore/Source/Core/FSTSnapshotVersion.h43
-rw-r--r--Firestore/Source/Core/FSTSnapshotVersion.mm80
-rw-r--r--Firestore/Source/Local/FSTLocalSerializer.mm1
-rw-r--r--Firestore/Source/Local/FSTQueryData.mm2
-rw-r--r--Firestore/Source/Model/FSTDocument.mm10
-rw-r--r--Firestore/Source/Remote/FSTSerializerBeta.mm4
-rw-r--r--Firestore/core/src/firebase/firestore/model/snapshot_version.h33
7 files changed, 18 insertions, 155 deletions
diff --git a/Firestore/Source/Core/FSTSnapshotVersion.h b/Firestore/Source/Core/FSTSnapshotVersion.h
deleted file mode 100644
index 8649d40..0000000
--- a/Firestore/Source/Core/FSTSnapshotVersion.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2017 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class FIRTimestamp;
-
-/**
- * A version of a document in Firestore. This corresponds to the version timestamp, such as
- * update_time or read_time.
- */
-@interface FSTSnapshotVersion : NSObject <NSCopying>
-
-/** Creates a new version that is smaller than all other versions. */
-+ (instancetype)noVersion;
-
-/** Creates a new version representing the given timestamp. */
-+ (instancetype)versionWithTimestamp:(FIRTimestamp *)timestamp;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-- (NSComparisonResult)compare:(FSTSnapshotVersion *)other;
-
-@property(nonatomic, strong, readonly) FIRTimestamp *timestamp;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Firestore/Source/Core/FSTSnapshotVersion.mm b/Firestore/Source/Core/FSTSnapshotVersion.mm
deleted file mode 100644
index 58b2be4..0000000
--- a/Firestore/Source/Core/FSTSnapshotVersion.mm
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2017 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "Firestore/Source/Core/FSTSnapshotVersion.h"
-
-#import "FIRTimestamp.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@implementation FSTSnapshotVersion
-
-+ (instancetype)noVersion {
- static FSTSnapshotVersion *min;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- FIRTimestamp *timestamp = [[FIRTimestamp alloc] initWithSeconds:0 nanoseconds:0];
- min = [FSTSnapshotVersion versionWithTimestamp:timestamp];
- });
- return min;
-}
-
-+ (instancetype)versionWithTimestamp:(FIRTimestamp *)timestamp {
- return [[FSTSnapshotVersion alloc] initWithTimestamp:timestamp];
-}
-
-- (instancetype)initWithTimestamp:(FIRTimestamp *)timestamp {
- self = [super init];
- if (self) {
- _timestamp = timestamp;
- }
- return self;
-}
-
-#pragma mark - NSObject methods
-
-- (BOOL)isEqual:(id)object {
- if (self == object) {
- return YES;
- }
- if (![object isKindOfClass:[FSTSnapshotVersion class]]) {
- return NO;
- }
- return [self.timestamp isEqual:((FSTSnapshotVersion *)object).timestamp];
-}
-
-- (NSUInteger)hash {
- return self.timestamp.hash;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"<FSTSnapshotVersion: %@>", self.timestamp];
-}
-
-- (id)copyWithZone:(NSZone *_Nullable)zone {
- // Implements NSCopying without actually copying because timestamps are immutable.
- return self;
-}
-
-#pragma mark - Public methods
-
-- (NSComparisonResult)compare:(FSTSnapshotVersion *)other {
- return [self.timestamp compare:other.timestamp];
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Firestore/Source/Local/FSTLocalSerializer.mm b/Firestore/Source/Local/FSTLocalSerializer.mm
index 8fa1278..2c5ab4d 100644
--- a/Firestore/Source/Local/FSTLocalSerializer.mm
+++ b/Firestore/Source/Local/FSTLocalSerializer.mm
@@ -18,6 +18,7 @@
#include <cinttypes>
+#import "FIRTimestamp.h"
#import "Firestore/Protos/objc/firestore/local/MaybeDocument.pbobjc.h"
#import "Firestore/Protos/objc/firestore/local/Mutation.pbobjc.h"
#import "Firestore/Protos/objc/firestore/local/Target.pbobjc.h"
diff --git a/Firestore/Source/Local/FSTQueryData.mm b/Firestore/Source/Local/FSTQueryData.mm
index 5087dfc..16c3b2e 100644
--- a/Firestore/Source/Local/FSTQueryData.mm
+++ b/Firestore/Source/Local/FSTQueryData.mm
@@ -82,7 +82,7 @@ NS_ASSUME_NONNULL_BEGIN
NSUInteger result = [self.query hash];
result = result * 31 + self.targetID;
result = result * 31 + self.purpose;
- result = result * 31 + [self.snapshotVersion hash];
+ result = result * 31 + self.snapshotVersion.Hash();
result = result * 31 + [self.resumeToken hash];
return result;
}
diff --git a/Firestore/Source/Model/FSTDocument.mm b/Firestore/Source/Model/FSTDocument.mm
index 8ebc9ab..8c4c801 100644
--- a/Firestore/Source/Model/FSTDocument.mm
+++ b/Firestore/Source/Model/FSTDocument.mm
@@ -23,6 +23,7 @@
#include "Firestore/core/src/firebase/firestore/model/document_key.h"
#include "Firestore/core/src/firebase/firestore/model/field_path.h"
+#include "Firestore/core/src/firebase/firestore/util/hashing.h"
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
namespace util = firebase::firestore::util;
@@ -45,7 +46,6 @@ NS_ASSUME_NONNULL_BEGIN
}
- (instancetype)initWithKey:(DocumentKey)key version:(SnapshotVersion)version {
- FSTAssert(!!version, @"Version must not be nil.");
self = [super init];
if (self) {
_key = std::move(key);
@@ -102,13 +102,13 @@ NS_ASSUME_NONNULL_BEGIN
}
FSTDocument *otherDoc = other;
- return [self.key isEqual:otherDoc.key] && [self.version isEqual:otherDoc.version] &&
+ return [self.key isEqual:otherDoc.key] && self.version == otherDoc.version &&
[self.data isEqual:otherDoc.data] && self.hasLocalMutations == otherDoc.hasLocalMutations;
}
- (NSUInteger)hash {
NSUInteger result = [self.key hash];
- result = result * 31 + [self.version hash];
+ result = result * 31 + self.version.Hash();
result = result * 31 + [self.data hash];
result = result * 31 + (self.hasLocalMutations ? 1 : 0);
return result;
@@ -142,12 +142,12 @@ NS_ASSUME_NONNULL_BEGIN
}
FSTDocument *otherDoc = other;
- return [self.key isEqual:otherDoc.key] && [self.version isEqual:otherDoc.version];
+ return [self.key isEqual:otherDoc.key] && self.version == otherDoc.version;
}
- (NSUInteger)hash {
NSUInteger result = [self.key hash];
- result = result * 31 + [self.version hash];
+ result = result * 31 + self.version.Hash();
return result;
}
diff --git a/Firestore/Source/Remote/FSTSerializerBeta.mm b/Firestore/Source/Remote/FSTSerializerBeta.mm
index 782e54c..f862ec3 100644
--- a/Firestore/Source/Remote/FSTSerializerBeta.mm
+++ b/Firestore/Source/Remote/FSTSerializerBeta.mm
@@ -683,8 +683,8 @@ NS_ASSUME_NONNULL_BEGIN
[transformResults addObject:[self decodedFieldValue:result]];
}
}
- return [[FSTMutationResult alloc]
- initWithVersion:(version ? version.value() : nil)transformResults:transformResults];
+ return [[FSTMutationResult alloc] initWithVersion:std::move(version)
+ transformResults:transformResults];
}
#pragma mark - FSTQueryData => GCFSTarget proto
diff --git a/Firestore/core/src/firebase/firestore/model/snapshot_version.h b/Firestore/core/src/firebase/firestore/model/snapshot_version.h
index 7ce0985..dbecea1 100644
--- a/Firestore/core/src/firebase/firestore/model/snapshot_version.h
+++ b/Firestore/core/src/firebase/firestore/model/snapshot_version.h
@@ -19,11 +19,6 @@
#include "Firestore/core/include/firebase/firestore/timestamp.h"
-#if defined(__OBJC__)
-#import "FIRTimestamp.h"
-#import "Firestore/Source/Core/FSTSnapshotVersion.h"
-#endif // defined(__OBJC__)
-
namespace firebase {
namespace firestore {
namespace model {
@@ -34,6 +29,11 @@ namespace model {
*/
class SnapshotVersion {
public:
+#if __OBJC__
+ SnapshotVersion() {
+ }
+#endif // __OBJC__
+
explicit SnapshotVersion(const Timestamp& timestamp);
const Timestamp& timestamp() const {
@@ -43,26 +43,11 @@ class SnapshotVersion {
/** Creates a new version that is smaller than all other versions. */
static const SnapshotVersion& None();
-#if defined(__OBJC__)
- SnapshotVersion() {
- }
-
- SnapshotVersion(FSTSnapshotVersion* version) // NOLINT(runtime/explicit)
- : timestamp_{version.timestamp.seconds, version.timestamp.nanoseconds} {
- }
-
- operator FSTSnapshotVersion*() const {
- if (timestamp_ == Timestamp{}) {
- return [FSTSnapshotVersion noVersion];
- } else {
- return [FSTSnapshotVersion
- versionWithTimestamp:[FIRTimestamp
- timestampWithSeconds:timestamp_.seconds()
- nanoseconds:timestamp_
- .nanoseconds()]];
- }
+#if __OBJC__
+ size_t Hash() const {
+ return std::hash<Timestamp>{}(timestamp_);
}
-#endif // defined(__OBJC__)
+#endif // __OBJC__
private:
Timestamp timestamp_;