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); } }
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); }
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); } }
public void RemoveSubscribedEvents(IEntityEventSubscriber subscriber) { if (_inverseEventSubscriptions.ContainsKey(subscriber)) { foreach (KeyValuePair <Type, Delegate> keyValuePair in _inverseEventSubscriptions[subscriber]) { UnsubscribeEvent(keyValuePair.Key, keyValuePair.Value, subscriber); } } }
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); } }
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); } }
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); }
public void UnsubscribeEvent <T>(IEntityEventSubscriber s) where T : EntityEventArgs { EntityManager.UnsubscribeEvent <T>(s); }
//Convenience thing. public void SubscribeEvent <T>(EntityEventHandler <EntityEventArgs> evh, IEntityEventSubscriber s) where T : EntityEventArgs { EntityManager.SubscribeEvent <T>(evh, s); }