public void RemoveSubscription(ISubscription subscription) { if (subscription == null) { throw new ArgumentNullException("subscription"); } try { SubscriptionLock.EnterWriteLock(); MarkUsed(); Subscriptions.Remove(subscription); if (Subscriptions.Count == 0) { // HasSubscriptions -> NoSubscriptions Interlocked.CompareExchange(ref State, TopicState.NoSubscriptions, TopicState.HasSubscriptions); } } finally { SubscriptionLock.ExitWriteLock(); } }
public void AddSubscription(ISubscription subscription) { if (subscription == null) { throw new ArgumentNullException("subscription"); } try { SubscriptionLock.EnterWriteLock(); MarkUsed(); Subscriptions.Add(subscription); // Created -> HasSubscriptions Interlocked.CompareExchange(ref State, TopicState.HasSubscriptions, TopicState.NoSubscriptions); } finally { SubscriptionLock.ExitWriteLock(); } }
public void RemoveSubscription(ISubscription subscription) { if (subscription == null) { throw new ArgumentNullException("subscription"); } try { SubscriptionLock.EnterWriteLock(); _lastUsed = DateTime.UtcNow; if (_subscriptionIdentities.Remove(subscription.Identity)) { Subscriptions.Remove(subscription); } if (Subscriptions.Count == 0) { // Change the state from active -> no subs Interlocked.CompareExchange(ref State, TopicState.NoSubscriptions, TopicState.Active); } } finally { SubscriptionLock.ExitWriteLock(); } }
public void AddSubscription(ISubscription subscription) { try { SubscriptionLock.EnterWriteLock(); _lastUsed = DateTime.UtcNow; if (_subcriptionIdentities.Add(subscription.Identity)) { Subscriptions.Add(subscription); } } finally { SubscriptionLock.ExitWriteLock(); } }
public void AddSubscription(ISubscription subscription) { if (subscription == null) { throw new ArgumentNullException("subscription"); } try { SubscriptionLock.EnterWriteLock(); _lastUsed = DateTime.UtcNow; if (_subscriptionIdentities.Add(subscription.Identity)) { Subscriptions.Add(subscription); } } finally { SubscriptionLock.ExitWriteLock(); } }