internal async Task PlayAdAsync(IAdSource adSource, TimeSpan?startTimeout, CancellationToken cancellationToken, IProgress <AdStatus> progress) #endif { if (!(adSource.Payload is AdDocumentPayload)) { throw new ArgumentException("adSource must contain a payload of type AdDocumentPayload", "adPayload"); } var adDoc = (AdDocumentPayload)adSource.Payload; // do an extra check to catch an empty payload before we get any further. if (adDoc.AdPods.Count == 0) { VpaidController.TrackErrorUrl(adDoc.Error, Microsoft.Media.Advertising.VpaidController.Error_NoAd); var playExection = new PlayException(new LoadException(new Exception("No ads found."))); LogError(adSource, playExection); throw playExection; } // create a new token that we can cancel independently var masterCancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); var playTasks = PlayAdAsync(adDoc, adSource, startTimeout, masterCancellationToken.Token, progress); try { activeOperation = new ActiveOperation(playTasks.Secondary, masterCancellationToken); await playTasks.Primary; } catch (PlayException) { activeOperation = null; throw; } }
public PlayException Create(PlayException playException) { var playExceptions = ReadAll(); if (playExceptions.Any()) { playException.Id = playExceptions.Select(x => x.Id).Max() + 1; } else { playException.Id = 1; } playExceptions.Add(playException); WriteAll(playExceptions); return(playException); }
public ActionResult Create(IFormCollection collection) { try { var model = new PlayException(); model.Start = DateTime.Parse(collection["Start"]); model.Duration = int.Parse(collection["Duration"]); model.Reason = collection["Reason"]; repository.Create(model); return(RedirectToAction(nameof(Index))); } catch { return(View()); } }
public void Update(PlayException playException) { var playExceptions = ReadAll(); var listPlayException = playExceptions.FirstOrDefault(x => x.Id == playException.Id); if (listPlayException != null) { listPlayException.Start = playException.Start; listPlayException.Duration = playException.Duration; listPlayException.Reason = playException.Reason; WriteAll(playExceptions); } else { throw new ArgumentException(nameof(playException)); } }
internal async Task PlayAdAsync(IAdSource adSource, TimeSpan? startTimeout, CancellationToken cancellationToken, IProgress<AdStatus> progress) #endif { if (!(adSource.Payload is AdDocumentPayload)) throw new ArgumentException("adSource must contain a payload of type AdDocumentPayload", "adPayload"); var adDoc = (AdDocumentPayload)adSource.Payload; // do an extra check to catch an empty payload before we get any further. if (adDoc.AdPods.Count == 0) { VpaidController.TrackErrorUrl(adDoc.Error, Microsoft.Media.Advertising.VpaidController.Error_NoAd); var playExection = new PlayException(new LoadException(new Exception("No ads found."))); LogError(adSource, playExection); throw playExection; } // create a new token that we can cancel independently var masterCancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); var playTasks = PlayAdAsync(adDoc, adSource, startTimeout, masterCancellationToken.Token, progress); try { activeOperation = new ActiveOperation(playTasks.Secondary, masterCancellationToken); await playTasks.Primary; } catch (PlayException) { activeOperation = null; throw; } }