private static async Task SubmitJobAndPollStatus()

in Microsoft.Xbox.Service.DevTools/PlayerReset/PlayerReset.cs [50:114]


        private static async Task<UserResetResult> SubmitJobAndPollStatus(string sandbox, string scid, string xuid)
        {
            UserResetResult result = new UserResetResult();
            JobStatusResponse jobStatus = null;

            try
            {
                string correlationId = string.Empty;
                var jobResponse = await SubmitJobAsync(sandbox, scid, xuid);

                if (!string.IsNullOrEmpty(jobResponse.HttpErrorMessage))
                {
                    result.OverallResult = ResetOverallResult.CompletedError;
                    result.HttpErrorMessage = jobResponse.HttpErrorMessage;
                }
                else if (!string.IsNullOrEmpty(jobResponse.JobId))
                {
                    for (int i = 0; i < MaxPollingAttempts; i++)
                    {
                        // Wait for 3 seconds for each interval
                        await Task.Delay(RetryDelay);

                        jobStatus = await CheckJobStatus(jobResponse);

                        if (jobStatus.Status == "CompletedSuccess")
                        {
                            result.OverallResult = ResetOverallResult.Succeeded;
                            result.ProviderStatus = jobStatus.ProviderStatus;
                            break;
                        }
                        else if (jobStatus.Status == "CompletedError")
                        {
                            result.OverallResult = ResetOverallResult.CompletedError;
                            result.ProviderStatus = jobStatus.ProviderStatus;
                            break;
                        }
                    }

                    if (jobStatus.Status == "InProgress" || jobStatus.Status == "Queued")
                    {
                        result.OverallResult = ResetOverallResult.Timeout;
                        result.ProviderStatus = jobStatus.ProviderStatus;
                    }
                }
            }
            catch (Exception)
            {
                result.OverallResult = ResetOverallResult.CompletedError;
            }

            // Log detail status
            if (result.OverallResult != ResetOverallResult.Succeeded)
            {
                Log.WriteLog($"Resetting player {xuid} result {result.OverallResult}: ");
                if (jobStatus != null && jobStatus.ProviderStatus != null)
                {
                    foreach (var providerStatus in jobStatus.ProviderStatus)
                    {
                        Log.WriteLog($"\t provider: {providerStatus.Provider}, status: {providerStatus.Status}, error message: {providerStatus.ErrorMessage}");
                    }
                }
            }

            return result;
        }