Example #1
0
        private void ThrottleRouteDiscoveryRequests(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                try
                {
                    IList <MessageRoute> missingRoutes;
                    if (requests.TryPeek(out missingRoutes, discoveryConfiguration.MissingRoutesDiscoveryRequestsPerSend))
                    {
                        foreach (var messageRoute in missingRoutes)
                        {
                            SendDiscoverMessageRouteMessage(messageRoute);
                        }
                    }

                    discoveryConfiguration.MissingRoutesDiscoverySendingPeriod.Sleep(token);

                    requests.TryDelete(missingRoutes);
                }
                catch (OperationCanceledException)
                {
                }
                catch (Exception err)
                {
                    logger.Error(err);
                }
            }
        }
Example #2
0
        public void TryDelete_DeletesOnlySpecificItems()
        {
            var queue = new HashedQueue <MessageIdentifier>();

            var ms1 = CreateMessageIdentifier();
            var ms2 = CreateMessageIdentifier();

            queue.TryEnqueue(ms1);
            queue.TryEnqueue(ms2);

            queue.TryDelete(new[] { ms2 });

            IList <MessageIdentifier> messageIdentifiers;

            Assert.IsTrue(queue.TryPeek(out messageIdentifiers, 2));
            Assert.AreEqual(ms1, messageIdentifiers.First());

            queue.TryDelete(new[] { ms1 });
            Assert.IsFalse(queue.TryPeek(out messageIdentifiers, 2));
        }
Example #3
0
        public void TryEnqueue_DoesntInsertDuplicatedItems()
        {
            var queue = new HashedQueue <MessageIdentifier>();

            var messageIdentifier = CreateMessageIdentifier();

            Assert.IsTrue(queue.TryEnqueue(messageIdentifier));
            Assert.IsFalse(queue.TryEnqueue(messageIdentifier));

            IList <MessageIdentifier> messageIdentifiers;

            queue.TryPeek(out messageIdentifiers, 10);
            Assert.AreEqual(1, messageIdentifiers.Count);
        }
Example #4
0
        public void TryEnqueue_AddsItemsAtEnd()
        {
            var queue = new HashedQueue <MessageIdentifier>();

            var ms1 = CreateMessageIdentifier();
            var ms2 = CreateMessageIdentifier();

            queue.TryEnqueue(ms1);
            queue.TryEnqueue(ms2);

            IList <MessageIdentifier> messageIdentifiers;

            queue.TryPeek(out messageIdentifiers, 2);

            Assert.AreEqual(ms1, messageIdentifiers.First());
            Assert.AreEqual(ms2, messageIdentifiers.Second());
        }
Example #5
0
        public void TryEnqueue_DoesntInsertItemsMoreThanMaxQueueLengthSize()
        {
            var maxQueueLength = 2;
            var queue          = new HashedQueue <MessageIdentifier>(maxQueueLength);

            for (var i = 0; i < maxQueueLength + 2; i++)
            {
                if (i < maxQueueLength)
                {
                    Assert.IsTrue(queue.TryEnqueue(CreateMessageIdentifier()));
                }
                else
                {
                    Assert.IsFalse(queue.TryEnqueue(CreateMessageIdentifier()));
                }
            }

            IList <MessageIdentifier> messageIdentifiers;

            queue.TryPeek(out messageIdentifiers, maxQueueLength + 2);
            Assert.AreEqual(maxQueueLength, messageIdentifiers.Count);
        }