|
|
@ -104,6 +104,16 @@ typedef NS_ENUM(NSUInteger, CallbackType) { |
|
|
|
StatisticsType |
|
|
|
StatisticsType |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void deleteExpiredSessions() { |
|
|
|
|
|
|
|
while ([sessionHistoryList count] > sessionHistorySize) { |
|
|
|
|
|
|
|
id<Session> first = [sessionHistoryList firstObject]; |
|
|
|
|
|
|
|
if (first != nil) { |
|
|
|
|
|
|
|
[sessionHistoryList removeObjectAtIndex:0]; |
|
|
|
|
|
|
|
[sessionHistoryMap removeObjectForKey:[NSNumber numberWithLong:[first getSessionId]]]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void addSessionToSessionHistory(id<Session> session) { |
|
|
|
void addSessionToSessionHistory(id<Session> session) { |
|
|
|
NSNumber* sessionIdNumber = [NSNumber numberWithLong:[session getSessionId]]; |
|
|
|
NSNumber* sessionIdNumber = [NSNumber numberWithLong:[session getSessionId]]; |
|
|
|
|
|
|
|
|
|
|
@ -111,19 +121,12 @@ void addSessionToSessionHistory(id<Session> session) { |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
/* |
|
|
|
* ASYNC SESSIONS CALL THIS METHOD TWICE |
|
|
|
* ASYNC SESSIONS CALL THIS METHOD TWICE |
|
|
|
* THIS CHECK PREVENTS ADDING THE SAME SESSION TWICE |
|
|
|
* THIS CHECK PREVENTS ADDING THE SAME SESSION AGAIN |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
if ([sessionHistoryMap objectForKey:sessionIdNumber] == nil) { |
|
|
|
if ([sessionHistoryMap objectForKey:sessionIdNumber] == nil) { |
|
|
|
[sessionHistoryMap setObject:session forKey:sessionIdNumber]; |
|
|
|
[sessionHistoryMap setObject:session forKey:sessionIdNumber]; |
|
|
|
[sessionHistoryList addObject:session]; |
|
|
|
[sessionHistoryList addObject:session]; |
|
|
|
if ([sessionHistoryList count] > sessionHistorySize) { |
|
|
|
deleteExpiredSessions(); |
|
|
|
id<Session> first = [sessionHistoryList firstObject]; |
|
|
|
|
|
|
|
if (first != nil) { |
|
|
|
|
|
|
|
NSNumber* key = [NSNumber numberWithLong:[first getSessionId]]; |
|
|
|
|
|
|
|
[sessionHistoryList removeObject:key]; |
|
|
|
|
|
|
|
[sessionHistoryMap removeObjectForKey:key]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[sessionHistoryLock unlock]; |
|
|
|
[sessionHistoryLock unlock]; |
|
|
@ -1169,6 +1172,7 @@ int executeFFprobe(long sessionId, NSArray* arguments) { |
|
|
|
@throw([NSException exceptionWithName:NSInvalidArgumentException reason:@"Session history size must not exceed the hard limit!" userInfo:nil]); |
|
|
|
@throw([NSException exceptionWithName:NSInvalidArgumentException reason:@"Session history size must not exceed the hard limit!" userInfo:nil]); |
|
|
|
} else if (pSessionHistorySize > 0) { |
|
|
|
} else if (pSessionHistorySize > 0) { |
|
|
|
sessionHistorySize = pSessionHistorySize; |
|
|
|
sessionHistorySize = pSessionHistorySize; |
|
|
|
|
|
|
|
deleteExpiredSessions(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|