Move socket manager to hang on SSKEnvironment.

pull/1/head
Matthew Chen 6 years ago
parent 0567a3d24d
commit c137e95ae5

@ -133,7 +133,7 @@ NS_ASSUME_NONNULL_BEGIN
= NSLocalizedString(@"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_AUTO_ENABLED",
@"Table footer for the 'censorship circumvention' section shown when censorship circumvention has been "
@"auto-enabled based on local phone number.");
} else if ([TSSocketManager sharedManager].state == SocketManagerStateOpen) {
} else if (TSSocketManager.shared.state == SocketManagerStateOpen) {
censorshipSection.footerTitle
= NSLocalizedString(@"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_WEBSOCKET_CONNECTED",
@"Table footer for the 'censorship circumvention' section shown when the app is connected to the "
@ -162,9 +162,8 @@ NS_ASSUME_NONNULL_BEGIN
// internet connection.
BOOL isManualCensorshipCircumventionOnEnabled
= (OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated
|| (!OWSSignalService.sharedInstance.hasCensoredPhoneNumber &&
[TSSocketManager sharedManager].state != SocketManagerStateOpen
&& weakSelf.reachability.isReachable));
|| (!OWSSignalService.sharedInstance.hasCensoredPhoneNumber
&& TSSocketManager.shared.state != SocketManagerStateOpen && weakSelf.reachability.isReachable));
BOOL isCensorshipCircumventionOn = NO;
if (OWSSignalService.sharedInstance.hasCensoredPhoneNumber) {
isCensorshipCircumventionOn = YES;

@ -148,7 +148,7 @@
@"Error indicating that this device is no longer registered.");
accessoryLabel.textColor = [UIColor ows_redColor];
} else {
switch ([TSSocketManager sharedManager].state) {
switch (TSSocketManager.shared.state) {
case SocketManagerStateClosed:
accessoryLabel.text = NSLocalizedString(@"NETWORK_STATUS_OFFLINE", @"");
accessoryLabel.textColor = [UIColor ows_redColor];

@ -172,7 +172,7 @@ NS_ASSUME_NONNULL_BEGIN
// The service implementation of the socket connection caches the linked device state,
// so all sync message sends will fail on the socket until it is cycled.
[TSSocketManager.sharedManager cycleSocket];
[TSSocketManager.shared cycleSocket];
});
}
failure:^(NSError *error) {

@ -86,7 +86,7 @@ static double const STALLED_PROGRESS = 0.9;
return;
}
switch ([TSSocketManager sharedManager].state) {
switch (TSSocketManager.shared.state) {
case SocketManagerStateClosed:
if (_socketStatusView == nil) {
[self initializeSocketStatusBar];

@ -18,6 +18,7 @@
#import <SignalServiceKit/OWSMessageReceiver.h>
#import <SignalServiceKit/OWSStorage.h>
#import <SignalServiceKit/SSKEnvironment.h>
#import <SignalServiceKit/TSSocketManager.h>
NS_ASSUME_NONNULL_BEGIN
@ -62,6 +63,7 @@ NS_ASSUME_NONNULL_BEGIN
OWSBatchMessageProcessor *batchMessageProcessor =
[[OWSBatchMessageProcessor alloc] initWithPrimaryStorage:primaryStorage];
OWSMessageReceiver *messageReceiver = [[OWSMessageReceiver alloc] initWithPrimaryStorage:primaryStorage];
TSSocketManager *socketManager = [[TSSocketManager alloc] init];
[Environment setShared:[[Environment alloc] initWithPreferences:preferences]];
@ -77,7 +79,8 @@ NS_ASSUME_NONNULL_BEGIN
udManager:udManager
messageDecrypter:messageDecrypter
batchMessageProcessor:batchMessageProcessor
messageReceiver:messageReceiver]];
messageReceiver:messageReceiver
socketManager:socketManager]];
appSpecificSingletonBlock();

@ -1006,7 +1006,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
// TODO: UD sends over websocket.
if (!messageSend.hasWebsocketSendFailed && TSSocketManager.canMakeRequests && !messageSend.isUDSend) {
[TSSocketManager.sharedManager makeRequest:request
[TSSocketManager.shared makeRequest:request
success:^(id _Nullable responseObject) {
[self messageSendDidSucceed:messageSend deviceMessages:deviceMessages];
}

@ -26,9 +26,9 @@ typedef void (^TSSocketMessageFailure)(NSInteger statusCode, NSData *_Nullable r
@property (nonatomic, readonly) SocketManagerState state;
+ (instancetype)sharedManager;
+ (instancetype)shared;
- (instancetype)init NS_UNAVAILABLE;
- (instancetype)init NS_DESIGNATED_INITIALIZER;
// If the app is in the foreground, we'll try to open the socket unless it's already
// open or connecting.

@ -146,8 +146,6 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
// TSSocketManager's properties should only be accessed from the main thread.
@interface TSSocketManager ()
@property (nonatomic, readonly) OWSSignalService *signalService;
// This class has a few "tiers" of state.
//
// The first tier is the actual websocket and the timers used
@ -216,7 +214,6 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
OWSAssertIsOnMainThread();
_signalService = [OWSSignalService sharedInstance];
_state = SocketManagerStateClosed;
_socketMessageMap = [NSMutableDictionary new];
@ -230,6 +227,15 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
#pragma mark - Dependencies
- (OWSSignalService *)signalService
{
return [OWSSignalService sharedInstance];
}
#pragma mark -
// We want to observe these notifications lazily to avoid accessing
// the data store in [application: didFinishLaunchingWithOptions:].
- (void)observeNotificationsIfNecessary
@ -259,13 +265,11 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
object:nil];
}
+ (instancetype)sharedManager {
static TSSocketManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [self new];
});
return sharedMyManager;
+ (instancetype)shared
{
OWSAssert(SSKEnvironment.shared.socketManager);
return SSKEnvironment.shared.socketManager;
}
#pragma mark - Dependencies
@ -460,7 +464,7 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
if (!CurrentAppContext().isMainApp) {
return NO;
}
return TSSocketManager.sharedManager.canMakeRequests;
return TSSocketManager.shared.canMakeRequests;
}
- (void)makeRequest:(TSRequest *)request success:(TSSocketMessageSuccess)success failure:(TSSocketMessageFailure)failure
@ -975,14 +979,14 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
+ (void)requestSocketOpen
{
DispatchMainThreadSafe(^{
[[self sharedManager] observeNotificationsIfNecessary];
[[self shared] observeNotificationsIfNecessary];
// If the app is active and the user is registered, this will
// simply open the websocket.
//
// If the app is inactive, it will open the websocket for a
// period of time.
[[self sharedManager] requestSocketAliveForAtLeastSeconds:kBackgroundOpenSocketDurationSeconds];
[[self shared] requestSocketAliveForAtLeastSeconds:kBackgroundOpenSocketDurationSeconds];
});
}

@ -14,6 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
@class OWSMessageSender;
@class OWSPrimaryStorage;
@class TSNetworkManager;
@class TSSocketManager;
@class YapDatabaseConnection;
@protocol ContactsManagerProtocol;
@ -33,10 +34,11 @@ NS_ASSUME_NONNULL_BEGIN
messageManager:(OWSMessageManager *)messageManager
blockingManager:(OWSBlockingManager *)blockingManager
identityManager:(OWSIdentityManager *)identityManager
udManager:(id<OWSUDManager>)udManager
udManager:(id<OWSUDManager>)udManager
messageDecrypter:(OWSMessageDecrypter *)messageDecrypter
batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor
messageReceiver:(OWSMessageReceiver *)messageReceiver NS_DESIGNATED_INITIALIZER;
messageReceiver:(OWSMessageReceiver *)messageReceiver
socketManager:(TSSocketManager *)socketManager NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;
@ -62,6 +64,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) OWSMessageDecrypter *messageDecrypter;
@property (nonatomic, readonly) OWSBatchMessageProcessor *batchMessageProcessor;
@property (nonatomic, readonly) OWSMessageReceiver *messageReceiver;
@property (nonatomic, readonly) TSSocketManager *socketManager;
// This property is configured after Environment is created.
@property (atomic, nullable) id<OWSCallMessageHandler> callMessageHandler;

@ -25,6 +25,7 @@ static SSKEnvironment *sharedSSKEnvironment;
@property (nonatomic) OWSMessageDecrypter *messageDecrypter;
@property (nonatomic) OWSBatchMessageProcessor *batchMessageProcessor;
@property (nonatomic) OWSMessageReceiver *messageReceiver;
@property (nonatomic) TSSocketManager *socketManager;
@end
@ -49,6 +50,7 @@ static SSKEnvironment *sharedSSKEnvironment;
messageDecrypter:(OWSMessageDecrypter *)messageDecrypter
batchMessageProcessor:(OWSBatchMessageProcessor *)batchMessageProcessor
messageReceiver:(OWSMessageReceiver *)messageReceiver
socketManager:(TSSocketManager *)socketManager
{
self = [super init];
if (!self) {
@ -68,6 +70,7 @@ static SSKEnvironment *sharedSSKEnvironment;
OWSAssertDebug(messageDecrypter);
OWSAssertDebug(batchMessageProcessor);
OWSAssertDebug(messageReceiver);
OWSAssertDebug(socketManager);
_contactsManager = contactsManager;
_messageSender = messageSender;
@ -82,6 +85,7 @@ static SSKEnvironment *sharedSSKEnvironment;
_messageDecrypter = messageDecrypter;
_batchMessageProcessor = batchMessageProcessor;
_messageReceiver = messageReceiver;
_socketManager = socketManager;
return self;
}

@ -17,6 +17,7 @@
#import "OWSMessageManager.h"
#import "OWSMessageReceiver.h"
#import "OWSPrimaryStorage.h"
#import "TSSocketManager.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
NS_ASSUME_NONNULL_BEGIN
@ -56,6 +57,7 @@ NS_ASSUME_NONNULL_BEGIN
OWSBatchMessageProcessor *batchMessageProcessor =
[[OWSBatchMessageProcessor alloc] initWithPrimaryStorage:primaryStorage];
OWSMessageReceiver *messageReceiver = [[OWSMessageReceiver alloc] initWithPrimaryStorage:primaryStorage];
TSSocketManager *socketManager = [[TSSocketManager alloc] init];
self = [super initWithContactsManager:contactsManager
messageSender:messageSender
@ -69,7 +71,8 @@ NS_ASSUME_NONNULL_BEGIN
udManager:udManager
messageDecrypter:messageDecrypter
batchMessageProcessor:batchMessageProcessor
messageReceiver:messageReceiver];
messageReceiver:messageReceiver
socketManager:socketManager];
if (!self) {
return nil;
}

Loading…
Cancel
Save