From e7df2511a449617110610f90cd0124a30ac8b93b Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 29 Nov 2017 11:44:58 -0500 Subject: [PATCH] Register CrossProcessNotifier. --- SignalServiceKit/src/Storage/TSDatabaseView.h | 2 ++ SignalServiceKit/src/Storage/TSDatabaseView.m | 10 ++++++++++ SignalServiceKit/src/Storage/TSStorageManager.m | 1 + 3 files changed, 13 insertions(+) diff --git a/SignalServiceKit/src/Storage/TSDatabaseView.h b/SignalServiceKit/src/Storage/TSDatabaseView.h index f22d9f80a..19a81af67 100644 --- a/SignalServiceKit/src/Storage/TSDatabaseView.h +++ b/SignalServiceKit/src/Storage/TSDatabaseView.h @@ -25,6 +25,8 @@ extern NSString *const TSSecondaryDevicesDatabaseViewExtensionName; // This method can be called from any thread. + (BOOL)hasPendingViewRegistrations; ++ (void)registerCrossProcessNotifier; + // This method must be called _AFTER_ registerThreadInteractionsDatabaseView. + (void)registerThreadDatabaseView; diff --git a/SignalServiceKit/src/Storage/TSDatabaseView.m b/SignalServiceKit/src/Storage/TSDatabaseView.m index 1969b3b23..77f81caf3 100644 --- a/SignalServiceKit/src/Storage/TSDatabaseView.m +++ b/SignalServiceKit/src/Storage/TSDatabaseView.m @@ -11,6 +11,7 @@ #import "TSOutgoingMessage.h" #import "TSStorageManager.h" #import "TSThread.h" +#import #import NSString *const kNSNotificationName_DatabaseViewRegistrationComplete = @@ -88,6 +89,15 @@ NSString *const TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevic } } ++ (void)registerCrossProcessNotifier +{ + // I don't think the identifier and name of this extension matter for our purposes, + // 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"]; +} + + (void)registerMessageDatabaseViewWithName:(NSString *)viewName viewGrouping:(YapDatabaseViewGrouping *)viewGrouping version:(NSString *)version diff --git a/SignalServiceKit/src/Storage/TSStorageManager.m b/SignalServiceKit/src/Storage/TSStorageManager.m index 57ae4d62f..b1877cb59 100644 --- a/SignalServiceKit/src/Storage/TSStorageManager.m +++ b/SignalServiceKit/src/Storage/TSStorageManager.m @@ -310,6 +310,7 @@ void setDatabaseInitialized() - (void)setupDatabaseWithSafeBlockingMigrations:(void (^_Nonnull)())safeBlockingMigrationsBlock { // Synchronously register extensions which are essential for views. + [TSDatabaseView registerCrossProcessNotifier]; [TSDatabaseView registerThreadInteractionsDatabaseView]; [TSDatabaseView registerThreadDatabaseView]; [TSDatabaseView registerUnreadDatabaseView];