From a4770c4c79c74317a30ed0b37bb4cd124b655b89 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Fri, 29 Apr 2022 15:41:40 +0000 Subject: [PATCH] Develop --- .../Client Parameters/ClientParameterHandler.swift | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift index fe420ef..2d59771 100644 --- a/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift +++ b/MVMCore/MVMCore/Models/ActionType/Client Parameters/ClientParameterHandler.swift @@ -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). + } } } }