Ejemplo n.º 1
0
        public void NullArrayReturnsBrackets()
        {
            DequeueResult result = new DequeueResult(null);

            Assert.IsTrue(result.IsOk);
            Assert.AreEqual("[]", result.DataToString());
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        public void EmptyArrayReturnsBrackets()
        {
            DequeueResult result = new DequeueResult(new QueueEntry[0]);

            Assert.IsTrue(result.IsOk);
            Assert.AreEqual("[]", result.DataToString());
        }
Ejemplo n.º 4
0
        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"));
            }
        }
Ejemplo n.º 5
0
        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);
     }
 }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
 static AsyncProducerConsumerQueue()
 {
     FalseResult = new DequeueResult(null, default(T));
 }