Beispiel #1
0
        public void SubscriptionTrackerCanReset()
        {
            // add one
            var subscriptionTracker = new SubscriptionTracker();
            var guids = new List <Guid>();

            guids.Add(new Guid("d970d9f3-b15b-4c88-8bdc-34fb3f9d119c"));
            Assert.AreEqual("1:e2a5278b5a85bfc1ec258003b697183d8a3330eb750ec3439cbcbfe19e285b87", subscriptionTracker.Add(guids));
            Assert.AreEqual(1, subscriptionTracker.Count);

            // clear and re-add
            var duplicates = @"
				a3c9a21f-e6b4-43e6-a651-ec6c9afde1a0
				a3c9a21f-e6b4-43e6-a651-ec6c9afde1a0
				d4b506e5-c70f-47a7-902b-764d2c8ac64a
				3ccc7db1-bc5e-476d-b348-752e3695a317
				51dd1835-824f-49c7-be96-45f8cb768aa8
				a3c9a21f-e6b4-43e6-a651-ec6c9afde1a0
				a3c9a21f-e6b4-43e6-a651-ec6c9afde1a0
				38edea28-9bca-419a-a85b-8393f468f354
				5f21501d-4f10-4258-b7f5-a1979a124b7b
				e45bbd78-93dd-42bc-bda9-137f204fbba4"
                             .Split('\n')
                             .Select(s => s.Trim())
                             .Where(s => !string.IsNullOrEmpty(s))
                             .Select(s => new Guid(s));

            Assert.AreEqual("7:73f2e8b827163446542377ef1da37d9a2dc7b0c0d70f824ed9a06a92446bd78b", subscriptionTracker.Reset(duplicates));

            // clear
            Assert.AreEqual("0:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", subscriptionTracker.Reset());
            Assert.AreEqual(0, subscriptionTracker.Count);
        }
Beispiel #2
0
        public IDisposable RegisterNotificationHandler <TNotification>(Action <TNotification> handler)
            where TNotification : INotification
        {
            var subscription = _asyncMessageBus.Subscribe(handler);

            return(SubscriptionTracker <TNotification> .Track(subscription));
        }
Beispiel #3
0
        public void ForgetSend <TRequest>(TRequest request, CancellationToken cancellationToken = default)
            where TRequest : IAsyncRequest
        {
            SubscriptionTracker <TRequest> .ThrowIfNoSubscribers();

            _asyncMessageBus.PublishAsync(request, cancellationToken).Forget();
        }
Beispiel #4
0
        public UniTask AsyncSend <TRequest>(TRequest request, CancellationToken cancellationToken)
            where TRequest : IAsyncRequest
        {
            SubscriptionTracker <TRequest> .ThrowIfNoSubscribers();

            return(_asyncMessageBus.PublishAsync(request, cancellationToken));
        }
Beispiel #5
0
        public IDisposable RegisterRequestHandler <TRequest>(Action <TRequest> handler)
            where TRequest : IRequest
        {
            SubscriptionTracker <TRequest> .ThrowIfHasSubscribers();

            var subscription = _asyncMessageBus.Subscribe(handler);

            return(SubscriptionTracker <TRequest> .Track(subscription));
        }
Beispiel #6
0
        public IDisposable RegisterRequestHandler <TRequest>(
            Func <TRequest, CancellationToken, UniTask> handler,
            CancellationToken cancellationToken = default)
            where TRequest : IAsyncRequest
        {
            SubscriptionTracker <TRequest> .ThrowIfHasSubscribers();

            var subscription = _asyncMessageBus.Subscribe <TRequest>(
                (msg, cancellationToken2) => Handle(handler, msg, cancellationToken, cancellationToken2)
                );

            return(SubscriptionTracker <TRequest> .Track(subscription));
        }
Beispiel #7
0
        public void SubscriptionTrackerCanAddAndRemoveGuids()
        {
            // add one
            var subscriptionTracker = new SubscriptionTracker();
            var guids = new List <Guid>();

            guids.Add(new Guid("d970d9f3-b15b-4c88-8bdc-34fb3f9d119c"));
            Assert.AreEqual("1:e2a5278b5a85bfc1ec258003b697183d8a3330eb750ec3439cbcbfe19e285b87", subscriptionTracker.Add(guids));
            Assert.AreEqual(1, subscriptionTracker.Count);

            // add many
            var moreGuids = @"
				87c0b82e-00bb-4e7e-b1d4-ae53b4bd6feb
				d4b506e5-c70f-47a7-902b-764d2c8ac64a
				3ccc7db1-bc5e-476d-b348-752e3695a317
				ae6ba09b-6f2a-4ae9-85bd-d770cbfdabc0
				81c897ed-ec29-468c-894a-6397911373aa
				51dd1835-824f-49c7-be96-45f8cb768aa8
				a3c9a21f-e6b4-43e6-a651-ec6c9afde1a0
				38edea28-9bca-419a-a85b-8393f468f354
				5f21501d-4f10-4258-b7f5-a1979a124b7b
				e45bbd78-93dd-42bc-bda9-137f204fbba4"
                            .Split('\n')
                            .Select(s => s.Trim())
                            .Where(s => !string.IsNullOrEmpty(s))
                            .Select(s => new Guid(s));

            Assert.AreEqual("11:5540cde62cf9871c1b8f69bfd7f2b0047c8ee6f0a613f4e10739ab059adbd618", subscriptionTracker.Add(moreGuids));
            Assert.AreEqual(11, subscriptionTracker.Count);

            // add a few guids already included in the set
            var duplicates = @"
				d4b506e5-c70f-47a7-902b-764d2c8ac64a
				3ccc7db1-bc5e-476d-b348-752e3695a317
				51dd1835-824f-49c7-be96-45f8cb768aa8
				a3c9a21f-e6b4-43e6-a651-ec6c9afde1a0
				38edea28-9bca-419a-a85b-8393f468f354
				5f21501d-4f10-4258-b7f5-a1979a124b7b
				e45bbd78-93dd-42bc-bda9-137f204fbba4"
                             .Split('\n')
                             .Select(s => s.Trim())
                             .Where(s => !string.IsNullOrEmpty(s))
                             .Select(s => new Guid(s));

            // checksum should not be changed
            Assert.AreEqual("11:5540cde62cf9871c1b8f69bfd7f2b0047c8ee6f0a613f4e10739ab059adbd618", subscriptionTracker.Add(duplicates));
            Assert.AreEqual(11, subscriptionTracker.Count);

            // remove a few guids
            Assert.AreEqual("4:854614224fd9c031cc2315959677c3796154f385afdba799a6088ab759bb83a8", subscriptionTracker.Remove(duplicates));
            Assert.AreEqual(4, subscriptionTracker.Count);

            // remove again already removed guid, checksum should not be changed
            Assert.AreEqual("4:854614224fd9c031cc2315959677c3796154f385afdba799a6088ab759bb83a8", subscriptionTracker.Remove(new[]
            {
                new Guid("a3c9a21f-e6b4-43e6-a651-ec6c9afde1a0")
            }));

            // remove again the same guids, checksum should not be changed
            Assert.AreEqual("4:854614224fd9c031cc2315959677c3796154f385afdba799a6088ab759bb83a8", subscriptionTracker.Remove(duplicates));
            Assert.AreEqual(4, subscriptionTracker.Count);

            // remove all except one
            Assert.AreEqual("1:e2a5278b5a85bfc1ec258003b697183d8a3330eb750ec3439cbcbfe19e285b87", subscriptionTracker.Remove(moreGuids));
            Assert.AreEqual(1, subscriptionTracker.Count);

            // remove the first one
            Assert.AreEqual("0:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", subscriptionTracker.Remove(new[]
            {
                new Guid("d970d9f3-b15b-4c88-8bdc-34fb3f9d119c")
            }));

            // nothing left
            Assert.AreEqual(0, subscriptionTracker.Count);
        }
Beispiel #8
0
        public void Send <TRequest>(TRequest request) where TRequest : IRequest
        {
            SubscriptionTracker <TRequest> .ThrowIfNoSubscribers();

            _asyncMessageBus.Publish(request);
        }
Beispiel #9
0
        public void Publish <TNotification>(TNotification notification) where TNotification : INotification
        {
            SubscriptionTracker <TNotification> .ThrowIfNoSubscribers();

            _asyncMessageBus.Publish(notification);
        }