Made event registration resilient against double registrations

This commit is contained in:
Thorsten Sommer 2026-03-23 13:31:34 +01:00
parent e416552467
commit 1436ffd7e0
Signed by untrusted user who does not match committer: tsommer
GPG Key ID: 371BBA77A02C0108
3 changed files with 4 additions and 4 deletions

View File

@ -100,7 +100,7 @@ public abstract class MSGComponentBase : ComponentBase, IDisposable, IMessageBus
Event.PLUGINS_RELOADED,
};
this.MessageBus.ApplyFilters(this, filterComponents, eventsList.ToArray());
this.MessageBus.ApplyFilters(this, filterComponents, eventsList.ToHashSet());
}
protected virtual void DisposeResources()

View File

@ -33,10 +33,10 @@ public sealed class MessageBus
/// <param name="receiver">That's you, the receiver.</param>
/// <param name="filterComponents">A list of components for which you want to receive messages. Use an empty list to receive messages from all components.</param>
/// <param name="events">A list of events for which you want to receive messages.</param>
public void ApplyFilters(IMessageBusReceiver receiver, ComponentBase[] filterComponents, Event[] events)
public void ApplyFilters(IMessageBusReceiver receiver, ComponentBase[] filterComponents, HashSet<Event> events)
{
this.componentFilters[receiver] = filterComponents;
this.componentEvents[receiver] = events;
this.componentEvents[receiver] = events.ToArray();
}
public void RegisterComponent(IMessageBusReceiver receiver)

View File

@ -11,6 +11,6 @@ public static class MessageBusExtensions
public static void ApplyFilters(this IMessageBusReceiver component, ComponentBase[] components, Event[] events)
{
MessageBus.INSTANCE.ApplyFilters(component, components, events);
MessageBus.INSTANCE.ApplyFilters(component, components, events.ToHashSet());
}
}