public async Task <DeleteLaunchResult> WaitForGameLaunchEndedAndRecordAsync() { IAction action = _actionRecorder.CreateToolAction(ActionType.GameLaunchWaitForEnd); DeleteLaunchResult result = null; async Task WaitAndRecordTask() { result = await _gameLaunchBeHelper.WaitUntilGameLaunchEndedAsync( LaunchName, new NothingToCancel(), action); EndReason?eReason = result.DeletedLaunch?.GameLaunchEnded?.EndReason; var endData = new DeveloperLogEvent { GameLaunchData = new GameLaunchData { LaunchId = LaunchId, EndReason = (int?)eReason } }; action.UpdateEvent(endData); if (eReason.HasValue && eReason != EndReason.GameExitedWithSuccessfulCode) { throw new GameLaunchFailError("Game stopped due to unexpected reason."); } } await action.RecordAsync(WaitAndRecordTask()); return(result); }
public async Task <DeleteLaunchResult> DeleteLaunchAsync( string gameLaunchName, ICancelable task, IAction action) { try { await _gameletClient.DeleteGameLaunchAsync(gameLaunchName, action); } catch (CloudException e) when((e.InnerException as RpcException)?.StatusCode == StatusCode.NotFound) { // There is no launch with the specified name. return(DeleteLaunchResult.Success(null)); } return(await WaitUntilGameLaunchEndedAsync(gameLaunchName, task, action)); }