Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ccgus/fmdb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Bernard <pierre.bernard@web.de>2016-04-05 14:46:15 +0300
committerPierre Bernard <pierre.bernard@web.de>2016-04-05 14:46:15 +0300
commit9c9e057533978ab5bb1ac1d61fecfa3aa9189603 (patch)
tree39dddb0eba67c1127d5dae75d2e6d6267fa64ddd
parent4d7c8842ae0254b2b645d52d59462ff62d0badec (diff)
Support for custom database class and vfsName
Brings API in line with FMDatabaseQueue
-rwxr-xr-x[-rw-r--r--]src/fmdb/FMDatabasePool.h27
-rwxr-xr-x[-rw-r--r--]src/fmdb/FMDatabasePool.m14
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