From ec610690fb0d0238a9ffaf3d42cc3e211b9fd0b9 Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Wed, 31 Jan 2024 15:55:11 -0500 Subject: [PATCH] update to protocol non optional --- .../ClientParameterHandler.swift | 15 +++++++-------- .../ClientParameterProtocol.swift | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift index 5d4d370..ac58a3c 100644 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift +++ b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift @@ -66,7 +66,7 @@ open func getParameters(with model: ClientParameterModel, requestParameters: [String: Any], actionId: String) async -> [String: AnyHashable] { let timeout = TimeInterval(model.timeout ?? Self.DefaultTimeout) let parameterHandlerList = model.list.compactMap { createParametersHandler($0) } - return await withTaskGroup(of: [String: AnyHashable]?.self, returning: [String: AnyHashable].self) { group in + return await withTaskGroup(of: [String: AnyHashable].self, returning: [String: AnyHashable].self) { group in for handler in parameterHandlerList { group.addTask{ // Fetch the client parameter. @@ -75,9 +75,8 @@ name: handler.clientParameterModel.type, uuid: handler.clientParameterModel.id, actionId: actionId)) - let parameter: [String: AnyHashable]? = try await MVMCoreActionUtility.perform(withTimeout: timeout) { + let parameter: [String: AnyHashable] = try await MVMCoreActionUtility.perform(withTimeout: timeout) { let parameter = await handler.fetchClientParameters(requestParameters: requestParameters, timingOutIn: timeout) - MVMCoreLoggingHandler.shared()?.logCoreEvent(.clientParameterFetchComplete( name: handler.clientParameterModel.type, uuid: handler.clientParameterModel.id, @@ -93,16 +92,16 @@ actionId: actionId)) return handler.valueOnTimeout() } catch { - // Should be impossible. - return nil + if let errorObject = MVMCoreErrorObject.createErrorObject(for: error, location: #function) { + MVMCoreLoggingHandler.shared()?.addError(toLog: errorObject) + } + return [handler.clientParameterModel.type: "failed_to_collect"] } } } return await group.reduce(into: [String: AnyHashable]()) { partialResult, parameter in - if let parameter = parameter { - partialResult.merge(parameter) { first, last in first } - } + partialResult.merge(parameter) { first, last in first } } } } diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift index 28c018b..6f9eacc 100644 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift +++ b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterProtocol.swift @@ -28,7 +28,7 @@ public protocol ClientParameterProtocol: ModelHandlerProtocol, AnyClientP var clientParameterModel: Model { get set } init(clientParameterModel: Model) - func fetchClientParameters(requestParameters: [String: Any], timingOutIn timeout: TimeInterval) async -> [String: AnyHashable]? + func fetchClientParameters(requestParameters: [String: Any], timingOutIn timeout: TimeInterval) async -> [String: AnyHashable] /// Default parameter for timeout scenarios. It will use the protocol extension method bydefault. Can override to send custom values. func valueOnTimeout() -> [String: AnyHashable]