2121#include < utility>
2222
2323#import " FIRFirestoreErrors.h"
24+ #import " FIRFirestoreSettings.h"
2425#import " Firestore/Source/API/FIRDocumentReference+Internal.h"
2526#import " Firestore/Source/API/FIRDocumentSnapshot+Internal.h"
2627#import " Firestore/Source/API/FIRQuery+Internal.h"
@@ -75,7 +76,7 @@ @interface FSTFirestoreClient () {
7576}
7677
7778- (instancetype )initWithDatabaseInfo : (const DatabaseInfo &)databaseInfo
78- usePersistence : ( BOOL ) usePersistence
79+ settings : (FIRFirestoreSettings *) settings
7980 credentialsProvider :
8081 (CredentialsProvider *)credentialsProvider // no passing ownership
8182 userExecutor : (std::unique_ptr<Executor>)userExecutor
@@ -115,20 +116,20 @@ - (Executor *)userExecutor {
115116}
116117
117118+ (instancetype )clientWithDatabaseInfo : (const DatabaseInfo &)databaseInfo
118- usePersistence : ( BOOL ) usePersistence
119+ settings : (FIRFirestoreSettings *) settings
119120 credentialsProvider :
120121 (CredentialsProvider *)credentialsProvider // no passing ownership
121122 userExecutor : (std::unique_ptr<Executor>)userExecutor
122123 workerDispatchQueue : (FSTDispatchQueue *)workerDispatchQueue {
123124 return [[FSTFirestoreClient alloc ] initWithDatabaseInfo: databaseInfo
124- usePersistence: usePersistence
125+ settings: settings
125126 credentialsProvider: credentialsProvider
126127 userExecutor:std: :move (userExecutor)
127128 workerDispatchQueue: workerDispatchQueue];
128129}
129130
130131- (instancetype )initWithDatabaseInfo : (const DatabaseInfo &)databaseInfo
131- usePersistence : ( BOOL ) usePersistence
132+ settings : (FIRFirestoreSettings *) settings
132133 credentialsProvider :
133134 (CredentialsProvider *)credentialsProvider // no passing ownership
134135 userExecutor : (std::unique_ptr<Executor>)userExecutor
@@ -167,21 +168,21 @@ - (instancetype)initWithDatabaseInfo:(const DatabaseInfo &)databaseInfo
167168 // before any subsequently queued work runs.
168169 [_workerDispatchQueue dispatchAsync: ^{
169170 User user = userPromise->get_future ().get ();
170- [self initializeWithUser: user usePersistence: usePersistence ];
171+ [self initializeWithUser: user settings: settings ];
171172 }];
172173 }
173174 return self;
174175}
175176
176- - (void )initializeWithUser : (const User &)user usePersistence : ( BOOL ) usePersistence {
177+ - (void )initializeWithUser : (const User &)user settings : (FIRFirestoreSettings *) settings {
177178 // Do all of our initialization on our own dispatch queue.
178179 [self .workerDispatchQueue verifyIsCurrentQueue ];
179180 LOG_DEBUG (" Initializing. Current user: %s" , user.uid ());
180181
181182 // Note: The initialization work must all be synchronous (we can't dispatch more work) since
182183 // external write/listen operations could get queued to run before that subsequent work
183184 // completes.
184- if (usePersistence ) {
185+ if (settings. isPersistenceEnabled ) {
185186 Path dir = [FSTLevelDB storageDirectoryForDatabaseInfo: *self .databaseInfo
186187 documentsDirectory: [FSTLevelDB documentsDirectory ]];
187188
@@ -190,9 +191,10 @@ - (void)initializeWithUser:(const User &)user usePersistence:(BOOL)usePersistenc
190191 FSTLocalSerializer *serializer =
191192 [[FSTLocalSerializer alloc ] initWithRemoteSerializer: remoteSerializer];
192193 // TODO(gsoltis): enable LRU GC once API is finalized
193- FSTLevelDB *ldb = [[FSTLevelDB alloc ] initWithDirectory: std: :move (dir)
194- serializer: serializer
195- lruParams:LruParams: :Disabled ()];
194+ FSTLevelDB *ldb =
195+ [[FSTLevelDB alloc ] initWithDirectory: std: :move (dir)
196+ serializer: serializer
197+ lruParams:LruParams: :WithCacheSize (settings.cacheSizeBytes)];
196198 _lruDelegate = ldb.referenceDelegate ;
197199 _persistence = ldb;
198200 [self scheduleLruGarbageCollection ];
0 commit comments