public void InvokeBackOffice(CloudScriptMethod cloudScriptMethod, Action <CloudScriptResponse, CloudScriptMethod> resultCallBack) { cloudScriptMethod.Entity = CurrentEntity.Id; if (isWorking) { realtimeQueue.Add(() => InvokeBackOffice(cloudScriptMethod, resultCallBack)); return; } if (resultCallBack == null) { //Only use for "shoot in the dark"; resultCallBack = DummyResultCallback; } if (cloudScriptMethod.Attempt == -1) { cloudScriptMethod.Attempt = retryCountMax; } else { cloudScriptMethod.Attempt++; } cloudScriptMethod.Environement = BackOfficeEnvironement.ToString(); isWorking = true; ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest() { FunctionName = "invokeBioIncBackOffice", FunctionParameter = cloudScriptMethod }; PlayFabClientAPI.ExecuteCloudScript(request, (ExecuteCloudScriptResult r) => FromExecuteCloudScriptResult(r, cloudScriptMethod, resultCallBack), (PlayFabError e) => FromExecuteCloudScriptResult(null, cloudScriptMethod, resultCallBack)); }
private void TimerProcessStacks_Elapsed() { if (isWorking) { //retry a bit faster if needed. timerProcessStackLastTime = DateTime.Now.AddMilliseconds(2500); return; } if (cloudScriptStackMethods == null) { cloudScriptStackMethods = new List <CloudScriptStackMethod>(); } float callDelay = 0f; //UnityEngine.Debug.Log("--------PLAYFAB STACK TIMER GOOD "); if (cloudScriptStackMethods.Count > 0) { List <string> allStacks = cloudScriptStackMethods.Select(y => y.StackId).Distinct().ToList(); foreach (string stackId in allStacks) { List <CloudScriptMethod> allMethods = cloudScriptStackMethods.Where(y => y.StackId == stackId).Select(y => y.CloudScriptMethod).ToList(); allMethods.ForEach(y => y.Environement = BackOfficeEnvironement.ToString()); ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest() { FunctionName = "invokeBioIncBackOffice", FunctionParameter = allMethods }; StartCoroutine(DelayedCall(callDelay, () => PlayFabClientAPI.ExecuteCloudScript(request, onStackCallback, (PlayFabError error) => stackResultCallBack(null)))); UnityEngine.Debug.Log("Stacked " + allMethods.Count + " methods for stack " + stackId); callDelay += 0.5f; } } cloudScriptStackMethods.Clear(); }