async Task <CreateLaunchResult> CreateLaunchAsync(LaunchParams launchParams, ICancelable cancelable, IAction action) { Task <string> sdkCompatibilityTask = CheckSdkCompatibilityAsync( launchParams.GameletName, launchParams.SdkVersion, launchParams.GameletSdkVersion, action); LaunchGameRequest launchRequest = null; Task <ConfigStatus> parsingTask = Task.Run(() => _launchGameParamsConverter.ToLaunchGameRequest( launchParams, out launchRequest)); cancelable.ThrowIfCancellationRequested(); ConfigStatus parsingState = await parsingTask; if (parsingState.IsErrorLevel) { // Critical error occurred while parsing the configuration. // Launch can not proceed. throw new ConfigurationException(parsingState.ErrorMessage); } cancelable.ThrowIfCancellationRequested(); string sdkCompatibilityMessage = await sdkCompatibilityTask; cancelable.ThrowIfCancellationRequested(); var devEvent = new DeveloperLogEvent { GameLaunchData = new GameLaunchData { RequestId = launchRequest.RequestId } }; // Updating the event to record the RequestId in case LaunchGameAsync throws exception. action.UpdateEvent(devEvent); LaunchGameResponse response = await _gameletClient.LaunchGameAsync(launchRequest, action); IVsiGameLaunch vsiLaunch = _vsiLaunchFactory.Create(response.GameLaunchName, launchRequest.EnableDeveloperResumeOffer); devEvent.GameLaunchData.LaunchId = vsiLaunch.LaunchId; action.UpdateEvent(devEvent); parsingState.CompressMessages(); return(new CreateLaunchResult(vsiLaunch, parsingState.WarningMessage, sdkCompatibilityMessage)); }
public void Setup() { _cancelable = Substitute.For <ICancelableTask>(); _action = Substitute.For <IAction>(); _gameletClient = Substitute.For <IGameletClient>(); _paramsConverter = Substitute.For <ILaunchGameParamsConverter>(); _cancelableTaskFactory = Substitute.For <CancelableTask.Factory>(); _yetiVsiService = Substitute.For <IYetiVSIService>(); _metrics = Substitute.For <IMetrics>(); _actionRecorder = Substitute.For <ActionRecorder>(_metrics); _devEvent = SetupCreateLaunchEvent(); _dialogUtil = Substitute.For <IDialogUtil>(); _vsiGameLaunchFactory = Substitute.For <IVsiGameLaunchFactory>(); _vsiGameLaunch = Substitute.For <IVsiGameLaunch>(); _vsiGameLaunchFactory.Create(_gameLaunchName, Arg.Any <bool>()).Returns(_vsiGameLaunch); _vsiGameLaunch.LaunchName.Returns(_gameLaunchName); _vsiGameLaunch.LaunchId.Returns(_gameLaunchId); _target = new GameLauncher(_gameletClient, _yetiVsiService, _paramsConverter, _cancelableTaskFactory, _actionRecorder, _dialogUtil, _vsiGameLaunchFactory); SetupCancelableTask(); }