update to protocol non optional
This commit is contained in:
parent
fb090fee64
commit
ec610690fb
@ -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 }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user