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); } } }
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)); }
public void TryDelete_DoesntFailIfDeletingMoreItemsThanExist() { var queue = new HashedQueue <MessageIdentifier>(); var itemsCount = 6; var messageIdentifiers = Enumerable.Range(0, itemsCount) .Select(_ => CreateMessageIdentifier()) .ToList(); for (var i = 0; i < messageIdentifiers.Count - 2; i++) { queue.TryEnqueue(CreateMessageIdentifier()); } queue.TryDelete(messageIdentifiers); }