diff options
author | Pierre Bernard <pierre.bernard@web.de> | 2016-04-05 14:46:15 +0300 |
---|---|---|
committer | Pierre Bernard <pierre.bernard@web.de> | 2016-04-05 14:46:15 +0300 |
commit | 9c9e057533978ab5bb1ac1d61fecfa3aa9189603 (patch) | |
tree | 39dddb0eba67c1127d5dae75d2e6d6267fa64ddd | |
parent | 4d7c8842ae0254b2b645d52d59462ff62d0badec (diff) |
Support for custom database class and vfsName
Brings API in line with FMDatabaseQueue
-rwxr-xr-x[-rw-r--r--] | src/fmdb/FMDatabasePool.h | 27 | ||||
-rwxr-xr-x[-rw-r--r--] | src/fmdb/FMDatabasePool.m | 14 |
2 files changed, 37 insertions, 4 deletions
diff --git a/src/fmdb/FMDatabasePool.h b/src/fmdb/FMDatabasePool.h index 1915858..2ae6fd0 100644..100755 --- a/src/fmdb/FMDatabasePool.h +++ b/src/fmdb/FMDatabasePool.h @@ -39,7 +39,8 @@ __unsafe_unretained id _delegate; NSUInteger _maximumNumberOfDatabasesToCreate; - int _openFlags; + int _openFlags; + NSString *_vfsName; } /** Database path */ @@ -58,6 +59,10 @@ @property (atomic, readonly) int openFlags; +/** Custom virtual file system name */ + +@property (atomic, copy) NSString *vfsName; + ///--------------------- /// @name Initialization @@ -101,6 +106,26 @@ - (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags; +/** Create pool using path and specified flags. + + @param aPath The file path of the database. + @param openFlags Flags passed to the openWithFlags method of the database + @param vfsName The name of a custom virtual file system + + @return The `FMDatabasePool` object. `nil` on error. + */ + +- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags vfs:(NSString *)vfsName; + +/** Returns the Class of 'FMDatabase' subclass, that will be used to instantiate database object. + + Subclasses can override this method to return specified Class of 'FMDatabase' subclass. + + @return The Class of 'FMDatabase' subclass, that will be used to instantiate database object. + */ + ++ (Class)databaseClass; + ///------------------------------------------------ /// @name Keeping track of checked in/out databases ///------------------------------------------------ diff --git a/src/fmdb/FMDatabasePool.m b/src/fmdb/FMDatabasePool.m index e8e52cb..7d0d3dc 100644..100755 --- a/src/fmdb/FMDatabasePool.m +++ b/src/fmdb/FMDatabasePool.m @@ -38,7 +38,7 @@ return FMDBReturnAutoreleased([[self alloc] initWithPath:aPath flags:openFlags]); } -- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags { +- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags vfs:(NSString *)vfsName { self = [super init]; @@ -48,11 +48,16 @@ _databaseInPool = FMDBReturnRetained([NSMutableArray array]); _databaseOutPool = FMDBReturnRetained([NSMutableArray array]); _openFlags = openFlags; + _vfsName = [vfsName copy]; } return self; } +- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags { + return [self initWithPath:aPath flags:openFlags vfs:nil]; +} + - (instancetype)initWithPath:(NSString*)aPath { // default flags for sqlite3_open @@ -63,6 +68,9 @@ return [self initWithPath:nil]; } ++ (Class)databaseClass { + return [FMDatabase class]; +} - (void)dealloc { @@ -128,13 +136,13 @@ } } - db = [FMDatabase databaseWithPath:self->_path]; + db = [[[self class] databaseClass] databaseWithPath:self->_path]; shouldNotifyDelegate = YES; } //This ensures that the db is opened before returning #if SQLITE_VERSION_NUMBER >= 3005000 - BOOL success = [db openWithFlags:self->_openFlags]; + BOOL success = [db openWithFlags:self->_openFlags vfs:self->_vfsName]; #else BOOL success = [db open]; #endif |