From a7d712d1b24cddab410172238729c58770e91ff4 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 20 Jun 2018 17:04:53 -0400 Subject: [PATCH] Respond to CR. --- .../src/Network/API/TSNetworkManager.m | 6 +++--- .../src/Network/OutageDetection.swift | 20 ++++++++++++------- .../src/Network/WebSockets/TSSocketManager.m | 4 ++-- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/SignalServiceKit/src/Network/API/TSNetworkManager.m b/SignalServiceKit/src/Network/API/TSNetworkManager.m index 75aa68dde..b6dfb3215 100644 --- a/SignalServiceKit/src/Network/API/TSNetworkManager.m +++ b/SignalServiceKit/src/Network/API/TSNetworkManager.m @@ -95,7 +95,7 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error); successBlock(task, responseObject); - [OutageDetection.sharedManager reportNetworkSuccess]; + [OutageDetection.sharedManager reportConnectionSuccess]; }; TSNetworkManagerFailure failure = [TSNetworkManager errorPrettifyingForFailureBlock:failureBlock request:request]; @@ -155,9 +155,9 @@ typedef void (^failureBlock)(NSURLSessionDataTask *task, NSError *error); return ^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull networkError) { NSInteger statusCode = [task statusCode]; - [OutageDetection.sharedManager reportNetworkFailure]; + [OutageDetection.sharedManager reportConnectionFailure]; - NSError *error = [self errorWithHTTPCode:statusCode + NSError *error = [self errorWithHTTPCode:statusCode description:nil failureReason:nil recoverySuggestion:nil diff --git a/SignalServiceKit/src/Network/OutageDetection.swift b/SignalServiceKit/src/Network/OutageDetection.swift index ffa3b901b..8bece614e 100644 --- a/SignalServiceKit/src/Network/OutageDetection.swift +++ b/SignalServiceKit/src/Network/OutageDetection.swift @@ -18,10 +18,14 @@ public class OutageDetection: NSObject { didSet { SwiftAssertIsOnMainThread(#function) - NotificationCenter.default.postNotificationNameAsync(OutageDetection.outageStateDidChange, object: nil) + if hasOutage != oldValue { + Logger.info("\(self.logTag) hasOutage: \(hasOutage).") + + NotificationCenter.default.postNotificationNameAsync(OutageDetection.outageStateDidChange, object: nil) + } } } - private var mayHaveOutage = false { + private var shouldCheckForOutage = false { didSet { SwiftAssertIsOnMainThread(#function) @@ -64,6 +68,8 @@ public class OutageDetection: NSObject { } private func checkForOutageAsync() { + Logger.info("\(self.logTag) \(#function).") + DispatchQueue.global().async { let isOutageDetected = self.checkForOutageSync() DispatchQueue.main.async { @@ -79,7 +85,7 @@ public class OutageDetection: NSObject { return } - if mayHaveOutage { + if shouldCheckForOutage { if checkTimer != nil { // Already has timer. return @@ -106,17 +112,17 @@ public class OutageDetection: NSObject { } @objc - public func reportNetworkSuccess() { + public func reportConnectionSuccess() { SwiftAssertIsOnMainThread(#function) - mayHaveOutage = true + shouldCheckForOutage = false hasOutage = false } @objc - public func reportNetworkFailure() { + public func reportConnectionFailure() { SwiftAssertIsOnMainThread(#function) - mayHaveOutage = false + shouldCheckForOutage = true } } diff --git a/SignalServiceKit/src/Network/WebSockets/TSSocketManager.m b/SignalServiceKit/src/Network/WebSockets/TSSocketManager.m index d8b928a5f..d953c2048 100644 --- a/SignalServiceKit/src/Network/WebSockets/TSSocketManager.m +++ b/SignalServiceKit/src/Network/WebSockets/TSSocketManager.m @@ -679,7 +679,7 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_ // If socket opens, we know we're not de-registered. [TSAccountManager.sharedInstance setIsDeregistered:NO]; - [OutageDetection.sharedManager reportNetworkSuccess]; + [OutageDetection.sharedManager reportConnectionSuccess]; } - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error { @@ -826,7 +826,7 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_ [self applyDesiredSocketState]; } - [OutageDetection.sharedManager reportNetworkFailure]; + [OutageDetection.sharedManager reportConnectionFailure]; } - (void)webSocket:(SRWebSocket *)webSocket