From fb6f930f7beea29129cea89896d8ab874316ecbe Mon Sep 17 00:00:00 2001 From: Gil Date: Wed, 9 May 2018 15:04:50 -0700 Subject: Remove final vestiges of FSTSnapshotVersion (#1253) --- Firestore/Source/Core/FSTSnapshotVersion.h | 43 ------------ Firestore/Source/Core/FSTSnapshotVersion.mm | 80 ---------------------- Firestore/Source/Local/FSTLocalSerializer.mm | 1 + Firestore/Source/Local/FSTQueryData.mm | 2 +- Firestore/Source/Model/FSTDocument.mm | 10 +-- Firestore/Source/Remote/FSTSerializerBeta.mm | 4 +- .../firebase/firestore/model/snapshot_version.h | 33 +++------ 7 files changed, 18 insertions(+), 155 deletions(-) delete mode 100644 Firestore/Source/Core/FSTSnapshotVersion.h delete mode 100644 Firestore/Source/Core/FSTSnapshotVersion.mm 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 - -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 - -/** 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:@"", 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 +#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_); } -#endif // defined(__OBJC__) +#endif // __OBJC__ private: Timestamp timestamp_; -- cgit v1.2.3