aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Remote/FSTOnlineStateTracker.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/Source/Remote/FSTOnlineStateTracker.mm')
-rw-r--r--Firestore/Source/Remote/FSTOnlineStateTracker.mm27
1 files changed, 18 insertions, 9 deletions
diff --git a/Firestore/Source/Remote/FSTOnlineStateTracker.mm b/Firestore/Source/Remote/FSTOnlineStateTracker.mm
index fb993e5..a5c2b38 100644
--- a/Firestore/Source/Remote/FSTOnlineStateTracker.mm
+++ b/Firestore/Source/Remote/FSTOnlineStateTracker.mm
@@ -84,11 +84,10 @@ static const NSTimeInterval kOnlineStateTimeout = 10;
HARD_ASSERT(
self.state == FSTOnlineStateUnknown,
"Timer should be canceled if we transitioned to a different state.");
- LOG_DEBUG(
- "Watch stream didn't reach Online or Offline within %s seconds. "
- "Considering client offline.",
- kOnlineStateTimeout);
- [self logClientOfflineWarningIfNecessary];
+ [self logClientOfflineWarningIfNecessaryWithReason:
+ [NSString
+ stringWithFormat:@"Backend didn't respond within %f seconds.",
+ kOnlineStateTimeout]];
[self setAndBroadcastState:FSTOnlineStateOffline];
// NOTE: handleWatchStreamFailure will continue to increment
@@ -98,7 +97,7 @@ static const NSTimeInterval kOnlineStateTimeout = 10;
}
}
-- (void)handleWatchStreamFailure {
+- (void)handleWatchStreamFailure:(NSError *)error {
if (self.state == FSTOnlineStateOnline) {
[self setAndBroadcastState:FSTOnlineStateUnknown];
@@ -110,7 +109,9 @@ static const NSTimeInterval kOnlineStateTimeout = 10;
self.watchStreamFailures++;
if (self.watchStreamFailures >= kMaxWatchStreamFailures) {
[self clearOnlineStateTimer];
- [self logClientOfflineWarningIfNecessary];
+ [self logClientOfflineWarningIfNecessaryWithReason:
+ [NSString stringWithFormat:@"Connection failed %d times. Most recent error: %@",
+ kMaxWatchStreamFailures, error]];
[self setAndBroadcastState:FSTOnlineStateOffline];
}
}
@@ -136,10 +137,18 @@ static const NSTimeInterval kOnlineStateTimeout = 10;
}
}
-- (void)logClientOfflineWarningIfNecessary {
+- (void)logClientOfflineWarningIfNecessaryWithReason:(NSString *)reason {
+ NSString *message = [NSString
+ stringWithFormat:
+ @"Could not reach Cloud Firestore backend. %@\n This typically indicates that your "
+ @"device does not have a healthy Internet connection at the moment. The client will "
+ @"operate in offline mode until it is able to successfully connect to the backend.",
+ reason];
if (self.shouldWarnClientIsOffline) {
- LOG_WARN("Could not reach Firestore backend.");
+ LOG_WARN("%s", message);
self.shouldWarnClientIsOffline = NO;
+ } else {
+ LOG_DEBUG("%s", message);
}
}