server support
This commit is contained in:
parent
d67e44c9b2
commit
cd1734b62d
@ -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]) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user