aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Local
diff options
context:
space:
mode:
authorGravatar zxu <zxu@google.com>2018-02-15 17:23:08 -0500
committerGravatar GitHub <noreply@github.com>2018-02-15 17:23:08 -0500
commitfd9fd271d0dba3935a6f5611a1554f2c59b696af (patch)
treebe6d8355254891cb83201c7bfac2082c0f95978f /Firestore/Source/Local
parent6889850b251ab56186bc13765baee0c3d0f1ae61 (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.mm4
-rw-r--r--Firestore/Source/Local/FSTLevelDBMutationQueue.h5
-rw-r--r--Firestore/Source/Local/FSTLevelDBMutationQueue.mm9
-rw-r--r--Firestore/Source/Local/FSTLocalStore.h8
-rw-r--r--Firestore/Source/Local/FSTLocalStore.mm7
-rw-r--r--Firestore/Source/Local/FSTMemoryPersistence.mm19
-rw-r--r--Firestore/Source/Local/FSTPersistence.h5
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;