Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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();
        }