Example #1
0
 private void UnregisterSubscriberEventsIfNeeded(IWampRawTopicRouterSubscriber subscriber)
 {
     if (subscriber is ISubscriptionNotifier subscriptionNotifier)
     {
         UnregisterSubscriberEvents(subscriptionNotifier);
     }
 }
        public IWampRegistrationSubscriptionToken Subscribe(IWampRawTopicRouterSubscriber subscriber, string topicUri, SubscribeOptions options)
        {
            options = options.WithDefaults();

            MatchTopicContainer topicContainer = GetInnerContainer(options);

            return(topicContainer.Subscribe(subscriber, topicUri, options));
        }
Example #3
0
        private void OnSubscriberLeave(IWampRawTopicRouterSubscriber subscriber)
        {
            UnregisterSubscriberEventsIfNeeded(subscriber);

            if (mSubscribers.Count == 0)
            {
                RaiseTopicEmpty();
            }
        }
Example #4
0
        private void UnregisterSubscriberEventsIfNeeded(IWampRawTopicRouterSubscriber subscriber)
        {
            ISubscriptionNotifier subscriptionNotifier = subscriber as ISubscriptionNotifier;

            if (subscriptionNotifier != null)
            {
                UnregisterSubscriberEvents(subscriptionNotifier);
            }
        }
Example #5
0
        public IWampRegistrationSubscriptionToken Subscribe(IWampRawTopicRouterSubscriber subscriber, string topicUri, SubscribeOptions options)
        {
            lock (mLock)
            {
                IWampTopic topic = GetOrCreateTopicByUri(topicUri);

                IDisposable disposable = topic.Subscribe(subscriber);

                var result = new SubscriptionToken(topic.SubscriptionId, disposable);

                return(result);
            }
        }
Example #6
0
        public IDisposable Subscribe(IWampRawTopicRouterSubscriber subscriber)
        {
            RegisterSubscriberEventsIfNeeded(subscriber);

            mSubscribers.Add(subscriber);

            IDisposable result = Disposable.Create(() =>
            {
                mSubscribers.Remove(subscriber);
                OnSubscriberLeave(subscriber);
            });

            return(result);
        }
Example #7
0
 public IDisposable Subscribe(IWampRawTopicRouterSubscriber subscriber)
 {
     return(mTopic.Subscribe(subscriber));
 }