Esempio n. 1
0
        /// <inheritdoc/>
        public void Unsubscribe <TMessage>(
            ITinyMessageSubscriptionToken subscriptionToken) where TMessage : class, ITinyMessage
        {
            if (subscriptionToken is null)
            {
                throw new ArgumentNullException(nameof(subscriptionToken));
            }

            _messageHub.Unsubscribe <TMessage>(subscriptionToken);
        }
Esempio n. 2
0
            /// <summary>
            /// Initializes a new instance of the TinyMessageSubscription class.
            /// </summary>
            /// <param name="destination">Destination object</param>
            /// <param name="deliveryAction">Delivery action</param>
            /// <param name="messageFilter">Filter function</param>
            public StrongTinyMessageSubscription(
                ITinyMessageSubscriptionToken subscriptionToken,
                Action <TMessage> deliveryAction,
                Func <TMessage, bool> messageFilter)
            {
                if (subscriptionToken == null)
                {
                    throw new ArgumentNullException("subscriptionToken");
                }

                if (deliveryAction == null)
                {
                    throw new ArgumentNullException("deliveryAction");
                }

                if (messageFilter == null)
                {
                    throw new ArgumentNullException("messageFilter");
                }

                _SubscriptionToken = subscriptionToken;
                _DeliveryAction    = deliveryAction;
                _MessageFilter     = messageFilter;
            }
Esempio n. 3
0
            /// <summary>
            /// Initializes a new instance of the WeakTinyMessageSubscription class.
            /// </summary>
            /// <param name="destination">Destination object</param>
            /// <param name="deliveryAction">Delivery action</param>
            /// <param name="messageFilter">Filter function</param>
            public WeakTinyMessageSubscription(
                ITinyMessageSubscriptionToken subscriptionToken,
                Action <TMessage> deliveryAction,
                Func <TMessage, bool> messageFilter)
            {
                if (subscriptionToken == null)
                {
                    throw new ArgumentNullException("subscriptionToken");
                }

                if (deliveryAction == null)
                {
                    throw new ArgumentNullException("deliveryAction");
                }

                if (messageFilter == null)
                {
                    throw new ArgumentNullException("messageFilter");
                }

                _SubscriptionToken = subscriptionToken;
                _DeliveryAction    = new WeakReference(deliveryAction);
                _MessageFilter     = new WeakReference(messageFilter);
            }
Esempio n. 4
0
        private void RemoveSubscriptionInternal <TMessage>(
            ITinyMessageSubscriptionToken subscriptionToken)
            where TMessage : class, ITinyMessage
        {
            if (subscriptionToken == null)
            {
                throw new ArgumentNullException("subscriptionToken");
            }

            lock ( _SubscriptionsPadlock )
            {
                List <SubscriptionItem> currentSubscriptions;
                if (!_Subscriptions.TryGetValue(typeof(TMessage), out currentSubscriptions))
                {
                    return;
                }

                var currentlySubscribed = (from sub in currentSubscriptions
                                           where ReferenceEquals(sub.Subscription.SubscriptionToken, subscriptionToken)
                                           select sub).ToList();

                currentlySubscribed.ForEach(sub => currentSubscriptions.Remove(sub));
            }
        }
Esempio n. 5
0
 /// <inheritdoc/>
 public void Unsubscribe(
     ITinyMessageSubscriptionToken subscriptionToken)
 {
     subscriptionToken?.Dispose();
 }
Esempio n. 6
0
 /// <summary>
 /// Unsubscribe from a particular message type.
 ///
 /// Does not throw an exception if the subscription is not found.
 /// </summary>
 /// <typeparam name="TMessage">Type of message</typeparam>
 /// <param name="subscriptionToken">Subscription token received from Subscribe</param>
 public void Unsubscribe <TMessage>(
     ITinyMessageSubscriptionToken subscriptionToken) where TMessage : class, ITinyMessage
 {
     RemoveSubscriptionInternal <TMessage>(subscriptionToken);
 }