示例#1
0
 public HiveEventPublisher(HiveEvents supportedEvents)
 {
     _supportedEvents          = supportedEvents;
     _activeEvents             = HiveEvents.None;
     _addEventSubscribers      = null;
     _removingEventSubscribers = null;
 }
示例#2
0
 public void Subscribe(IHiveEventSubscriber <T, TSize, TIterator> subscriber, HiveEvents toEvents)
 {
     if ((toEvents & HiveEvents.Added) == HiveEvents.Added)
     {
         Subscribe(subscriber, HiveEvents.Added, ref _addEventSubscribers);
     }
     if ((toEvents & HiveEvents.Removing) == HiveEvents.Removing)
     {
         Subscribe(subscriber, HiveEvents.Removing, ref _removingEventSubscribers);
     }
 }
示例#3
0
 public void Unsubscribe(IHiveEventSubscriber <T, TSize, TIterator> subscriber, HiveEvents fromEvents)
 {
     if ((fromEvents & HiveEvents.Added) == HiveEvents.Added && _addEventSubscribers != null)
     {
         _addEventSubscribers.Remove(subscriber);
     }
     if ((fromEvents & HiveEvents.Removing) == HiveEvents.Removing && _removingEventSubscribers != null)
     {
         _removingEventSubscribers.Remove(subscriber);
     }
 }
示例#4
0
        private void Subscribe(IHiveEventSubscriber <T, TSize, TIterator> subscriber, HiveEvents toEvent,
                               ref IList <IHiveEventSubscriber <T, TSize, TIterator> > subscriberList)
        {
            if ((_supportedEvents & toEvent) == 0)
            {
                throw new NotSupportedException(
                          string.Format("The '{0}' event is not supported.", toEvent));
            }

            if (subscriberList == null)
            {
                subscriberList = new List <IHiveEventSubscriber <T, TSize, TIterator> >();
            }
            subscriberList.Add(subscriber);
        }
示例#5
0
 public bool HasSubscriptionForAny(HiveEvents hiveEvents)
 {
     return((_activeEvents & hiveEvents) != HiveEvents.None);
 }
示例#6
0
 public bool HasSubscriptionForAll(HiveEvents hiveEvents)
 {
     return((_activeEvents & hiveEvents) == hiveEvents);
 }