diff options
Diffstat (limited to 'Firestore/Source/Local')
-rw-r--r-- | Firestore/Source/Local/FSTLevelDB.h | 5 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTLevelDB.mm | 25 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTLevelDBMutationQueue.mm | 3 | ||||
-rw-r--r-- | Firestore/Source/Local/FSTLocalStore.mm | 10 |
4 files changed, 27 insertions, 16 deletions
diff --git a/Firestore/Source/Local/FSTLevelDB.h b/Firestore/Source/Local/FSTLevelDB.h index 520557a..77abb3d 100644 --- a/Firestore/Source/Local/FSTLevelDB.h +++ b/Firestore/Source/Local/FSTLevelDB.h @@ -19,9 +19,9 @@ #include <memory> #import "Firestore/Source/Local/FSTPersistence.h" +#include "Firestore/core/src/firebase/firestore/core/database_info.h" #include "leveldb/db.h" -@class FSTDatabaseInfo; @class FSTLocalSerializer; NS_ASSUME_NONNULL_BEGIN @@ -50,7 +50,8 @@ NS_ASSUME_NONNULL_BEGIN * will be created. Usually just +[FSTLevelDB documentsDir]. * @return A storage directory unique to the instance identified by databaseInfo. */ -+ (NSString *)storageDirectoryForDatabaseInfo:(FSTDatabaseInfo *)databaseInfo ++ (NSString *)storageDirectoryForDatabaseInfo: + (const firebase::firestore::core::DatabaseInfo &)databaseInfo documentsDirectory:(NSString *)documentsDirectory; /** diff --git a/Firestore/Source/Local/FSTLevelDB.mm b/Firestore/Source/Local/FSTLevelDB.mm index d163ed5..7fb3a66 100644 --- a/Firestore/Source/Local/FSTLevelDB.mm +++ b/Firestore/Source/Local/FSTLevelDB.mm @@ -19,18 +19,24 @@ #include <leveldb/db.h> #import "FIRFirestoreErrors.h" -#import "Firestore/Source/Core/FSTDatabaseInfo.h" #import "Firestore/Source/Local/FSTLevelDBMigrations.h" #import "Firestore/Source/Local/FSTLevelDBMutationQueue.h" #import "Firestore/Source/Local/FSTLevelDBQueryCache.h" #import "Firestore/Source/Local/FSTLevelDBRemoteDocumentCache.h" #import "Firestore/Source/Local/FSTWriteGroup.h" #import "Firestore/Source/Local/FSTWriteGroupTracker.h" -#import "Firestore/Source/Model/FSTDatabaseID.h" #import "Firestore/Source/Remote/FSTSerializerBeta.h" #import "Firestore/Source/Util/FSTAssert.h" #import "Firestore/Source/Util/FSTLogger.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::core::DatabaseInfo; +using firebase::firestore::model::DatabaseId; + NS_ASSUME_NONNULL_BEGIN static NSString *const kReservedPathComponent = @"firestore"; @@ -89,7 +95,7 @@ using leveldb::WriteOptions; #endif } -+ (NSString *)storageDirectoryForDatabaseInfo:(FSTDatabaseInfo *)databaseInfo ++ (NSString *)storageDirectoryForDatabaseInfo:(const DatabaseInfo &)databaseInfo documentsDirectory:(NSString *)documentsDirectory { // Use two different path formats: // @@ -99,11 +105,14 @@ using leveldb::WriteOptions; // projectIDs are DNS-compatible names and cannot contain dots so there's // no danger of collisions. NSString *directory = documentsDirectory; - directory = [directory stringByAppendingPathComponent:databaseInfo.persistenceKey]; - - NSString *segment = databaseInfo.databaseID.projectID; - if (![databaseInfo.databaseID isDefaultDatabase]) { - segment = [NSString stringWithFormat:@"%@.%@", segment, databaseInfo.databaseID.databaseID]; + directory = [directory + stringByAppendingPathComponent:util::WrapNSStringNoCopy(databaseInfo.persistence_key())]; + + NSString *segment = util::WrapNSStringNoCopy(databaseInfo.database_id().project_id()); + if (!databaseInfo.database_id().IsDefaultDatabase()) { + segment = [NSString + stringWithFormat:@"%@.%@", segment, + util::WrapNSStringNoCopy(databaseInfo.database_id().database_id())]; } directory = [directory stringByAppendingPathComponent:segment]; diff --git a/Firestore/Source/Local/FSTLevelDBMutationQueue.mm b/Firestore/Source/Local/FSTLevelDBMutationQueue.mm index dbe58e8..85f163d 100644 --- a/Firestore/Source/Local/FSTLevelDBMutationQueue.mm +++ b/Firestore/Source/Local/FSTLevelDBMutationQueue.mm @@ -38,6 +38,7 @@ NS_ASSUME_NONNULL_BEGIN +namespace util = firebase::firestore::util; using Firestore::StringView; using leveldb::DB; using leveldb::Iterator; @@ -162,7 +163,7 @@ static ReadOptions StandardReadOptions() { while (moreUserIDs) { // Compute the first key after the last mutation for nextUserID. auto userEnd = [FSTLevelDBMutationKey keyPrefixWithUserID:nextUserID]; - userEnd = firebase::firestore::util::PrefixSuccessor(userEnd); + userEnd = util::PrefixSuccessor(userEnd); // Seek to that key with the intent of finding the boundary between nextUserID's mutations // and the one after that (if any). diff --git a/Firestore/Source/Local/FSTLocalStore.mm b/Firestore/Source/Local/FSTLocalStore.mm index fa77e37..d30177a 100644 --- a/Firestore/Source/Local/FSTLocalStore.mm +++ b/Firestore/Source/Local/FSTLocalStore.mm @@ -43,6 +43,8 @@ #include "Firestore/core/src/firebase/firestore/core/target_id_generator.h" +using firebase::firestore::core::TargetIdGenerator; + NS_ASSUME_NONNULL_BEGIN @interface FSTLocalStore () @@ -92,7 +94,7 @@ NS_ASSUME_NONNULL_BEGIN @implementation FSTLocalStore { /** Used to generate targetIDs for queries tracked locally. */ - firebase::firestore::core::TargetIdGenerator _targetIDGenerator; + TargetIdGenerator _targetIDGenerator; } - (instancetype)initWithPersistence:(id<FSTPersistence>)persistence @@ -115,8 +117,7 @@ NS_ASSUME_NONNULL_BEGIN _targetIDs = [NSMutableDictionary dictionary]; _heldBatchResults = [NSMutableArray array]; - _targetIDGenerator = - firebase::firestore::core::TargetIdGenerator::LocalStoreTargetIdGenerator(0); + _targetIDGenerator = TargetIdGenerator::LocalStoreTargetIdGenerator(0); } return self; } @@ -154,8 +155,7 @@ NS_ASSUME_NONNULL_BEGIN [self.queryCache start]; FSTTargetID targetID = [self.queryCache highestTargetID]; - _targetIDGenerator = - firebase::firestore::core::TargetIdGenerator::LocalStoreTargetIdGenerator(targetID); + _targetIDGenerator = TargetIdGenerator::LocalStoreTargetIdGenerator(targetID); FSTListenSequenceNumber sequenceNumber = [self.queryCache highestListenSequenceNumber]; self.listenSequence = [[FSTListenSequence alloc] initStartingAfter:sequenceNumber]; } |