Esempio n. 1
0
        private SubscriptionToken AddSubscriptionInternal <TMessage>(Action <TMessage> deliveryAction, Func <TMessage, bool> messageFilter, bool strongReference, IMapleMessageProxy proxy)
            where TMessage : class, IMapleMessage
        {
            if (deliveryAction == null)
            {
                throw new ArgumentNullException(nameof(deliveryAction), $"{nameof(deliveryAction)} {Resources.IsRequired}");
            }

            if (messageFilter == null)
            {
                throw new ArgumentNullException(nameof(messageFilter), $"{nameof(messageFilter)} {Resources.IsRequired}");
            }

            if (proxy == null)
            {
                throw new ArgumentNullException(nameof(proxy), $"{nameof(proxy)} {Resources.IsRequired}");
            }

            lock (_SubscriptionsPadlock)
            {
                var subscriptionToken = new SubscriptionToken(this, typeof(TMessage));

                IMapleMessageSubscription subscription;
                if (strongReference)
                {
                    subscription = new StrongMapleMessageSubscription <TMessage>(_translationProvider, subscriptionToken, deliveryAction, messageFilter);
                }
                else
                {
                    subscription = new WeakMapleMessageSubscription <TMessage>(_translationProvider, subscriptionToken, deliveryAction, messageFilter);
                }

                _subscriptions.Add(new SubscriptionItem(proxy, subscription));

                return(subscriptionToken);
            }
        }
Esempio n. 2
0
 public SubscriptionToken Subscribe <TMessage>(Action <TMessage> deliveryAction, Func <TMessage, bool> messageFilter, bool useStrongReferences, IMapleMessageProxy proxy)
     where TMessage : class, IMapleMessage
 {
     return(AddSubscriptionInternal(deliveryAction, messageFilter, useStrongReferences, proxy));
 }
Esempio n. 3
0
 public MapleMessenger(ITranslationProvider translationProvider, ILoggingService log, IMapleMessageProxy mapleMessageProxy)
 {
     _translationProvider = translationProvider ?? throw new ArgumentNullException(nameof(translationProvider), $"{nameof(translationProvider)} {Resources.IsRequired}");
     _log = log ?? throw new ArgumentNullException(nameof(log), $"{nameof(log)} {Resources.IsRequired}");
     _mapleMessageProxy = mapleMessageProxy ?? throw new ArgumentNullException(nameof(mapleMessageProxy), $"{nameof(mapleMessageProxy)} {Resources.IsRequired}");
 }
Esempio n. 4
0
 public SubscriptionToken Subscribe <TMessage>(Action <TMessage> deliveryAction, IMapleMessageProxy proxy)
     where TMessage : class, IMapleMessage
 {
     return(AddSubscriptionInternal(deliveryAction, (m) => true, true, proxy));
 }
Esempio n. 5
0
 public SubscriptionItem(IMapleMessageProxy proxy, IMapleMessageSubscription subscription)
 {
     Proxy        = proxy;
     Subscription = subscription;
 }