public void NullArrayReturnsBrackets() { DequeueResult result = new DequeueResult(null); Assert.IsTrue(result.IsOk); Assert.AreEqual("[]", result.DataToString()); }
private async Task RemoveSelectedTracksFromNowPlayingAsync() { // Remove Tracks from PlaybackService (this dequeues the Tracks) DequeueResult dequeueResult = await this.playbackService.DequeueAsync(this.SelectedTracks); if (!dequeueResult.IsSuccess) { this.dialogService.ShowNotification( 0xe711, 16, ResourceUtils.GetString("Language_Error"), ResourceUtils.GetString("Language_Error_Removing_From_Now_Playing"), ResourceUtils.GetString("Language_Ok"), true, ResourceUtils.GetString("Language_Log_File")); } // Remove the ViewModels from Tracks (this updates the UI) foreach (TrackViewModel track in dequeueResult.DequeuedTracks) { if (this.Tracks.Contains(track)) { this.Tracks.Remove(track); } } this.TracksCount = this.Tracks.Count; }
public void EmptyArrayReturnsBrackets() { DequeueResult result = new DequeueResult(new QueueEntry[0]); Assert.IsTrue(result.IsOk); Assert.AreEqual("[]", result.DataToString()); }
private async Task RemoveSelectedTracksFromNowPlayingAsync() { // Remove Tracks from PlaybackService (this dequeues the Tracks) DequeueResult dequeueResult = await this.playbackService.DequeueAsync(this.SelectedTracks); var viewModelsToRemove = new List <KeyValuePair <string, TrackViewModel> >(); await Task.Run(() => { // Collect the ViewModels to remove viewModelsToRemove.AddRange(this.Tracks.Where(vm => dequeueResult.DequeuedTracks.Select(t => t.Key) .ToList() .Contains(vm.Key))); }); // Remove the ViewModels from Tracks (this updates the UI) foreach (KeyValuePair <string, TrackViewModel> vm in viewModelsToRemove) { this.Tracks.Remove(vm); } this.TracksCount = this.Tracks.Count; if (!dequeueResult.IsSuccess) { this.dialogService.ShowNotification( 0xe711, 16, ResourceUtils.GetStringResource("Language_Error"), ResourceUtils.GetStringResource("Language_Error_Removing_From_Now_Playing"), ResourceUtils.GetStringResource("Language_Ok"), true, ResourceUtils.GetStringResource("Language_Log_File")); } }
public void EntriesJoinedInJsonArray(int entriesCount) { Guid[] entriesIdentifiers = Enumerable.Repeat(0, entriesCount).Select(p => Guid.NewGuid()).ToArray(); string[] entries = entriesIdentifiers.Select(p => $"{{\"Tag\":\"tag\", \"D\":\"{p}\"}}").ToArray(); DequeueResult result = new DequeueResult(entries.Select(p => QueueEntry.FromRequestString(new QueueContext("WHATEVER"), p, 1000)).ToArray()); Assert.IsTrue(result.IsOk); string resultString = result.DataToString(); Assert.AreEqual('[', resultString.First()); Assert.AreEqual(']', resultString.Last()); Assert.IsTrue(entriesIdentifiers.SequenceEqual(JArray.Parse(resultString).Select(p => Guid.Parse(p["D"].ToString())))); }
private void WalletManager_OnDequeue(object?sender, DequeueResult e) { try { foreach (var success in e.Successful.Where(x => x.Value.Any())) { DequeueReason reason = success.Key; if (reason == DequeueReason.ApplicationExit) { SleepingCoins = success.Value; } } } catch (Exception ex) { Logger.LogWarning(ex); } }
public async Task RemoveSelectedTracksFromNowPlayingAsync() { this.allowFillAllLists = false; // Remove TrackInfos from PlaybackService (this dequeues the Tracks) DequeueResult dequeueResult = await this.playbackService.Dequeue(this.SelectedTracks); var trackInfoViewModelsToRemove = new List <TrackInfoViewModel>(); await Task.Run(() => { // Collect the TrackInfoViewModels to remove foreach (TrackInfoViewModel tivm in this.Tracks) { if (dequeueResult.DequeuedTracks.Select((t) => t.Path).ToList().Contains(tivm.TrackInfo.Path)) { trackInfoViewModelsToRemove.Add(tivm); } } }); // Remove the TrackInfoViewModels from Tracks (this updates the UI) foreach (TrackInfoViewModel tivm in trackInfoViewModelsToRemove) { this.Tracks.Remove(tivm); } this.TracksCount = this.Tracks.Count; if (!dequeueResult.IsSuccess) { this.dialogService.ShowNotification( 0xe711, 16, ResourceUtils.GetStringResource("Language_Error"), ResourceUtils.GetStringResource("Language_Error_Removing_From_Now_Playing"), ResourceUtils.GetStringResource("Language_Ok"), true, ResourceUtils.GetStringResource("Language_Log_File")); } this.allowFillAllLists = true; }
public async Task <IDequeueResult> DequeueAsync(int minItems, int maxItems, CancellationToken token = default) { if (minItems < 1) { minItems = 1; } if (maxItems < minItems) { maxItems = minItems; } var queueState = _queueMonitor.GetCurrent(); var headIndex = _metaData.HeadIndex; while (queueState.TailIndex - headIndex < minItems) { queueState = await queueState.NextUpdate .WaitAsync(token) .ConfigureAwait(false); } var availableElements = queueState.TailIndex - headIndex; var noOfItems = (int)Math.Min(availableElements, maxItems); var data = Enumerable.Range(0, noOfItems) .Select(offset => headIndex + offset) .Select(ReadItem) .ToList(); var result = new DequeueResult(data, new ItemRange(headIndex, noOfItems), CommitBatch, RejectBatch); return(result); }
static AsyncProducerConsumerQueue() { FalseResult = new DequeueResult(null, default(T)); }