Esempio n. 1
0
        public void SubscribeEvent <T>(Delegate eventHandler, IEntityEventSubscriber s)
            where T : EntityEventArgs
        {
            Type eventType = typeof(T);

            if (!_eventSubscriptions.ContainsKey(eventType))
            {
                _eventSubscriptions.Add(eventType, new List <Delegate> {
                    eventHandler
                });
            }
            else if (!_eventSubscriptions[eventType].Contains(eventHandler))
            {
                _eventSubscriptions[eventType].Add(eventHandler);
            }

            if (!_inverseEventSubscriptions.ContainsKey(s))
            {
                _inverseEventSubscriptions.Add(
                    s,
                    new Dictionary <Type, Delegate>()
                    );
            }

            if (!_inverseEventSubscriptions[s].ContainsKey(eventType))
            {
                _inverseEventSubscriptions[s].Add(eventType, eventHandler);
            }
        }
Esempio n. 2
0
        public static void SubscribeSessionEvent <T>(this IEventBus eventBus, EventSource source,
                                                     IEntityEventSubscriber subscriber, EntitySessionEventHandler <T> handler)
        {
            var wrapper = new HandlerWrapper <T>(handler);

            eventBus.SubscribeEvent <EntitySessionMessage <T> >(source, subscriber, wrapper.Invoke);
        }
Esempio n. 3
0
        public void UnsubscribeEvent <T>(IEntityEventSubscriber s) where T : EntityEventArgs
        {
            Type eventType = typeof(T);

            if (_inverseEventSubscriptions.ContainsKey(s) && _inverseEventSubscriptions[s].ContainsKey(eventType))
            {
                UnsubscribeEvent(eventType, _inverseEventSubscriptions[s][eventType], s);
            }
        }
Esempio n. 4
0
 public void RemoveSubscribedEvents(IEntityEventSubscriber subscriber)
 {
     if (_inverseEventSubscriptions.ContainsKey(subscriber))
     {
         foreach (KeyValuePair <Type, Delegate> keyValuePair in _inverseEventSubscriptions[subscriber])
         {
             UnsubscribeEvent(keyValuePair.Key, keyValuePair.Value, subscriber);
         }
     }
 }
Esempio n. 5
0
 public void UnsubscribeEvent(Type eventType, Delegate evh, IEntityEventSubscriber s)
 {
     if (_eventSubscriptions.ContainsKey(eventType) && _eventSubscriptions[eventType].Contains(evh))
     {
         _eventSubscriptions[eventType].Remove(evh);
     }
     if (_inverseEventSubscriptions.ContainsKey(s) && _inverseEventSubscriptions[s].ContainsKey(eventType))
     {
         _inverseEventSubscriptions[s].Remove(eventType);
     }
 }
Esempio n. 6
0
        public void RemoveSubscribedEvents(IEntityEventSubscriber subscriber)
        {
            if (!_inverseEventSubscriptions.TryGetValue(subscriber, out var val))
            {
                return;
            }

            foreach (var keyValuePair in val.ToList())
            {
                UnsubscribeEvent(keyValuePair.Key, keyValuePair.Value, subscriber);
            }
        }
Esempio n. 7
0
        public static void SubscribeSessionEvent <T>(
            this IEventBus eventBus,
            EventSource source,
            IEntityEventSubscriber subscriber,
            EntitySessionEventHandler <T> handler,
            Type orderType,
            Type[]?before = null,
            Type[]?after  = null)
        {
            var wrapper = new HandlerWrapper <T>(handler);

            eventBus.SubscribeEvent <EntitySessionMessage <T> >(
                source,
                subscriber,
                wrapper.Invoke,
                orderType,
                before, after);
        }
Esempio n. 8
0
 public void UnsubscribeEvent <T>(IEntityEventSubscriber s) where T : EntityEventArgs
 {
     EntityManager.UnsubscribeEvent <T>(s);
 }
Esempio n. 9
0
 //Convenience thing.
 public void SubscribeEvent <T>(EntityEventHandler <EntityEventArgs> evh, IEntityEventSubscriber s) where T : EntityEventArgs
 {
     EntityManager.SubscribeEvent <T>(evh, s);
 }