コード例 #1
0
 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;
         }
     }
 }
コード例 #2
0
        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);
        }