Example #1
0
 void RemoveSubscription(MessageSubscription sub)
 {
     lock (_gate)
     {
         _subscriptions = _subscriptions.Remove(sub);
         if (_subscriptions.Count == 0)
         {
             OnLastSubscriptionRemoved();
         }
     }
 }
Example #2
0
        public IDisposable Subscribe(IObserver <IReadOnlyMessage> observer)
        {
            var sub = new MessageSubscription(s => RemoveSubscription(s), observer);

            lock (_gate)
            {
                _subscriptions = _subscriptions.Add(sub);
                if (_subscriptions.Count == 1)
                {
                    OnFirstSubscriptionAdded();
                }
            }
            return(sub);
        }