Merge branch 'bugfix/client_parameter_handler' into 'develop'

saftey against handler implementations

See merge request BPHV_MIPS/mvm_core!205
This commit is contained in:
Pfeil, Scott Robert 2022-04-28 15:18:15 +00:00
commit 51580bdbd0

View File

@ -88,19 +88,24 @@
complete = true
}
}
// Setup timeout.
self.parametersWorkQueue.asyncAfter(deadline: .now() + .seconds(Int(timeout)), execute: timeoutWorkItem)
// Setup the parameter execution.
for (index, parameterHandler) in self.parameterHandlerList.enumerated() {
let parameterType = parameterHandler.clientParameterModel.type
self.group.enter()
parameterHandler.fetchClientParameters(requestParameters: requestParameters,
timingOutIn: timeout) { (receivedParameter) in
// Queue the results for merge.
self.parametersWorkQueue.async {
returnedList[index] = receivedParameter
self.group.leave() // Leaving is only done after setup (barriered).
if (returnedList[index] != nil) {
MVMCoreLoggingHandler.shared()?.addError(toLog: MVMCoreErrorObject(title: nil, message: "Client parameter \(parameterType) has already executed. The completion handler should only be called once!", code: ErrorCode.default.rawValue, domain: ErrorDomainNative, location: String(describing: ClientParameterHandler.self))!)
} else {
returnedList[index] = receivedParameter
self.group.leave() // Leaving is only done after setup (barriered).
}
}
}
}