update to protocol non optional

This commit is contained in:
Scott Pfeil 2024-01-31 15:55:11 -05:00
parent fb090fee64
commit ec610690fb
2 changed files with 8 additions and 9 deletions

View File

@ -66,7 +66,7 @@
open func getParameters(with model: ClientParameterModel, requestParameters: [String: Any], actionId: String) async -> [String: AnyHashable] { open func getParameters(with model: ClientParameterModel, requestParameters: [String: Any], actionId: String) async -> [String: AnyHashable] {
let timeout = TimeInterval(model.timeout ?? Self.DefaultTimeout) let timeout = TimeInterval(model.timeout ?? Self.DefaultTimeout)
let parameterHandlerList = model.list.compactMap { createParametersHandler($0) } 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 { for handler in parameterHandlerList {
group.addTask{ group.addTask{
// Fetch the client parameter. // Fetch the client parameter.
@ -75,9 +75,8 @@
name: handler.clientParameterModel.type, name: handler.clientParameterModel.type,
uuid: handler.clientParameterModel.id, uuid: handler.clientParameterModel.id,
actionId: actionId)) 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) let parameter = await handler.fetchClientParameters(requestParameters: requestParameters, timingOutIn: timeout)
MVMCoreLoggingHandler.shared()?.logCoreEvent(.clientParameterFetchComplete( MVMCoreLoggingHandler.shared()?.logCoreEvent(.clientParameterFetchComplete(
name: handler.clientParameterModel.type, name: handler.clientParameterModel.type,
uuid: handler.clientParameterModel.id, uuid: handler.clientParameterModel.id,
@ -93,16 +92,16 @@
actionId: actionId)) actionId: actionId))
return handler.valueOnTimeout() return handler.valueOnTimeout()
} catch { } catch {
// Should be impossible. if let errorObject = MVMCoreErrorObject.createErrorObject(for: error, location: #function) {
return nil MVMCoreLoggingHandler.shared()?.addError(toLog: errorObject)
}
return [handler.clientParameterModel.type: "failed_to_collect"]
} }
} }
} }
return await group.reduce(into: [String: AnyHashable]()) { partialResult, parameter in 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 }
}
} }
} }
} }

View File

@ -28,7 +28,7 @@ public protocol ClientParameterProtocol<Model>: ModelHandlerProtocol, AnyClientP
var clientParameterModel: Model { get set } var clientParameterModel: Model { get set }
init(clientParameterModel: Model) 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. /// Default parameter for timeout scenarios. It will use the protocol extension method bydefault. Can override to send custom values.
func valueOnTimeout() -> [String: AnyHashable] func valueOnTimeout() -> [String: AnyHashable]