Пример #1
0
        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();
                }
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
    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);
    }
Пример #5
0
		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;
		}
Пример #6
0
 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);
Пример #8
0
    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));
    }