Пример #1
0
        private IEnumerator RetryConnect()
        {
            if (requestQueueItem.retryCount < requestQueueItem.retryLimits)
            {
                yield return(new WaitForSecondsRealtime(RETRY_CONNECT_DELAY));

                yield return(GamebaseUnitySDKSettings.Instance.StartCoroutine(InternetReachability((reachable) =>
                {
                    if (true == reachable)
                    {
                        GamebaseUnitySDKSettings.Instance.StartCoroutine(socket.Reconnect((error) =>
                        {
                            if (true == Gamebase.IsSuccess(error))
                            {
                                RequestEnqueue(requestQueueItem);
                                requestQueueItem = null;
                                return;
                            }

                            RetryItem();
                        }));
                    }
                    else
                    {
                        RetryItem();
                    }

                    GamebaseLog.Debug(string.Format("index:{0}, apiId:{1}, retryCount:{2}, internetReachability:{3}", requestQueueItem.index, requestQueueItem.requestVO.apiId, requestQueueItem.retryCount, reachable), this, "RetryConnect");
                })));
            }
            else
            {
                GamebaseLog.Debug(string.Format("Reconnect failed. Index of queue item:{0}", requestQueueItem.index), this, "RetryConnect");
                requestQueueItem.callback(string.Empty, new GamebaseError(GamebaseErrorCode.SOCKET_ERROR));
                requestQueueItem = null;
            }
        }