diff --git a/Source/IoGInfrastructure/Managers/RemoteData/IoGDataManager.swift b/Source/IoGInfrastructure/Managers/RemoteData/IoGDataManager.swift index ced24f2..134081c 100644 --- a/Source/IoGInfrastructure/Managers/RemoteData/IoGDataManager.swift +++ b/Source/IoGInfrastructure/Managers/RemoteData/IoGDataManager.swift @@ -13,6 +13,7 @@ * 09/27/18 * EGC * File creation date * 02/16/22 * EGC * Added support for custom request type * 06/19/22 * EGC * Added DocC support +* 12/17/24 * EGC * Added support for customizing retry logic ******************************************************************************** */ @@ -121,6 +122,16 @@ public class IoGDataManager case Comment case Rating case Search + case Info + case Validate + case Flight + case Seat + case Date + case Token + case Authenticate + case Authorization + case Permissions + case Secret } /// Returns the shared Data Manager instance. @@ -129,6 +140,8 @@ public class IoGDataManager var delegateList = NSPointerArray.weakObjects() var outstandingRequests = [Int: IoGDataRequestResponse]() var requestID = 0 + var retryOnFailure = true + var numAutoRetries = IoGConfigurationManager.defaultRequestNumRetries // MARK: Class Methods @@ -218,6 +231,32 @@ public class IoGDataManager } } + /// Sets whether or not to automatically retry on failed requests + /// - Parameters: + /// - retry: whether or not to attempt automatic retries + public func setRetryOnFailure(retry: Bool) + { + retryOnFailure = retry + } + + func getRetryOnFailure() -> Bool + { + return retryOnFailure + } + + /// Sets the number of retries to automatically attempt on request failure + /// - Parameters: + /// - retries: the number of times to automatically retry a failed attempt + public func setNumberOfRetries(retries: Int) + { + numAutoRetries = retries + } + + func getNumberofRetries() -> Int + { + return numAutoRetries + } + @discardableResult public func transmitRequest(request: URLRequest, type: IoGDataRequestType) -> Int { return 0 diff --git a/Source/IoGInfrastructure/Managers/RemoteData/IoGLiveDataRequestResponse.swift b/Source/IoGInfrastructure/Managers/RemoteData/IoGLiveDataRequestResponse.swift index ebde78a..dd0996a 100644 --- a/Source/IoGInfrastructure/Managers/RemoteData/IoGLiveDataRequestResponse.swift +++ b/Source/IoGInfrastructure/Managers/RemoteData/IoGLiveDataRequestResponse.swift @@ -15,6 +15,7 @@ * 11/19/18 * EGC * File creation date * 02/16/22 * EGC * Added support for multiple API URLs * 06/19/22 * EGC * Added DocC support +* 12/17/24 * EGC * Added support for customizing retry logic ******************************************************************************** */ @@ -48,7 +49,7 @@ public class IoGLiveDataRequestResponse : IoGDataRequestResponse, URLSessionDele { timer in self.retryNumber += 1 - if self.retryNumber <= IoGConfigurationManager.defaultRequestNumRetries + if IoGDataManager.dataManagerOfDefaultType().getRetryOnFailure() && self.retryNumber <= IoGDataManager.dataManagerOfDefaultType().getNumberofRetries() { self.processRequest() } @@ -89,7 +90,7 @@ public class IoGLiveDataRequestResponse : IoGDataRequestResponse, URLSessionDele { timer in self.retryNumber += 1 - if self.retryNumber <= IoGConfigurationManager.defaultRequestNumRetries + if IoGDataManager.dataManagerOfDefaultType().getRetryOnFailure() && self.retryNumber <= IoGDataManager.dataManagerOfDefaultType().getNumberofRetries() { self.continueMultiPartRequest() }