Pull out OWSStorage base class for TSStorageManager.
This commit is contained in:
parent
a29c4ce5d6
commit
137fe6fb8b
|
@ -914,10 +914,10 @@ typedef NS_ENUM(NSInteger, CellState) { kArchiveState, kInboxState };
|
|||
|
||||
- (YapDatabaseConnection *)uiDatabaseConnection
|
||||
{
|
||||
NSAssert([NSThread isMainThread], @"Must access uiDatabaseConnection on main thread!");
|
||||
OWSAssert([NSThread isMainThread]);
|
||||
|
||||
if (!_uiDatabaseConnection) {
|
||||
YapDatabase *database = TSStorageManager.sharedManager.database;
|
||||
_uiDatabaseConnection = [database newConnection];
|
||||
_uiDatabaseConnection = [TSStorageManager.sharedManager newDatabaseConnection];
|
||||
[_uiDatabaseConnection beginLongLivedReadTransaction];
|
||||
}
|
||||
return _uiDatabaseConnection;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class OWSSignalServiceProtosEnvelope;
|
||||
@class YapDatabase;
|
||||
@class TSStorageManager;
|
||||
|
||||
// This class is used to write incoming (decrypted, unprocessed)
|
||||
// messages to a durable queue and then process them in batches,
|
||||
|
@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
@interface OWSBatchMessageProcessor : NSObject
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
+ (void)syncRegisterDatabaseExtension:(YapDatabase *)database;
|
||||
+ (void)syncRegisterDatabaseExtension:(TSStorageManager *)storageManager;
|
||||
|
||||
- (void)enqueueEnvelopeData:(NSData *)envelopeData plaintextData:(NSData *_Nullable)plaintextData;
|
||||
- (void)handleAnyUnprocessedEnvelopesAsync;
|
||||
|
|
|
@ -199,15 +199,15 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
}
|
||||
|
||||
|
||||
+ (void)syncRegisterDatabaseExtension:(YapDatabase *)database
|
||||
+ (void)syncRegisterDatabaseExtension:(TSStorageManager *)storageManager
|
||||
{
|
||||
YapDatabaseView *existingView = [database registeredExtension:OWSMessageContentJobFinderExtensionName];
|
||||
YapDatabaseView *existingView = [storageManager registeredExtension:OWSMessageContentJobFinderExtensionName];
|
||||
if (existingView) {
|
||||
OWSFail(@"%@ was already initialized.", OWSMessageContentJobFinderExtensionName);
|
||||
// already initialized
|
||||
return;
|
||||
}
|
||||
[database registerExtension:[self databaseExtension] withName:OWSMessageContentJobFinderExtensionName];
|
||||
[storageManager registerExtension:[self databaseExtension] withName:OWSMessageContentJobFinderExtensionName];
|
||||
}
|
||||
|
||||
#pragma mark Logging
|
||||
|
@ -422,7 +422,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
- (instancetype)initDefault
|
||||
{
|
||||
// For concurrency coherency we use the same dbConnection to persist and read the unprocessed envelopes
|
||||
YapDatabaseConnection *dbConnection = [[TSStorageManager sharedManager].database newConnection];
|
||||
YapDatabaseConnection *dbConnection = [[TSStorageManager sharedManager] newDatabaseConnection];
|
||||
OWSMessageManager *messagesManager = [OWSMessageManager sharedManager];
|
||||
TSStorageManager *storageManager = [TSStorageManager sharedManager];
|
||||
|
||||
|
@ -443,9 +443,9 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
|
||||
#pragma mark - class methods
|
||||
|
||||
+ (void)syncRegisterDatabaseExtension:(YapDatabase *)database
|
||||
+ (void)syncRegisterDatabaseExtension:(TSStorageManager *)storageManager
|
||||
{
|
||||
[OWSMessageContentJobFinder syncRegisterDatabaseExtension:database];
|
||||
[OWSMessageContentJobFinder syncRegisterDatabaseExtension:storageManager];
|
||||
}
|
||||
|
||||
#pragma mark - instance methods
|
||||
|
|
|
@ -191,21 +191,21 @@ static NSString *const OWSDisappearingMessageFinderExpiresAtIndex = @"index_mess
|
|||
// Useful for tests, don't use in app startup path because it's slow.
|
||||
+ (void)blockingRegisterDatabaseExtensions:(TSStorageManager *)storageManager
|
||||
{
|
||||
[storageManager.database registerExtension:[self indexDatabaseExtension]
|
||||
withName:OWSDisappearingMessageFinderExpiresAtIndex];
|
||||
[storageManager registerExtension:[self indexDatabaseExtension]
|
||||
withName:OWSDisappearingMessageFinderExpiresAtIndex];
|
||||
}
|
||||
|
||||
+ (void)asyncRegisterDatabaseExtensions:(TSStorageManager *)storageManager
|
||||
{
|
||||
[storageManager.database asyncRegisterExtension:[self indexDatabaseExtension]
|
||||
withName:OWSDisappearingMessageFinderExpiresAtIndex
|
||||
completionBlock:^(BOOL ready) {
|
||||
if (ready) {
|
||||
DDLogDebug(@"%@ completed registering extension async.", self.logTag);
|
||||
} else {
|
||||
DDLogError(@"%@ failed registering extension async.", self.logTag);
|
||||
}
|
||||
}];
|
||||
[storageManager asyncRegisterExtension:[self indexDatabaseExtension]
|
||||
withName:OWSDisappearingMessageFinderExpiresAtIndex
|
||||
completionBlock:^(BOOL ready) {
|
||||
if (ready) {
|
||||
DDLogDebug(@"%@ completed registering extension async.", self.logTag);
|
||||
} else {
|
||||
DDLogError(@"%@ failed registering extension async.", self.logTag);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -121,21 +121,21 @@ static NSString *const OWSFailedAttachmentDownloadsJobAttachmentStateIndex = @"i
|
|||
// Useful for tests, don't use in app startup path because it's slow.
|
||||
- (void)blockingRegisterDatabaseExtensions
|
||||
{
|
||||
[self.storageManager.database registerExtension:[self indexDatabaseExtension]
|
||||
withName:OWSFailedAttachmentDownloadsJobAttachmentStateIndex];
|
||||
[self.storageManager registerExtension:[self indexDatabaseExtension]
|
||||
withName:OWSFailedAttachmentDownloadsJobAttachmentStateIndex];
|
||||
}
|
||||
|
||||
- (void)asyncRegisterDatabaseExtensions
|
||||
{
|
||||
[self.storageManager.database asyncRegisterExtension:[self indexDatabaseExtension]
|
||||
withName:OWSFailedAttachmentDownloadsJobAttachmentStateIndex
|
||||
completionBlock:^(BOOL ready) {
|
||||
if (ready) {
|
||||
DDLogDebug(@"%@ completed registering extension async.", self.logTag);
|
||||
} else {
|
||||
DDLogError(@"%@ failed registering extension async.", self.logTag);
|
||||
}
|
||||
}];
|
||||
[self.storageManager asyncRegisterExtension:[self indexDatabaseExtension]
|
||||
withName:OWSFailedAttachmentDownloadsJobAttachmentStateIndex
|
||||
completionBlock:^(BOOL ready) {
|
||||
if (ready) {
|
||||
DDLogDebug(@"%@ completed registering extension async.", self.logTag);
|
||||
} else {
|
||||
DDLogError(@"%@ failed registering extension async.", self.logTag);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -130,21 +130,21 @@ static NSString *const OWSFailedMessagesJobMessageStateIndex = @"index_outoing_m
|
|||
// Useful for tests, don't use in app startup path because it's slow.
|
||||
- (void)blockingRegisterDatabaseExtensions
|
||||
{
|
||||
[self.storageManager.database registerExtension:[self indexDatabaseExtension]
|
||||
withName:OWSFailedMessagesJobMessageStateIndex];
|
||||
[self.storageManager registerExtension:[self indexDatabaseExtension]
|
||||
withName:OWSFailedMessagesJobMessageStateIndex];
|
||||
}
|
||||
|
||||
- (void)asyncRegisterDatabaseExtensions
|
||||
{
|
||||
[self.storageManager.database asyncRegisterExtension:[self indexDatabaseExtension]
|
||||
withName:OWSFailedMessagesJobMessageStateIndex
|
||||
completionBlock:^(BOOL ready) {
|
||||
if (ready) {
|
||||
DDLogDebug(@"%@ completed registering extension async.", self.logTag);
|
||||
} else {
|
||||
DDLogError(@"%@ failed registering extension async.", self.logTag);
|
||||
}
|
||||
}];
|
||||
[self.storageManager asyncRegisterExtension:[self indexDatabaseExtension]
|
||||
withName:OWSFailedMessagesJobMessageStateIndex
|
||||
completionBlock:^(BOOL ready) {
|
||||
if (ready) {
|
||||
DDLogDebug(@"%@ completed registering extension async.", self.logTag);
|
||||
} else {
|
||||
DDLogError(@"%@ failed registering extension async.", self.logTag);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -109,7 +109,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
_messageSender = messageSender;
|
||||
|
||||
_dbConnection = storageManager.newDatabaseConnection;
|
||||
_incomingMessageFinder = [[OWSIncomingMessageFinder alloc] initWithDatabase:storageManager.database];
|
||||
_incomingMessageFinder = [[OWSIncomingMessageFinder alloc] initWithStorageManager:storageManager];
|
||||
_blockingManager = [OWSBlockingManager sharedManager];
|
||||
|
||||
OWSSingletonAssert();
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class OWSSignalServiceProtosEnvelope;
|
||||
@class YapDatabase;
|
||||
@class TSStorageManager;
|
||||
|
||||
// This class is used to write incoming (encrypted, unprocessed)
|
||||
// messages to a durable queue and then decrypt them in the order
|
||||
|
@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
@interface OWSMessageReceiver : NSObject
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
+ (void)syncRegisterDatabaseExtension:(YapDatabase *)database;
|
||||
+ (void)syncRegisterDatabaseExtension:(TSStorageManager *)storageManager;
|
||||
|
||||
- (void)handleReceivedEnvelope:(OWSSignalServiceProtosEnvelope *)envelope;
|
||||
- (void)handleAnyUnprocessedEnvelopesAsync;
|
||||
|
|
|
@ -189,17 +189,17 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
});
|
||||
}
|
||||
|
||||
+ (void)syncRegisterDatabaseExtension:(YapDatabase *)database
|
||||
+ (void)syncRegisterDatabaseExtension:(TSStorageManager *)storageManager
|
||||
{
|
||||
[self registerLegacyClasses];
|
||||
|
||||
YapDatabaseView *existingView = [database registeredExtension:OWSMessageDecryptJobFinderExtensionName];
|
||||
YapDatabaseView *existingView = [storageManager registeredExtension:OWSMessageDecryptJobFinderExtensionName];
|
||||
if (existingView) {
|
||||
OWSFail(@"%@ was already initialized.", OWSMessageDecryptJobFinderExtensionName);
|
||||
// already initialized
|
||||
return;
|
||||
}
|
||||
[database registerExtension:[self databaseExtension] withName:OWSMessageDecryptJobFinderExtensionName];
|
||||
[storageManager registerExtension:[self databaseExtension] withName:OWSMessageDecryptJobFinderExtensionName];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -399,7 +399,7 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
- (instancetype)initDefault
|
||||
{
|
||||
// For concurrency coherency we use the same dbConnection to persist and read the unprocessed envelopes
|
||||
YapDatabaseConnection *dbConnection = [[TSStorageManager sharedManager].database newConnection];
|
||||
YapDatabaseConnection *dbConnection = [[TSStorageManager sharedManager] newDatabaseConnection];
|
||||
OWSMessageDecrypter *messageDecrypter = [OWSMessageDecrypter sharedManager];
|
||||
OWSBatchMessageProcessor *batchMessageProcessor = [OWSBatchMessageProcessor sharedInstance];
|
||||
|
||||
|
@ -422,9 +422,9 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
|
||||
#pragma mark - class methods
|
||||
|
||||
+ (void)syncRegisterDatabaseExtension:(YapDatabase *)database
|
||||
+ (void)syncRegisterDatabaseExtension:(TSStorageManager *)storageManager
|
||||
{
|
||||
[OWSMessageDecryptJobFinder syncRegisterDatabaseExtension:database];
|
||||
[OWSMessageDecryptJobFinder syncRegisterDatabaseExtension:storageManager];
|
||||
}
|
||||
|
||||
#pragma mark - instance methods
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class YapDatabase;
|
||||
@class TSStorageManager;
|
||||
@class YapDatabaseReadTransaction;
|
||||
|
||||
@interface OWSIncomingMessageFinder : NSObject
|
||||
|
||||
- (instancetype)initWithDatabase:(YapDatabase *)database NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)initWithStorageManager:(TSStorageManager *)storageManager NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
/**
|
||||
* Must be called before using this finder.
|
||||
|
|
|
@ -18,7 +18,7 @@ NSString *const OWSIncomingMessageFinderColumnSourceDeviceId = @"OWSIncomingMess
|
|||
|
||||
@interface OWSIncomingMessageFinder ()
|
||||
|
||||
@property (nonatomic, readonly) YapDatabase *database;
|
||||
@property (nonatomic, readonly) TSStorageManager *storageManager;
|
||||
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
||||
|
||||
@end
|
||||
|
@ -31,19 +31,19 @@ NSString *const OWSIncomingMessageFinderColumnSourceDeviceId = @"OWSIncomingMess
|
|||
|
||||
- (instancetype)init
|
||||
{
|
||||
OWSAssert([TSStorageManager sharedManager].database != nil);
|
||||
OWSAssert([TSStorageManager sharedManager]);
|
||||
|
||||
return [self initWithDatabase:[TSStorageManager sharedManager].database];
|
||||
return [self initWithStorageManager:[TSStorageManager sharedManager]];
|
||||
}
|
||||
|
||||
- (instancetype)initWithDatabase:(YapDatabase *)database
|
||||
- (instancetype)initWithStorageManager:(TSStorageManager *)storageManager
|
||||
{
|
||||
self = [super init];
|
||||
if (!self) {
|
||||
return self;
|
||||
}
|
||||
|
||||
_database = database;
|
||||
_storageManager = storageManager;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ NSString *const OWSIncomingMessageFinderColumnSourceDeviceId = @"OWSIncomingMess
|
|||
{
|
||||
@synchronized (self) {
|
||||
if (!_dbConnection) {
|
||||
_dbConnection = self.database.newConnection;
|
||||
_dbConnection = [self.storageManager newDatabaseConnection];
|
||||
}
|
||||
}
|
||||
return _dbConnection;
|
||||
|
@ -95,18 +95,18 @@ NSString *const OWSIncomingMessageFinderColumnSourceDeviceId = @"OWSIncomingMess
|
|||
- (void)asyncRegisterExtension
|
||||
{
|
||||
DDLogInfo(@"%@ registering async.", self.logTag);
|
||||
[self.database asyncRegisterExtension:self.indexExtension
|
||||
withName:OWSIncomingMessageFinderExtensionName
|
||||
completionBlock:^(BOOL ready) {
|
||||
DDLogInfo(@"%@ finished registering async.", self.logTag);
|
||||
}];
|
||||
[self.storageManager asyncRegisterExtension:self.indexExtension
|
||||
withName:OWSIncomingMessageFinderExtensionName
|
||||
completionBlock:^(BOOL ready) {
|
||||
DDLogInfo(@"%@ finished registering async.", self.logTag);
|
||||
}];
|
||||
}
|
||||
|
||||
// We should not normally hit this, as we should have prefer registering async, but it is useful for testing.
|
||||
- (void)registerExtension
|
||||
{
|
||||
DDLogError(@"%@ registering SYNC. We should prefer async when possible.", self.logTag);
|
||||
[self.database registerExtension:self.indexExtension withName:OWSIncomingMessageFinderExtensionName];
|
||||
[self.storageManager registerExtension:self.indexExtension withName:OWSIncomingMessageFinderExtensionName];
|
||||
}
|
||||
|
||||
#pragma mark - instance methods
|
||||
|
@ -116,7 +116,7 @@ NSString *const OWSIncomingMessageFinderColumnSourceDeviceId = @"OWSIncomingMess
|
|||
sourceDeviceId:(uint32_t)sourceDeviceId
|
||||
transaction:(YapDatabaseReadTransaction *)transaction
|
||||
{
|
||||
if (![self.database registeredExtension:OWSIncomingMessageFinderExtensionName]) {
|
||||
if (![self.storageManager registeredExtension:OWSIncomingMessageFinderExtensionName]) {
|
||||
OWSFail(@"%@ in %s but extension is not registered", self.logTag, __PRETTY_FUNCTION__);
|
||||
|
||||
// we should be initializing this at startup rather than have an unexpectedly slow lazy setup at random.
|
||||
|
|
|
@ -4,12 +4,6 @@
|
|||
|
||||
#import <YapDatabase/YapDatabaseConnection.h>
|
||||
|
||||
// TODO: Remove this import.
|
||||
#import "YapDatabaseConnection+OWS.h"
|
||||
|
||||
// TODO: Remove this import.
|
||||
#import <YapDatabase/YapDatabase.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol OWSDatabaseConnectionDelegate <NSObject>
|
||||
|
@ -20,6 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
#pragma mark -
|
||||
|
||||
@class YapDatabaseExtension;
|
||||
|
||||
@interface OWSStorage : NSObject
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
@ -36,6 +32,12 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
@property (nullable, nonatomic, readonly) YapDatabaseConnection *dbReadConnection;
|
||||
@property (nullable, nonatomic, readonly) YapDatabaseConnection *dbReadWriteConnection;
|
||||
|
||||
- (BOOL)registerExtension:(YapDatabaseExtension *)extension withName:(NSString *)extensionName;
|
||||
- (void)asyncRegisterExtension:(YapDatabaseExtension *)extension
|
||||
withName:(NSString *)extensionName
|
||||
completionBlock:(nullable void (^)(BOOL ready))completionBlock;
|
||||
- (nullable id)registeredExtension:(NSString *)extensionName;
|
||||
|
||||
#pragma mark - Password
|
||||
|
||||
/**
|
||||
|
|
|
@ -5,28 +5,11 @@
|
|||
#import "OWSStorage.h"
|
||||
#import "AppContext.h"
|
||||
#import "NSData+Base64.h"
|
||||
|
||||
//#import "OWSAnalytics.h"
|
||||
//#import "OWSBatchMessageProcessor.h"
|
||||
//#import "OWSDisappearingMessagesFinder.h"
|
||||
//#import "OWSFailedAttachmentDownloadsJob.h"
|
||||
//#import "OWSFailedMessagesJob.h"
|
||||
//#import "OWSFileSystem.h"
|
||||
//#import "OWSIncomingMessageFinder.h"
|
||||
//#import "OWSMessageReceiver.h"
|
||||
//#import "SignalRecipient.h"
|
||||
#import "TSAttachmentStream.h"
|
||||
|
||||
//#import "TSDatabaseSecondaryIndexes.h"
|
||||
//#import "TSDatabaseView.h"
|
||||
//#import "TSInteraction.h"
|
||||
//#import "TSThread.h"
|
||||
#import "TSStorageManager.h"
|
||||
#import <Curve25519Kit/Randomness.h>
|
||||
#import <SAMKeychain/SAMKeychain.h>
|
||||
|
||||
//#import <YapDatabase/YapDatabaseRelationship.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
NSString *const OWSStorageExceptionName_DatabasePasswordInaccessibleWhileBackgrounded
|
||||
|
@ -34,10 +17,6 @@ NSString *const OWSStorageExceptionName_DatabasePasswordInaccessibleWhileBackgro
|
|||
NSString *const OWSStorageExceptionName_DatabasePasswordUnwritable
|
||||
= @"OWSStorageExceptionName_DatabasePasswordUnwritable";
|
||||
NSString *const OWSStorageExceptionName_NoDatabase = @"OWSStorageExceptionName_NoDatabase";
|
||||
// NSString *const OWSStorageExceptionName_CouldNotMoveDatabaseFile
|
||||
// = @"OWSStorageExceptionName_CouldNotMoveDatabaseFile";
|
||||
// NSString *const OWSStorageExceptionName_CouldNotCreateDatabaseDirectory
|
||||
// = @"OWSStorageExceptionName_CouldNotCreateDatabaseDirectory";
|
||||
|
||||
static NSString *keychainService = @"TSKeyChainService";
|
||||
static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
||||
|
@ -145,7 +124,7 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
- (id)initWithPath:(NSString *)inPath
|
||||
serializer:(YapDatabaseSerializer)inSerializer
|
||||
serializer:(nullable YapDatabaseSerializer)inSerializer
|
||||
deserializer:(YapDatabaseDeserializer)inDeserializer
|
||||
options:(YapDatabaseOptions *)inOptions
|
||||
delegate:(id<OWSDatabaseConnectionDelegate>)delegate NS_DESIGNATED_INITIALIZER;
|
||||
|
@ -157,7 +136,7 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|||
@implementation OWSDatabase
|
||||
|
||||
- (id)initWithPath:(NSString *)inPath
|
||||
serializer:(YapDatabaseSerializer)inSerializer
|
||||
serializer:(nullable YapDatabaseSerializer)inSerializer
|
||||
deserializer:(YapDatabaseDeserializer)inDeserializer
|
||||
options:(YapDatabaseOptions *)inOptions
|
||||
delegate:(id<OWSDatabaseConnectionDelegate>)delegate
|
||||
|
@ -304,7 +283,7 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|||
options.enableMultiProcessSupport = YES;
|
||||
|
||||
OWSDatabase *database = [[OWSDatabase alloc] initWithPath:[self dbPath]
|
||||
serializer:NULL
|
||||
serializer:nil
|
||||
deserializer:[[self class] logOnFailureDeserializer]
|
||||
options:options
|
||||
delegate:self];
|
||||
|
@ -344,23 +323,28 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
|
|||
};
|
||||
}
|
||||
|
||||
//+ (void)protectSignalFiles
|
||||
//{
|
||||
// // The old database location was in the Document directory,
|
||||
// // so protect the database files individually.
|
||||
// [OWSFileSystem protectFolderAtPath:self.legacyDatabaseFilePath];
|
||||
// [OWSFileSystem protectFolderAtPath:self.legacyDatabaseFilePath_SHM];
|
||||
// [OWSFileSystem protectFolderAtPath:self.legacyDatabaseFilePath_WAL];
|
||||
//
|
||||
// // Protect the entire new database directory.
|
||||
// [OWSFileSystem protectFolderAtPath:self.sharedDataDatabaseDirPath];
|
||||
//}
|
||||
|
||||
- (nullable YapDatabaseConnection *)newDatabaseConnection
|
||||
{
|
||||
return self.database.newConnection;
|
||||
}
|
||||
|
||||
- (BOOL)registerExtension:(YapDatabaseExtension *)extension withName:(NSString *)extensionName
|
||||
{
|
||||
return [self.database registerExtension:extension withName:extensionName];
|
||||
}
|
||||
|
||||
- (void)asyncRegisterExtension:(YapDatabaseExtension *)extension
|
||||
withName:(NSString *)extensionName
|
||||
completionBlock:(nullable void (^)(BOOL ready))completionBlock
|
||||
{
|
||||
[self.database asyncRegisterExtension:extension withName:extensionName completionBlock:completionBlock];
|
||||
}
|
||||
|
||||
- (nullable id)registeredExtension:(NSString *)extensionName
|
||||
{
|
||||
return [self.database registeredExtension:extensionName];
|
||||
}
|
||||
|
||||
#pragma mark - Password
|
||||
|
||||
- (void)deleteDatabaseFile
|
||||
|
|
|
@ -95,7 +95,7 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
|
|||
// so long as they don't conflict with any other extension names.
|
||||
YapDatabaseExtension *extension =
|
||||
[[YapDatabaseCrossProcessNotification alloc] initWithIdentifier:@"SignalCrossProcessNotifier"];
|
||||
[[TSStorageManager sharedManager].database registerExtension:extension withName:@"SignalCrossProcessNotifier"];
|
||||
[[TSStorageManager sharedManager] registerExtension:extension withName:@"SignalCrossProcessNotifier"];
|
||||
}
|
||||
|
||||
+ (void)registerMessageDatabaseViewWithName:(NSString *)viewName
|
||||
|
@ -107,7 +107,7 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
|
|||
OWSAssert(viewName.length > 0);
|
||||
OWSAssert((viewGrouping));
|
||||
|
||||
YapDatabaseView *existingView = [[TSStorageManager sharedManager].database registeredExtension:viewName];
|
||||
YapDatabaseView *existingView = [[TSStorageManager sharedManager] registeredExtension:viewName];
|
||||
if (existingView) {
|
||||
OWSFail(@"Registered database view twice: %@", viewName);
|
||||
return;
|
||||
|
@ -126,7 +126,7 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
|
|||
options:options];
|
||||
|
||||
if (async) {
|
||||
[[TSStorageManager sharedManager].database
|
||||
[[TSStorageManager sharedManager]
|
||||
asyncRegisterExtension:view
|
||||
withName:viewName
|
||||
completionBlock:^(BOOL ready) {
|
||||
|
@ -135,7 +135,7 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
|
|||
DDLogInfo(@"%@ asyncRegisterExtension: %@ -> %d", self.logTag, viewName, ready);
|
||||
}];
|
||||
} else {
|
||||
[[TSStorageManager sharedManager].database registerExtension:view withName:viewName];
|
||||
[[TSStorageManager sharedManager] registerExtension:view withName:viewName];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -239,7 +239,7 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
|
|||
+ (void)registerThreadDatabaseView
|
||||
{
|
||||
YapDatabaseView *threadView =
|
||||
[[TSStorageManager sharedManager].database registeredExtension:TSThreadDatabaseViewExtensionName];
|
||||
[[TSStorageManager sharedManager] registeredExtension:TSThreadDatabaseViewExtensionName];
|
||||
if (threadView) {
|
||||
OWSFail(@"Registered database view twice: %@", TSThreadDatabaseViewExtensionName);
|
||||
return;
|
||||
|
@ -285,8 +285,7 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
|
|||
YapDatabaseView *databaseView =
|
||||
[[YapDatabaseAutoView alloc] initWithGrouping:viewGrouping sorting:viewSorting versionTag:@"3" options:options];
|
||||
|
||||
[[TSStorageManager sharedManager].database registerExtension:databaseView
|
||||
withName:TSThreadDatabaseViewExtensionName];
|
||||
[[TSStorageManager sharedManager] registerExtension:databaseView withName:TSThreadDatabaseViewExtensionName];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -399,7 +398,7 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic
|
|||
YapDatabaseView *view =
|
||||
[[YapDatabaseAutoView alloc] initWithGrouping:viewGrouping sorting:viewSorting versionTag:@"3" options:options];
|
||||
|
||||
[[TSStorageManager sharedManager].database
|
||||
[[TSStorageManager sharedManager]
|
||||
asyncRegisterExtension:view
|
||||
withName:TSSecondaryDevicesDatabaseViewExtensionName
|
||||
completionBlock:^(BOOL ready) {
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
#import "OWSStorage.h"
|
||||
#import "TSStorageKeys.h"
|
||||
#import "YapDatabaseConnection+OWS.h"
|
||||
#import <YapDatabase/YapDatabase.h>
|
||||
|
||||
@class ECKeyPair;
|
||||
@class PreKeyRecord;
|
||||
|
@ -31,8 +30,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
- (void)deleteThreadsAndMessages;
|
||||
|
||||
- (nullable YapDatabase *)database;
|
||||
|
||||
// TODO: Deprecate.
|
||||
+ (YapDatabaseConnection *)dbReadConnection;
|
||||
+ (YapDatabaseConnection *)dbReadWriteConnection;
|
||||
|
|
|
@ -34,11 +34,11 @@ NSString *const TSStorageManagerExceptionName_CouldNotCreateDatabaseDirectory
|
|||
static TSStorageManager *sharedManager = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
#if TARGET_OS_IPHONE
|
||||
[TSStorageManager protectSignalFiles];
|
||||
#endif
|
||||
|
||||
sharedManager = [[self alloc] initStorage];
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
[TSStorageManager protectFiles];
|
||||
#endif
|
||||
});
|
||||
return sharedManager;
|
||||
}
|
||||
|
@ -50,9 +50,9 @@ NSString *const TSStorageManagerExceptionName_CouldNotCreateDatabaseDirectory
|
|||
[TSDatabaseView registerThreadInteractionsDatabaseView];
|
||||
[TSDatabaseView registerThreadDatabaseView];
|
||||
[TSDatabaseView registerUnreadDatabaseView];
|
||||
[self.database registerExtension:[TSDatabaseSecondaryIndexes registerTimeStampIndex] withName:@"idx"];
|
||||
[OWSMessageReceiver syncRegisterDatabaseExtension:self.database];
|
||||
[OWSBatchMessageProcessor syncRegisterDatabaseExtension:self.database];
|
||||
[self registerExtension:[TSDatabaseSecondaryIndexes registerTimeStampIndex] withName:@"idx"];
|
||||
[OWSMessageReceiver syncRegisterDatabaseExtension:self];
|
||||
[OWSBatchMessageProcessor syncRegisterDatabaseExtension:self];
|
||||
|
||||
// See comments on OWSDatabaseConnection.
|
||||
//
|
||||
|
@ -94,7 +94,7 @@ NSString *const TSStorageManagerExceptionName_CouldNotCreateDatabaseDirectory
|
|||
[TSDatabaseView asyncRegistrationCompletion];
|
||||
}
|
||||
|
||||
+ (void)protectSignalFiles
|
||||
+ (void)protectFiles
|
||||
{
|
||||
// The old database location was in the Document directory,
|
||||
// so protect the database files individually.
|
||||
|
|
|
@ -8,7 +8,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
#pragma mark - Logging
|
||||
|
||||
@property (nonatomic) NSString *logTag;
|
||||
@property (nonatomic, readonly) NSString *logTag;
|
||||
|
||||
+ (NSString *)logTag;
|
||||
|
||||
|
|
Loading…
Reference in New Issue