public void AddSubscription(EntityNotificationSubscription <TContext> subscription) { lock (this) { if (!_subscriptions.ContainsKey(subscription.EntityId)) { _subscriptions.Add(subscription.EntityId, new List <EntityNotificationSubscription <TContext> >()); } _subscriptions[subscription.EntityId].Add(subscription); } }
public void RemoveSubscription(EntityNotificationSubscription <TContext> subscription) { lock (this) { if (!_subscriptions.ContainsKey(subscription.EntityId)) { throw new InvalidOperationException($"No subscriptions found for entity {subscription.EntityId}"); } var subscriptions = _subscriptions[subscription.EntityId]; subscriptions.Remove(subscription); if (!subscriptions.Any()) { _subscriptions.Remove(subscription.EntityId); } } }