Merge branch 'charlesmchen/ud6'
This commit is contained in:
commit
bfbd418cb1
|
@ -1045,8 +1045,8 @@ static NSTimeInterval launchStartedAt;
|
|||
[Environment.shared.contactsManager startObserving];
|
||||
|
||||
// If there were any messages in our local queue which we hadn't yet processed.
|
||||
[[OWSMessageReceiver sharedInstance] handleAnyUnprocessedEnvelopesAsync];
|
||||
[[OWSBatchMessageProcessor sharedInstance] handleAnyUnprocessedEnvelopesAsync];
|
||||
[SSKEnvironment.shared.messageReceiver handleAnyUnprocessedEnvelopesAsync];
|
||||
[SSKEnvironment.shared.batchMessageProcessor handleAnyUnprocessedEnvelopesAsync];
|
||||
|
||||
if (!Environment.shared.preferences.hasGeneratedThumbnails) {
|
||||
[OWSPrimaryStorage.sharedManager.newDatabaseConnection
|
||||
|
|
|
@ -12,13 +12,9 @@ public class MessageFetcherJob: NSObject {
|
|||
private var timer: Timer?
|
||||
|
||||
// MARK: injected dependencies
|
||||
private let networkManager: TSNetworkManager
|
||||
private let messageReceiver: OWSMessageReceiver
|
||||
private let signalService: OWSSignalService
|
||||
|
||||
@objc public init(messageReceiver: OWSMessageReceiver, networkManager: TSNetworkManager, signalService: OWSSignalService) {
|
||||
self.messageReceiver = messageReceiver
|
||||
self.networkManager = networkManager
|
||||
@objc public init(signalService: OWSSignalService) {
|
||||
self.signalService = signalService
|
||||
|
||||
super.init()
|
||||
|
@ -26,6 +22,18 @@ public class MessageFetcherJob: NSObject {
|
|||
SwiftSingletons.register(self)
|
||||
}
|
||||
|
||||
// MARK: Singletons
|
||||
|
||||
private var networkManager: TSNetworkManager {
|
||||
return SSKEnvironment.shared.networkManager
|
||||
}
|
||||
|
||||
private var messageReceiver: OWSMessageReceiver {
|
||||
return SSKEnvironment.shared.messageReceiver
|
||||
}
|
||||
|
||||
// MARK:
|
||||
|
||||
@discardableResult
|
||||
public func run() -> Promise<Void> {
|
||||
Logger.debug("")
|
||||
|
|
|
@ -3912,9 +3912,9 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
|
|||
}
|
||||
|
||||
[OWSPrimaryStorage.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[[OWSBatchMessageProcessor sharedInstance] enqueueEnvelopeData:envelopeData
|
||||
plaintextData:plaintextData
|
||||
transaction:transaction];
|
||||
[SSKEnvironment.shared.batchMessageProcessor enqueueEnvelopeData:envelopeData
|
||||
plaintextData:plaintextData
|
||||
transaction:transaction];
|
||||
}];
|
||||
}
|
||||
|
||||
|
|
|
@ -87,9 +87,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[[OutboundCallInitiator alloc] initWithContactsManager:Environment.shared.contactsManager
|
||||
contactsUpdater:SSKEnvironment.shared.contactsUpdater];
|
||||
|
||||
_messageFetcherJob = [[OWSMessageFetcherJob alloc] initWithMessageReceiver:[OWSMessageReceiver sharedInstance]
|
||||
networkManager:SSKEnvironment.shared.networkManager
|
||||
signalService:[OWSSignalService sharedInstance]];
|
||||
_messageFetcherJob = [[OWSMessageFetcherJob alloc] initWithSignalService:[OWSSignalService sharedInstance]];
|
||||
}
|
||||
|
||||
- (OWSWebRTCCallMessageHandler *)callMessageHandler
|
||||
|
|
|
@ -10,9 +10,12 @@
|
|||
#import <SignalMessaging/OWSProfileManager.h>
|
||||
#import <SignalMessaging/SignalMessaging-Swift.h>
|
||||
#import <SignalServiceKit/OWSBackgroundTask.h>
|
||||
#import <SignalServiceKit/OWSBatchMessageProcessor.h>
|
||||
#import <SignalServiceKit/OWSBlockingManager.h>
|
||||
#import <SignalServiceKit/OWSIdentityManager.h>
|
||||
#import <SignalServiceKit/OWSMessageDecrypter.h>
|
||||
#import <SignalServiceKit/OWSMessageManager.h>
|
||||
#import <SignalServiceKit/OWSMessageReceiver.h>
|
||||
#import <SignalServiceKit/OWSStorage.h>
|
||||
#import <SignalServiceKit/SSKEnvironment.h>
|
||||
|
||||
|
@ -55,6 +58,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
OWSBlockingManager *blockingManager = [[OWSBlockingManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||
OWSIdentityManager *identityManager = [[OWSIdentityManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||
id<OWSUDManager> udManager = [[OWSUDManagerImpl alloc] initWithPrimaryStorage:primaryStorage];
|
||||
OWSMessageDecrypter *messageDecrypter = [[OWSMessageDecrypter alloc] initWithPrimaryStorage:primaryStorage];
|
||||
OWSBatchMessageProcessor *batchMessageProcessor =
|
||||
[[OWSBatchMessageProcessor alloc] initWithPrimaryStorage:primaryStorage];
|
||||
OWSMessageReceiver *messageReceiver = [[OWSMessageReceiver alloc] initWithPrimaryStorage:primaryStorage];
|
||||
|
||||
[Environment setShared:[[Environment alloc] initWithPreferences:preferences]];
|
||||
|
||||
|
@ -67,7 +74,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
messageManager:messageManager
|
||||
blockingManager:blockingManager
|
||||
identityManager:identityManager
|
||||
udManager:udManager]];
|
||||
udManager:udManager
|
||||
messageDecrypter:messageDecrypter
|
||||
batchMessageProcessor:batchMessageProcessor
|
||||
messageReceiver:messageReceiver]];
|
||||
|
||||
appSpecificSingletonBlock();
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#import "OWSMessageReceiver.h"
|
||||
#import "OWSPrimaryStorage+SessionStore.h"
|
||||
#import "OWSPrimaryStorage.h"
|
||||
#import "SSKEnvironment.h"
|
||||
#import "TSContactThread.h"
|
||||
#import "TSDatabaseView.h"
|
||||
#import "TSErrorMessage_privateConstructor.h"
|
||||
|
@ -102,7 +103,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[self.thread receivedMessagesForInvalidKey:newKey];
|
||||
|
||||
for (TSInvalidIdentityKeyReceivingErrorMessage *errorMessage in messagesToDecrypt) {
|
||||
[[OWSMessageReceiver sharedInstance] handleReceivedEnvelopeData:errorMessage.envelopeData];
|
||||
[SSKEnvironment.shared.messageReceiver handleReceivedEnvelopeData:errorMessage.envelopeData];
|
||||
|
||||
// Here we remove the existing error message because handleReceivedEnvelope will either
|
||||
// 1.) succeed and create a new successful message in the thread or...
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class OWSPrimaryStorage;
|
||||
@class OWSStorage;
|
||||
@class SSKProtoEnvelope;
|
||||
@class YapDatabaseReadWriteTransaction;
|
||||
|
@ -13,7 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
// in the order in which they were received.
|
||||
@interface OWSBatchMessageProcessor : NSObject
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
+ (NSString *)databaseExtensionName;
|
||||
+ (void)asyncRegisterDatabaseExtension:(OWSStorage *)storage;
|
||||
|
|
|
@ -231,15 +231,13 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
|
||||
@interface OWSMessageContentQueue : NSObject
|
||||
|
||||
@property (nonatomic, readonly) OWSMessageManager *messagesManager;
|
||||
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
||||
@property (nonatomic, readonly) OWSMessageContentJobFinder *finder;
|
||||
@property (nonatomic) BOOL isDrainingQueue;
|
||||
@property (atomic) BOOL isAppInBackground;
|
||||
|
||||
- (instancetype)initWithMessagesManager:(OWSMessageManager *)messagesManager
|
||||
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||
finder:(OWSMessageContentJobFinder *)finder NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)initWithDBConnection:(YapDatabaseConnection *)dbConnection
|
||||
finder:(OWSMessageContentJobFinder *)finder NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
@ -248,9 +246,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
|
||||
@implementation OWSMessageContentQueue
|
||||
|
||||
- (instancetype)initWithMessagesManager:(OWSMessageManager *)messagesManager
|
||||
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||
finder:(OWSMessageContentJobFinder *)finder
|
||||
- (instancetype)initWithDBConnection:(YapDatabaseConnection *)dbConnection finder:(OWSMessageContentJobFinder *)finder
|
||||
{
|
||||
OWSSingletonAssert();
|
||||
|
||||
|
@ -259,8 +255,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
return self;
|
||||
}
|
||||
|
||||
_messagesManager = messagesManager;
|
||||
_dbConnection = [primaryStorage newDatabaseConnection];
|
||||
_dbConnection = dbConnection;
|
||||
_finder = finder;
|
||||
_isDrainingQueue = NO;
|
||||
|
||||
|
@ -286,6 +281,15 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
#pragma mark - Singletons
|
||||
|
||||
- (OWSMessageManager *)messageManager
|
||||
{
|
||||
OWSAssertDebug(SSKEnvironment.shared.messageManager);
|
||||
|
||||
return SSKEnvironment.shared.messageManager;
|
||||
}
|
||||
|
||||
#pragma mark - Notifications
|
||||
|
||||
- (void)applicationWillEnterForeground:(NSNotification *)notification
|
||||
|
@ -399,9 +403,9 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
if (!envelope) {
|
||||
reportFailure(transaction);
|
||||
} else {
|
||||
[self.messagesManager processEnvelope:envelope
|
||||
plaintextData:job.plaintextData
|
||||
transaction:transaction];
|
||||
[self.messageManager processEnvelope:envelope
|
||||
plaintextData:job.plaintextData
|
||||
transaction:transaction];
|
||||
}
|
||||
} @catch (NSException *exception) {
|
||||
OWSFailDebug(@"Received an invalid envelope: %@", exception.debugDescription);
|
||||
|
@ -437,9 +441,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
|
||||
@implementation OWSBatchMessageProcessor
|
||||
|
||||
- (instancetype)initWithDBConnection:(YapDatabaseConnection *)dbConnection
|
||||
messagesManager:(OWSMessageManager *)messagesManager
|
||||
primaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||
{
|
||||
OWSSingletonAssert();
|
||||
|
||||
|
@ -448,38 +450,17 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo
|
|||
return self;
|
||||
}
|
||||
|
||||
// For coherency we use the same dbConnection to persist and read the unprocessed envelopes
|
||||
YapDatabaseConnection *dbConnection = [primaryStorage newDatabaseConnection];
|
||||
OWSMessageContentJobFinder *finder = [[OWSMessageContentJobFinder alloc] initWithDBConnection:dbConnection];
|
||||
OWSMessageContentQueue *processingQueue = [[OWSMessageContentQueue alloc] initWithMessagesManager:messagesManager
|
||||
primaryStorage:primaryStorage
|
||||
finder:finder];
|
||||
OWSMessageContentQueue *processingQueue =
|
||||
[[OWSMessageContentQueue alloc] initWithDBConnection:dbConnection finder:finder];
|
||||
|
||||
_processingQueue = processingQueue;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initDefault
|
||||
{
|
||||
// For concurrency coherency we use the same dbConnection to persist and read the unprocessed envelopes
|
||||
YapDatabaseConnection *dbConnection = [[OWSPrimaryStorage sharedManager] newDatabaseConnection];
|
||||
OWSMessageManager *messagesManager = [OWSMessageManager sharedManager];
|
||||
OWSPrimaryStorage *primaryStorage = [OWSPrimaryStorage sharedManager];
|
||||
|
||||
return [self initWithDBConnection:dbConnection messagesManager:messagesManager primaryStorage:primaryStorage];
|
||||
}
|
||||
|
||||
+ (instancetype)sharedInstance
|
||||
{
|
||||
static OWSBatchMessageProcessor *sharedInstance;
|
||||
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
sharedInstance = [[self alloc] initDefault];
|
||||
});
|
||||
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
#pragma mark - class methods
|
||||
|
||||
+ (NSString *)databaseExtensionName
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class OWSPrimaryStorage;
|
||||
@class SSKProtoEnvelope;
|
||||
@class YapDatabaseReadWriteTransaction;
|
||||
|
||||
|
@ -15,7 +16,7 @@ typedef void (^DecryptFailureBlock)(void);
|
|||
@interface OWSMessageDecrypter : OWSMessageHandler
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
+ (instancetype)sharedManager;
|
||||
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
// decryptEnvelope: can be called from any thread.
|
||||
// successBlock & failureBlock will be called an arbitrary thread.
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#import "TSPreKeyManager.h"
|
||||
#import <AxolotlKit/AxolotlExceptions.h>
|
||||
#import <AxolotlKit/SessionCipher.h>
|
||||
#import <SignalMetadataKit/SignalMetadataKit-Swift.h>
|
||||
#import <SignalServiceKit/SignalServiceKit-Swift.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
@ -38,28 +39,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
@implementation OWSMessageDecrypter
|
||||
|
||||
+ (instancetype)sharedManager
|
||||
{
|
||||
static OWSMessageDecrypter *sharedMyManager = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
sharedMyManager = [[self alloc] initDefault];
|
||||
});
|
||||
return sharedMyManager;
|
||||
}
|
||||
|
||||
- (instancetype)initDefault
|
||||
{
|
||||
OWSPrimaryStorage *primaryStorage = [OWSPrimaryStorage sharedManager];
|
||||
OWSIdentityManager *identityManager = [OWSIdentityManager sharedManager];
|
||||
OWSBlockingManager *blockingManager = [OWSBlockingManager sharedManager];
|
||||
|
||||
return [self initWithPrimaryStorage:primaryStorage identityManager:identityManager blockingManager:blockingManager];
|
||||
}
|
||||
|
||||
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||
identityManager:(OWSIdentityManager *)identityManager
|
||||
blockingManager:(OWSBlockingManager *)blockingManager
|
||||
{
|
||||
self = [super init];
|
||||
|
||||
|
@ -68,8 +48,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
|
||||
_primaryStorage = primaryStorage;
|
||||
_identityManager = identityManager;
|
||||
_blockingManager = blockingManager;
|
||||
|
||||
_dbConnection = primaryStorage.newDatabaseConnection;
|
||||
|
||||
|
@ -78,13 +56,29 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Singletons
|
||||
|
||||
- (OWSBlockingManager *)blockingManager
|
||||
{
|
||||
OWSAssertDebug(SSKEnvironment.shared.blockingManager);
|
||||
|
||||
return SSKEnvironment.shared.blockingManager;
|
||||
}
|
||||
|
||||
- (OWSIdentityManager *)identityManager
|
||||
{
|
||||
OWSAssertDebug(SSKEnvironment.shared.identityManager);
|
||||
|
||||
return SSKEnvironment.shared.identityManager;
|
||||
}
|
||||
|
||||
#pragma mark - Blocking
|
||||
|
||||
- (BOOL)isEnvelopeSenderBlocked:(SSKProtoEnvelope *)envelope
|
||||
{
|
||||
OWSAssertDebug(envelope);
|
||||
|
||||
return [_blockingManager.blockedPhoneNumbers containsObject:envelope.source];
|
||||
return [self.blockingManager.blockedPhoneNumbers containsObject:envelope.source];
|
||||
}
|
||||
|
||||
#pragma mark - Decryption
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class OWSPrimaryStorage;
|
||||
@class OWSStorage;
|
||||
|
||||
// This class is used to write incoming (encrypted, unprocessed)
|
||||
|
@ -12,7 +13,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
// are forwarded to OWSBatchMessageProcessor.
|
||||
@interface OWSMessageReceiver : NSObject
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
+ (NSString *)databaseExtensionName;
|
||||
+ (void)asyncRegisterDatabaseExtension:(OWSStorage *)storage;
|
||||
|
|
|
@ -221,14 +221,12 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
|
||||
@interface OWSMessageDecryptQueue : NSObject
|
||||
|
||||
@property (nonatomic, readonly) OWSMessageDecrypter *messageDecrypter;
|
||||
@property (nonatomic, readonly) OWSBatchMessageProcessor *batchMessageProcessor;
|
||||
@property (nonatomic, readonly) YapDatabaseConnection *dbConnection;
|
||||
@property (nonatomic, readonly) OWSMessageDecryptJobFinder *finder;
|
||||
@property (nonatomic) BOOL isDrainingQueue;
|
||||
|
||||
- (instancetype)initWithMessageDecrypter:(OWSMessageDecrypter *)messageDecrypter
|
||||
batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor
|
||||
finder:(OWSMessageDecryptJobFinder *)finder NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)initWithDBConnection:(YapDatabaseConnection *)dbConnection
|
||||
finder:(OWSMessageDecryptJobFinder *)finder NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
@end
|
||||
|
@ -237,9 +235,7 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
|
||||
@implementation OWSMessageDecryptQueue
|
||||
|
||||
- (instancetype)initWithMessageDecrypter:(OWSMessageDecrypter *)messageDecrypter
|
||||
batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor
|
||||
finder:(OWSMessageDecryptJobFinder *)finder
|
||||
- (instancetype)initWithDBConnection:(YapDatabaseConnection *)dbConnection finder:(OWSMessageDecryptJobFinder *)finder
|
||||
{
|
||||
OWSSingletonAssert();
|
||||
|
||||
|
@ -248,8 +244,7 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
return self;
|
||||
}
|
||||
|
||||
_messageDecrypter = messageDecrypter;
|
||||
_batchMessageProcessor = batchMessageProcessor;
|
||||
_dbConnection = dbConnection;
|
||||
_finder = finder;
|
||||
_isDrainingQueue = NO;
|
||||
|
||||
|
@ -260,7 +255,23 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - instance methods
|
||||
#pragma mark - Singletons
|
||||
|
||||
- (OWSMessageDecrypter *)messageDecrypter
|
||||
{
|
||||
OWSAssertDebug(SSKEnvironment.shared.messageDecrypter);
|
||||
|
||||
return SSKEnvironment.shared.messageDecrypter;
|
||||
}
|
||||
|
||||
- (OWSBatchMessageProcessor *)batchMessageProcessor
|
||||
{
|
||||
OWSAssertDebug(SSKEnvironment.shared.batchMessageProcessor);
|
||||
|
||||
return SSKEnvironment.shared.batchMessageProcessor;
|
||||
}
|
||||
|
||||
#pragma mark - Instance methods
|
||||
|
||||
- (dispatch_queue_t)serialQueue
|
||||
{
|
||||
|
@ -382,9 +393,7 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
|
||||
@implementation OWSMessageReceiver
|
||||
|
||||
- (instancetype)initWithDBConnection:(YapDatabaseConnection *)dbConnection
|
||||
messageDecrypter:(OWSMessageDecrypter *)messageDecrypter
|
||||
batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor
|
||||
- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage
|
||||
{
|
||||
OWSSingletonAssert();
|
||||
|
||||
|
@ -393,41 +402,17 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin
|
|||
return self;
|
||||
}
|
||||
|
||||
// For coherency we use the same dbConnection to persist and read the unprocessed envelopes
|
||||
YapDatabaseConnection *dbConnection = [primaryStorage newDatabaseConnection];
|
||||
OWSMessageDecryptJobFinder *finder = [[OWSMessageDecryptJobFinder alloc] initWithDBConnection:dbConnection];
|
||||
OWSMessageDecryptQueue *processingQueue =
|
||||
[[OWSMessageDecryptQueue alloc] initWithMessageDecrypter:messageDecrypter
|
||||
batchMessageProcessor:batchMessageProcessor
|
||||
finder:finder];
|
||||
[[OWSMessageDecryptQueue alloc] initWithDBConnection:dbConnection finder:finder];
|
||||
|
||||
_processingQueue = processingQueue;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initDefault
|
||||
{
|
||||
// For concurrency coherency we use the same dbConnection to persist and read the unprocessed envelopes
|
||||
YapDatabaseConnection *dbConnection = [[OWSPrimaryStorage sharedManager] newDatabaseConnection];
|
||||
OWSMessageDecrypter *messageDecrypter = [OWSMessageDecrypter sharedManager];
|
||||
OWSBatchMessageProcessor *batchMessageProcessor = [OWSBatchMessageProcessor sharedInstance];
|
||||
|
||||
return [self initWithDBConnection:dbConnection
|
||||
messageDecrypter:messageDecrypter
|
||||
batchMessageProcessor:batchMessageProcessor];
|
||||
}
|
||||
|
||||
+ (instancetype)sharedInstance
|
||||
{
|
||||
static OWSMessageReceiver *sharedInstance;
|
||||
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
sharedInstance = [[self alloc] initDefault];
|
||||
});
|
||||
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
#pragma mark - class methods
|
||||
|
||||
+ (NSString *)databaseExtensionName
|
||||
|
|
|
@ -147,7 +147,6 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
|
|||
@interface TSSocketManager ()
|
||||
|
||||
@property (nonatomic, readonly) OWSSignalService *signalService;
|
||||
@property (nonatomic, readonly) OWSMessageReceiver *messageReceiver;
|
||||
|
||||
// This class has a few "tiers" of state.
|
||||
//
|
||||
|
@ -218,7 +217,6 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
|
|||
OWSAssertIsOnMainThread();
|
||||
|
||||
_signalService = [OWSSignalService sharedInstance];
|
||||
_messageReceiver = [OWSMessageReceiver sharedInstance];
|
||||
_state = SocketManagerStateClosed;
|
||||
_socketMessageMap = [NSMutableDictionary new];
|
||||
|
||||
|
@ -270,6 +268,13 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
|
|||
return sharedMyManager;
|
||||
}
|
||||
|
||||
#pragma mark - Dependencies
|
||||
|
||||
- (OWSMessageReceiver *)messageReceiver
|
||||
{
|
||||
return SSKEnvironment.shared.messageReceiver;
|
||||
}
|
||||
|
||||
#pragma mark - Manage Socket
|
||||
|
||||
- (void)ensureWebsocketIsOpen
|
||||
|
|
|
@ -5,9 +5,12 @@
|
|||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class ContactsUpdater;
|
||||
@class OWSBatchMessageProcessor;
|
||||
@class OWSBlockingManager;
|
||||
@class OWSIdentityManager;
|
||||
@class OWSMessageDecrypter;
|
||||
@class OWSMessageManager;
|
||||
@class OWSMessageReceiver;
|
||||
@class OWSMessageSender;
|
||||
@class OWSPrimaryStorage;
|
||||
@class TSNetworkManager;
|
||||
|
@ -30,7 +33,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
messageManager:(OWSMessageManager *)messageManager
|
||||
blockingManager:(OWSBlockingManager *)blockingManager
|
||||
identityManager:(OWSIdentityManager *)identityManager
|
||||
udManager:(id<OWSUDManager>)udManager NS_DESIGNATED_INITIALIZER;
|
||||
udManager:(id<OWSUDManager>)udManager
|
||||
messageDecrypter:(OWSMessageDecrypter *)messageDecrypter
|
||||
batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor
|
||||
messageReceiver:(OWSMessageReceiver *)messageReceiver NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
|
@ -53,6 +59,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
@property (nonatomic, readonly) OWSBlockingManager *blockingManager;
|
||||
@property (nonatomic, readonly) OWSIdentityManager *identityManager;
|
||||
@property (nonatomic, readonly) id<OWSUDManager> udManager;
|
||||
@property (nonatomic, readonly) OWSMessageDecrypter *messageDecrypter;
|
||||
@property (nonatomic, readonly) OWSBatchMessageProcessor *batchMessageProcessor;
|
||||
@property (nonatomic, readonly) OWSMessageReceiver *messageReceiver;
|
||||
|
||||
// This property is configured after Environment is created.
|
||||
@property (atomic, nullable) id<OWSCallMessageHandler> callMessageHandler;
|
||||
|
|
|
@ -22,6 +22,9 @@ static SSKEnvironment *sharedSSKEnvironment;
|
|||
@property (nonatomic) OWSBlockingManager *blockingManager;
|
||||
@property (nonatomic) OWSIdentityManager *identityManager;
|
||||
@property (nonatomic) id<OWSUDManager> udManager;
|
||||
@property (nonatomic) OWSMessageDecrypter *messageDecrypter;
|
||||
@property (nonatomic) OWSBatchMessageProcessor *batchMessageProcessor;
|
||||
@property (nonatomic) OWSMessageReceiver *messageReceiver;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -43,6 +46,9 @@ static SSKEnvironment *sharedSSKEnvironment;
|
|||
blockingManager:(OWSBlockingManager *)blockingManager
|
||||
identityManager:(OWSIdentityManager *)identityManager
|
||||
udManager:(id<OWSUDManager>)udManager
|
||||
messageDecrypter:(OWSMessageDecrypter *)messageDecrypter
|
||||
batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor
|
||||
messageReceiver:(OWSMessageReceiver *)messageReceiver
|
||||
{
|
||||
self = [super init];
|
||||
if (!self) {
|
||||
|
@ -59,6 +65,9 @@ static SSKEnvironment *sharedSSKEnvironment;
|
|||
OWSAssertDebug(blockingManager);
|
||||
OWSAssertDebug(identityManager);
|
||||
OWSAssertDebug(udManager);
|
||||
OWSAssertDebug(messageDecrypter);
|
||||
OWSAssertDebug(batchMessageProcessor);
|
||||
OWSAssertDebug(messageReceiver);
|
||||
|
||||
_contactsManager = contactsManager;
|
||||
_messageSender = messageSender;
|
||||
|
@ -70,6 +79,9 @@ static SSKEnvironment *sharedSSKEnvironment;
|
|||
_blockingManager = blockingManager;
|
||||
_identityManager = identityManager;
|
||||
_udManager = udManager;
|
||||
_messageDecrypter = messageDecrypter;
|
||||
_batchMessageProcessor = batchMessageProcessor;
|
||||
_messageReceiver = messageReceiver;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
//
|
||||
|
||||
#import "MockSSKEnvironment.h"
|
||||
#import "OWSBatchMessageProcessor.h"
|
||||
#import "OWSBlockingManager.h"
|
||||
#import "OWSFakeCallMessageHandler.h"
|
||||
#import "OWSFakeContactsManager.h"
|
||||
|
@ -12,7 +13,9 @@
|
|||
#import "OWSFakeNotificationsManager.h"
|
||||
#import "OWSFakeProfileManager.h"
|
||||
#import "OWSIdentityManager.h"
|
||||
#import "OWSMessageDecrypter.h"
|
||||
#import "OWSMessageManager.h"
|
||||
#import "OWSMessageReceiver.h"
|
||||
#import "OWSPrimaryStorage.h"
|
||||
#import <SignalServiceKit/SignalServiceKit-Swift.h>
|
||||
|
||||
|
@ -49,6 +52,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
OWSBlockingManager *blockingManager = [[OWSBlockingManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||
OWSIdentityManager *identityManager = [[OWSIdentityManager alloc] initWithPrimaryStorage:primaryStorage];
|
||||
id<OWSUDManager> udManager = [[OWSUDManagerImpl alloc] initWithPrimaryStorage:primaryStorage];
|
||||
OWSMessageDecrypter *messageDecrypter = [[OWSMessageDecrypter alloc] initWithPrimaryStorage:primaryStorage];
|
||||
OWSBatchMessageProcessor *batchMessageProcessor =
|
||||
[[OWSBatchMessageProcessor alloc] initWithPrimaryStorage:primaryStorage];
|
||||
OWSMessageReceiver *messageReceiver = [[OWSMessageReceiver alloc] initWithPrimaryStorage:primaryStorage];
|
||||
|
||||
self = [super initWithContactsManager:contactsManager
|
||||
messageSender:messageSender
|
||||
|
@ -59,7 +66,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
messageManager:messageManager
|
||||
blockingManager:blockingManager
|
||||
identityManager:identityManager
|
||||
udManager:udManager];
|
||||
udManager:udManager
|
||||
messageDecrypter:messageDecrypter
|
||||
batchMessageProcessor:batchMessageProcessor
|
||||
messageReceiver:messageReceiver];
|
||||
if (!self) {
|
||||
return nil;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue