public void CancelSubscription(DataNotificationSubscription subscription) { foreach (var kvp in this.NotificationCallbackRegister) { var storedSubscription = kvp.Value.FirstOrDefault(x => x.SubscriptionIdentifier == subscription.SubscriptionIdentifier); if (storedSubscription != null) { kvp.Value.Remove(storedSubscription); return; } } }
public DataNotificationSubscription Subscribe <TNotification>(Action <TNotification> notificationCallback, string?topicFilter) { var subscriptionIdentifier = Guid.NewGuid(); var externalHandle = new DataNotificationSubscription(subscriptionIdentifier, this); var internalHandle = new StoredSubscription(subscriptionIdentifier, notificationCallback, topicFilter); var type = typeof(TNotification); if (this.NotificationCallbackRegister.TryGetValue(type, out var registeredCallbacks)) { registeredCallbacks.Add(internalHandle); } else { this.NotificationCallbackRegister[type] = new List <StoredSubscription> { internalHandle }; } return(externalHandle); }