Appccelerate.EventBroker.Internals.EventTopic.AddSubscription C# (CSharp) Method

AddSubscription() public method

public AddSubscription ( ISubscription subscription ) : void
subscription ISubscription
return void
        public void AddSubscription(ISubscription subscription)
        {
            this.Clean();

            this.ThrowIfRepeatedSubscription(subscription.Subscriber, subscription.HandlerMethodName);
            foreach (IPublication publication in this.publications)
            {
                ThrowIfPublisherAndSubscriberEventArgumentsMismatch(subscription, publication);
                ThrowIfSubscriptionHandlerDoesNotMatchHandlerRestrictionOfPublisher(subscription, publication);
            }

            lock (this)
            {
                this.subscriptions = new List<ISubscription>(this.subscriptions) { subscription };

                this.extensionHost.ForEach(extension => extension.CreatedSubscription(this, subscription));
            }

            this.extensionHost.ForEach(extension => extension.AddedSubscription(this, subscription));
        }