public virtual void unregisterEventHandler(ComponentSystem handler) { foreach (SetMultimap <Type, EventHandlerInfo> eventHandlers in componentSpecificHandlers.Values) { IEnumerator <EventHandlerInfo> eventHandlerIterator = eventHandlers.values().GetEnumerator(); while (eventHandlerIterator.MoveNext()) { EventHandlerInfo eventHandler = eventHandlerIterator.Current; if (eventHandler.Handler.Equals(handler)) { eventHandlerIterator.remove(); } } } IEnumerator <EventHandlerInfo> eventHandlerIterator = generalHandlers.values().GetEnumerator(); while (eventHandlerIterator.MoveNext()) { EventHandlerInfo eventHandler = eventHandlerIterator.Current; if (eventHandler.Handler.Equals(handler)) { eventHandlerIterator.remove(); } } }
public void AddNewEventHandler(string PropertyName, string SettingsName, string MemberBindingName, CallbackEventHandler Handler) { EventHandlerInfo info = new EventHandlerInfo(); info.Property = PropertyName; info.Settings = SettingsName; info.MemberBindingName = MemberBindingName; info.Handler = Handler; Handlers.Add(info); }
private void addToComponentSpecificHandlers(Type type, EventHandlerInfo handlerInfo, Type c) { SetMultimap <Type, EventHandlerInfo> componentMap = componentSpecificHandlers[type]; if (componentMap == null) { componentMap = HashMultimap.create(); componentSpecificHandlers[type] = componentMap; } componentMap.put(c, handlerInfo); }
EventHandlerStatus CreateStatusFromInfo(EventHandlerInfo info, TenantId tenant = null) { var status = new EventHandlerStatus { Alias = info.Alias, Partitioned = info.Partitioned, ScopeId = info.Id.Scope.ToProtobuf(), EventHandlerId = info.Id.EventHandler.ToProtobuf() }; status.EventTypes.AddRange(info.EventTypes.Select(CreateEventType)); status.Tenants.AddRange(CreateScopedStreamProcessorStatus(info, tenant)); return(status); }
private EventHandlerInfo GetEventHandlerInfo(Type genericEventHandlerType, Type eventArgType) { EventHandlerInfo eventHandlerInfo; if (EventHandlerCache.ContainsKey(eventArgType)) { eventHandlerInfo = EventHandlerCache[eventArgType]; } else { eventHandlerInfo = new EventHandlerInfo(); eventHandlerInfo.EventHandlerType = genericEventHandlerType.MakeGenericType(new Type[] {eventArgType}); eventHandlerInfo.EventMethod = eventHandlerInfo.EventHandlerType.GetMethod("HandleEvent"); EventHandlerCache.Add(eventArgType, eventHandlerInfo); } return eventHandlerInfo; }
private void addEventHandler(Type type, EventHandlerInfo handler, ICollection <Type> components) { if (components.Count == 0) { generalHandlers.put(type, handler); foreach (Type childType in childEvents.get(type)) { generalHandlers.put(childType, handler); } } else { foreach (Type c in components) { addToComponentSpecificHandlers(type, handler, c); foreach (Type childType in childEvents.get(type)) { addToComponentSpecificHandlers(childType, handler, c); } } } }
public static StreamProcessorId GetFilterStreamId(this EventHandlerInfo info) => new (info.Id.Scope, info.Id.EventHandler, StreamId.EventLog);
IEnumerable <TenantScopedStreamProcessorStatus> CreateScopedStreamProcessorStatus(EventHandlerInfo info, TenantId tenant = null) { var state = _eventHandlers.CurrentStateFor(info.Id); if (!state.Success) { throw state.Exception; } return(tenant == null ? _streamProcessorStatusConverter.Convert(state.Result) : _streamProcessorStatusConverter.ConvertForTenant(state.Result, tenant)); }