コード例 #1
0
ファイル: PubSubBroker.cs プロジェクト: santedb/santedb-api
 /// <summary>
 /// Pub-sub definition has been subscribed
 /// </summary>
 private void PubSubSubscribed(object sender, Event.DataPersistedEventArgs <PubSubSubscriptionDefinition> e)
 {
     lock (this.m_lock)
     {
         var lt = typeof(PubSubRepositoryListener <>).MakeGenericType(e.Data.ResourceType);
         if (!this.m_repositoryListeners.Any(o => o.GetType().Equals(lt)))
         {
             this.m_repositoryListeners.Add(this.m_serviceManager.CreateInjected(lt) as IDisposable);
         }
     }
 }
コード例 #2
0
ファイル: PubSubBroker.cs プロジェクト: santedb/santedb-api
 /// <summary>
 /// Fired when the pub-sub manager has indicated a subscription has been removed
 /// </summary>
 private void PubSubUnSubscribed(object sender, Event.DataPersistedEventArgs <PubSubSubscriptionDefinition> e)
 {
     lock (this.m_lock)
     {
         // If there are no further types subscribed then remove the listener
         var resourceXml = e.Data.ResourceType.GetSerializationName();
         if (!this.m_pubSubManager.FindSubscription(o => o.ResourceTypeName == resourceXml).Any())
         {
             var lt       = typeof(PubSubRepositoryListener <>).MakeGenericType(e.Data.ResourceType);
             var listener = this.m_repositoryListeners.FirstOrDefault(o => lt.Equals(o.GetType()));
             listener.Dispose();
             this.m_repositoryListeners.Remove(listener);
         }
     }
 }