diff options
author | zxu <zxu@google.com> | 2018-02-15 17:23:08 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-15 17:23:08 -0500 |
commit | fd9fd271d0dba3935a6f5611a1554f2c59b696af (patch) | |
tree | be6d8355254891cb83201c7bfac2082c0f95978f /Firestore/Source/Local | |
parent | 6889850b251ab56186bc13765baee0c3d0f1ae61 (diff) |
replacing Auth/FSTUser by C++ auth implementation (#804)
* replacing Auth/FSTUser by C++ auth implementation
* address changes
Diffstat (limited to 'Firestore/Source/Local')
-rw-r--r-- | Firestore/Source/Local/FSTLevelDB.mm | 4 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTLevelDBMutationQueue.h | 5 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTLevelDBMutationQueue.mm | 9 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTLocalStore.h | 8 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTLocalStore.mm | 7 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTMemoryPersistence.mm | 19 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTPersistence.h | 5 |
7 files changed, 35 insertions, 22 deletions
diff --git a/Firestore/Source/Local/FSTLevelDB.mm b/Firestore/Source/Local/FSTLevelDB.mm index 7fb3a66..9d3c35e 100644 --- a/Firestore/Source/Local/FSTLevelDB.mm +++ b/Firestore/Source/Local/FSTLevelDB.mm @@ -29,11 +29,13 @@ #import "Firestore/Source/Util/FSTAssert.h" #import "Firestore/Source/Util/FSTLogger.h" +#include "Firestore/core/src/firebase/firestore/auth/user.h" #include "Firestore/core/src/firebase/firestore/core/database_info.h" #include "Firestore/core/src/firebase/firestore/model/database_id.h" #include "Firestore/core/src/firebase/firestore/util/string_apple.h" namespace util = firebase::firestore::util; +using firebase::firestore::auth::User; using firebase::firestore::core::DatabaseInfo; using firebase::firestore::model::DatabaseId; @@ -198,7 +200,7 @@ using leveldb::WriteOptions; #pragma mark - Persistence Factory methods -- (id<FSTMutationQueue>)mutationQueueForUser:(FSTUser *)user { +- (id<FSTMutationQueue>)mutationQueueForUser:(const User &)user { return [FSTLevelDBMutationQueue mutationQueueWithUser:user db:_ptr serializer:self.serializer]; } diff --git a/Firestore/Source/Local/FSTLevelDBMutationQueue.h b/Firestore/Source/Local/FSTLevelDBMutationQueue.h index cc05db7..3f1bd51 100644 --- a/Firestore/Source/Local/FSTLevelDBMutationQueue.h +++ b/Firestore/Source/Local/FSTLevelDBMutationQueue.h @@ -19,11 +19,12 @@ #include <memory> #import "Firestore/Source/Local/FSTMutationQueue.h" + +#include "Firestore/core/src/firebase/firestore/auth/user.h" #include "leveldb/db.h" @class FSTLevelDB; @class FSTLocalSerializer; -@class FSTUser; @protocol FSTGarbageCollector; NS_ASSUME_NONNULL_BEGIN @@ -42,7 +43,7 @@ NS_ASSUME_NONNULL_BEGIN * @param user The user for which to create a mutation queue. * @param db The LevelDB in which to create the queue. */ -+ (instancetype)mutationQueueWithUser:(FSTUser *)user ++ (instancetype)mutationQueueWithUser:(const firebase::firestore::auth::User &)user db:(std::shared_ptr<leveldb::DB>)db serializer:(FSTLocalSerializer *)serializer; diff --git a/Firestore/Source/Local/FSTLevelDBMutationQueue.mm b/Firestore/Source/Local/FSTLevelDBMutationQueue.mm index 85f163d..982e09c 100644 --- a/Firestore/Source/Local/FSTLevelDBMutationQueue.mm +++ b/Firestore/Source/Local/FSTLevelDBMutationQueue.mm @@ -22,7 +22,6 @@ #include <string> #import "Firestore/Protos/objc/firestore/local/Mutation.pbobjc.h" -#import "Firestore/Source/Auth/FSTUser.h" #import "Firestore/Source/Core/FSTQuery.h" #import "Firestore/Source/Local/FSTLevelDB.h" #import "Firestore/Source/Local/FSTLevelDBKey.h" @@ -34,12 +33,15 @@ #import "Firestore/Source/Model/FSTPath.h" #import "Firestore/Source/Util/FSTAssert.h" +#include "Firestore/core/src/firebase/firestore/auth/user.h" +#include "Firestore/core/src/firebase/firestore/util/string_apple.h" #include "Firestore/core/src/firebase/firestore/util/string_util.h" NS_ASSUME_NONNULL_BEGIN namespace util = firebase::firestore::util; using Firestore::StringView; +using firebase::firestore::auth::User; using leveldb::DB; using leveldb::Iterator; using leveldb::ReadOptions; @@ -89,11 +91,10 @@ static ReadOptions StandardReadOptions() { std::shared_ptr<DB> _db; } -+ (instancetype)mutationQueueWithUser:(FSTUser *)user ++ (instancetype)mutationQueueWithUser:(const User &)user db:(std::shared_ptr<DB>)db serializer:(FSTLocalSerializer *)serializer { - FSTAssert(![user.UID isEqual:@""], @"UserID must not be an empty string."); - NSString *userID = user.isUnauthenticated ? @"" : user.UID; + NSString *userID = user.is_authenticated() ? util::WrapNSStringNoCopy(user.uid()) : @""; return [[FSTLevelDBMutationQueue alloc] initWithUserID:userID db:db serializer:serializer]; } diff --git a/Firestore/Source/Local/FSTLocalStore.h b/Firestore/Source/Local/FSTLocalStore.h index 19803ac..4ec23fd 100644 --- a/Firestore/Source/Local/FSTLocalStore.h +++ b/Firestore/Source/Local/FSTLocalStore.h @@ -21,6 +21,8 @@ #import "Firestore/Source/Model/FSTDocumentKeySet.h" #import "Firestore/Source/Model/FSTDocumentVersionDictionary.h" +#include "Firestore/core/src/firebase/firestore/auth/user.h" + @class FSTLocalViewChanges; @class FSTLocalWriteResult; @class FSTMutation; @@ -29,7 +31,6 @@ @class FSTQuery; @class FSTQueryData; @class FSTRemoteEvent; -@class FSTUser; @protocol FSTPersistence; @protocol FSTGarbageCollector; @@ -80,7 +81,8 @@ NS_ASSUME_NONNULL_BEGIN /** Creates a new instance of the FSTLocalStore with its required dependencies as parameters. */ - (instancetype)initWithPersistence:(id<FSTPersistence>)persistence garbageCollector:(id<FSTGarbageCollector>)garbageCollector - initialUser:(FSTUser *)initialUser NS_DESIGNATED_INITIALIZER; + initialUser:(const firebase::firestore::auth::User &)initialUser + NS_DESIGNATED_INITIALIZER; - (instancetype)init NS_UNAVAILABLE; @@ -96,7 +98,7 @@ NS_ASSUME_NONNULL_BEGIN * In response the local store switches the mutation queue to the new user and returns any * resulting document changes. */ -- (FSTMaybeDocumentDictionary *)userDidChange:(FSTUser *)user; +- (FSTMaybeDocumentDictionary *)userDidChange:(const firebase::firestore::auth::User &)user; /** Accepts locally generated Mutations and commits them to storage. */ - (FSTLocalWriteResult *)locallyWriteMutations:(NSArray<FSTMutation *> *)mutations; diff --git a/Firestore/Source/Local/FSTLocalStore.mm b/Firestore/Source/Local/FSTLocalStore.mm index 8a383e5..d12a45b 100644 --- a/Firestore/Source/Local/FSTLocalStore.mm +++ b/Firestore/Source/Local/FSTLocalStore.mm @@ -16,7 +16,6 @@ #import "Firestore/Source/Local/FSTLocalStore.h" -#import "Firestore/Source/Auth/FSTUser.h" #import "Firestore/Source/Core/FSTListenSequence.h" #import "Firestore/Source/Core/FSTQuery.h" #import "Firestore/Source/Core/FSTSnapshotVersion.h" @@ -41,8 +40,10 @@ #import "Firestore/Source/Util/FSTAssert.h" #import "Firestore/Source/Util/FSTLogger.h" +#include "Firestore/core/src/firebase/firestore/auth/user.h" #include "Firestore/core/src/firebase/firestore/core/target_id_generator.h" +using firebase::firestore::auth::User; using firebase::firestore::core::TargetIdGenerator; NS_ASSUME_NONNULL_BEGIN @@ -99,7 +100,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithPersistence:(id<FSTPersistence>)persistence garbageCollector:(id<FSTGarbageCollector>)garbageCollector - initialUser:(FSTUser *)initialUser { + initialUser:(const User &)initialUser { if (self = [super init]) { _persistence = persistence; _mutationQueue = [persistence mutationQueueForUser:initialUser]; @@ -166,7 +167,7 @@ NS_ASSUME_NONNULL_BEGIN [self.queryCache shutdown]; } -- (FSTMaybeDocumentDictionary *)userDidChange:(FSTUser *)user { +- (FSTMaybeDocumentDictionary *)userDidChange:(const User &)user { // Swap out the mutation queue, grabbing the pending mutation batches before and after. NSArray<FSTMutationBatch *> *oldBatches = [self.mutationQueue allMutationBatches]; diff --git a/Firestore/Source/Local/FSTMemoryPersistence.mm b/Firestore/Source/Local/FSTMemoryPersistence.mm index e301820..ba71f9c 100644 --- a/Firestore/Source/Local/FSTMemoryPersistence.mm +++ b/Firestore/Source/Local/FSTMemoryPersistence.mm @@ -16,7 +16,8 @@ #import "Firestore/Source/Local/FSTMemoryPersistence.h" -#import "Firestore/Source/Auth/FSTUser.h" +#include <unordered_map> + #import "Firestore/Source/Local/FSTMemoryMutationQueue.h" #import "Firestore/Source/Local/FSTMemoryQueryCache.h" #import "Firestore/Source/Local/FSTMemoryRemoteDocumentCache.h" @@ -24,12 +25,15 @@ #import "Firestore/Source/Local/FSTWriteGroupTracker.h" #import "Firestore/Source/Util/FSTAssert.h" +#include "Firestore/core/src/firebase/firestore/auth/user.h" + +using firebase::firestore::auth::HashUser; +using firebase::firestore::auth::User; + NS_ASSUME_NONNULL_BEGIN @interface FSTMemoryPersistence () @property(nonatomic, strong, nonnull) FSTWriteGroupTracker *writeGroupTracker; -@property(nonatomic, strong, nonnull) - NSMutableDictionary<FSTUser *, id<FSTMutationQueue>> *mutationQueues; @property(nonatomic, assign, getter=isStarted) BOOL started; @end @@ -46,6 +50,8 @@ NS_ASSUME_NONNULL_BEGIN /** The FSTRemoteDocumentCache representing the persisted cache of remote documents. */ FSTMemoryRemoteDocumentCache *_remoteDocumentCache; + + std::unordered_map<User, id<FSTMutationQueue>, HashUser> _mutationQueues; } + (instancetype)persistence { @@ -57,7 +63,6 @@ NS_ASSUME_NONNULL_BEGIN _writeGroupTracker = [FSTWriteGroupTracker tracker]; _queryCache = [[FSTMemoryQueryCache alloc] init]; _remoteDocumentCache = [[FSTMemoryRemoteDocumentCache alloc] init]; - _mutationQueues = [NSMutableDictionary dictionary]; } return self; } @@ -75,11 +80,11 @@ NS_ASSUME_NONNULL_BEGIN self.started = NO; } -- (id<FSTMutationQueue>)mutationQueueForUser:(FSTUser *)user { - id<FSTMutationQueue> queue = self.mutationQueues[user]; +- (id<FSTMutationQueue>)mutationQueueForUser:(const User &)user { + id<FSTMutationQueue> queue = _mutationQueues[user]; if (!queue) { queue = [FSTMemoryMutationQueue mutationQueue]; - self.mutationQueues[user] = queue; + _mutationQueues[user] = queue; } return queue; } diff --git a/Firestore/Source/Local/FSTPersistence.h b/Firestore/Source/Local/FSTPersistence.h index cf07a9e..30eb211 100644 --- a/Firestore/Source/Local/FSTPersistence.h +++ b/Firestore/Source/Local/FSTPersistence.h @@ -16,7 +16,8 @@ #import <Foundation/Foundation.h> -@class FSTUser; +#include "Firestore/core/src/firebase/firestore/auth/user.h" + @class FSTWriteGroup; @protocol FSTMutationQueue; @protocol FSTQueryCache; @@ -75,7 +76,7 @@ NS_ASSUME_NONNULL_BEGIN * implementation to the extent possible (e.g. in the case of uid switching from * sally=>jack=>sally, sally's mutation queue will be preserved). */ -- (id<FSTMutationQueue>)mutationQueueForUser:(FSTUser *)user; +- (id<FSTMutationQueue>)mutationQueueForUser:(const firebase::firestore::auth::User &)user; /** Creates an FSTQueryCache representing the persisted cache of queries. */ - (id<FSTQueryCache>)queryCache; |