server support

This commit is contained in:
Pfeil, Scott Robert 2020-12-17 10:43:41 -05:00
parent d67e44c9b2
commit cd1734b62d

View File

@ -21,6 +21,7 @@
@interface MVMCoreSessionTimeHandler ()
@property (strong, nonatomic) NSTimer *sessionWarningTimer;
@property (strong, nonatomic) NSTimer *sessionTimer;
// The time that we started the last session timer.
@ -74,13 +75,6 @@
}
- (void)sessionTimeoutWarning {
// Starts the timeout timer
if (!fequal(0, self.secondsUntilTimeout)) {
self.sessionTimer = [NSTimer scheduledTimerWithTimeInterval:self.secondsUntilTimeout target:self selector:@selector(sessionTimeout:) userInfo:nil repeats:NO];
} else {
[self stopSessionTimer];
}
}
- (void)sessionTimeout:(BOOL)whileInBackground {
@ -98,22 +92,22 @@
if (!self.sessionTimedOut) {
[self.sessionWarningTimer invalidate];
[self.sessionTimer invalidate];
self.secondsUntilWarning = [self timeUntilWarning];
self.secondsUntilTimeout = [self timeUntilTimeout];
if (!fequal(0, self.secondsUntilWarning) || !fequal(0, self.secondsUntilTimeout)) {
if (!fequal(0, self.secondsUntilTimeout)) {
self.sessionBeingTimed = YES;
self.timeTimerStarted = [NSDate timeIntervalSinceReferenceDate];
}
// Only start physical timer if active, otherwise will begin once entering foreground.
if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive && !fequal(0, self.secondsUntilTimeout)) {
if (!fequal(0, self.secondsUntilWarning)) {
self.sessionTimer = [NSTimer scheduledTimerWithTimeInterval:self.secondsUntilWarning target:self selector:@selector(sessionTimeoutWarning) userInfo:nil repeats:NO];
} else if (!fequal(0, self.secondsUntilTimeout)) {
self.sessionTimer = [NSTimer scheduledTimerWithTimeInterval:self.secondsUntilTimeout target:self selector:@selector(sessionTimeout:) userInfo:nil repeats:NO];
self.sessionWarningTimer = [NSTimer scheduledTimerWithTimeInterval:self.secondsUntilWarning target:self selector:@selector(sessionTimeoutWarning) userInfo:nil repeats:NO];
}
self.sessionTimer = [NSTimer scheduledTimerWithTimeInterval:self.secondsUntilTimeout target:self selector:@selector(sessionTimeout:) userInfo:nil repeats:NO];
}
}
});
@ -124,6 +118,8 @@
// nil timer, session no longer timed.
dispatch_async(dispatch_get_main_queue(), ^(void) {
self.sessionBeingTimed = NO;
[self.sessionWarningTimer invalidate];
self.sessionWarningTimer = nil;
[self.sessionTimer invalidate];
self.sessionTimer = nil;
});
@ -133,6 +129,8 @@
// Session is still being timed. Invalidates here, will start up again on enter foreground if need be.
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self.sessionWarningTimer invalidate];
self.sessionWarningTimer = nil;
[self.sessionTimer invalidate];
self.sessionTimer = nil;
});
@ -143,22 +141,25 @@
if (self.sessionBeingTimed || self.sessionTimedOut) {
NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];
if ((!fequal(0, self.secondsUntilWarning) && now > self.timeTimerStarted + self.secondsUntilWarning) || (fequal(0, self.secondsUntilWarning) && !fequal(0, self.secondsUntilTimeout) && now > self.timeTimerStarted + self.secondsUntilTimeout)) {
if ((!fequal(0, self.secondsUntilWarning) && now > self.timeTimerStarted + self.secondsUntilWarning) || (!fequal(0, self.secondsUntilTimeout) && now > self.timeTimerStarted + self.secondsUntilTimeout)) {
// Timeout if we are passed the warning.
[self sessionTimeout:YES];
} else if (!fequal(0, self.secondsUntilWarning)) {
} else {
if (!fequal(0, self.secondsUntilWarning)) {
// Restart the warning timer!
NSTimeInterval timeLeftTillWarning = self.timeTimerStarted + self.secondsUntilWarning - now;
[self.sessionTimer invalidate];
self.sessionTimer = [NSTimer scheduledTimerWithTimeInterval:timeLeftTillWarning target:self selector:@selector(sessionTimeoutWarning) userInfo:nil repeats:NO];
} else if (!fequal(0, self.secondsUntilTimeout)) {
// Restart the warning timer!
NSTimeInterval timeLeftTillWarning = self.timeTimerStarted + self.secondsUntilWarning - now;
[self.sessionWarningTimer invalidate];
self.sessionWarningTimer = [NSTimer scheduledTimerWithTimeInterval:timeLeftTillWarning target:self selector:@selector(sessionTimeoutWarning) userInfo:nil repeats:NO];
}
if (!fequal(0, self.secondsUntilTimeout)) {
// Restart the timeout timer!
NSTimeInterval timeLeftTillTimeout = self.timeTimerStarted + self.secondsUntilTimeout - now;
[self.sessionTimer invalidate];
self.sessionTimer = [NSTimer scheduledTimerWithTimeInterval:timeLeftTillTimeout target:self selector:@selector(sessionTimeout:) userInfo:nil repeats:NO];
// Restart the timeout timer!
NSTimeInterval timeLeftTillTimeout = self.timeTimerStarted + self.secondsUntilTimeout - now;
[self.sessionTimer invalidate];
self.sessionTimer = [NSTimer scheduledTimerWithTimeInterval:timeLeftTillTimeout target:self selector:@selector(sessionTimeout:) userInfo:nil repeats:NO];
}
}
}
}
@ -174,6 +175,8 @@
NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];
if ((!fequal(0, self.secondsUntilWarning) && now > self.timeTimerStarted + self.secondsUntilWarning) || (!fequal(0, self.secondsUntilTimeout) && now > self.timeTimerStarted + self.secondsUntilTimeout)) {
self.sessionTimedOut = YES;
[self.sessionWarningTimer invalidate];
self.sessionWarningTimer = nil;
[self.sessionTimer invalidate];
self.sessionTimer = nil;
} else if (![self.sessionTimer isValid]) {