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;
}