fix: change EventBus registration behaviour
This commit is contained in:
@@ -45,8 +45,10 @@ public class EventBus {
|
|||||||
Class<?> eventType = params[0];
|
Class<?> eventType = params[0];
|
||||||
|
|
||||||
Listener listener = Listener.of(host, subscribe.priority(), method);
|
Listener listener = Listener.of(host, subscribe.priority(), method);
|
||||||
List<Listener> registry = listeners.computeIfAbsent(eventType,
|
List<Listener> registry = listeners.computeIfAbsent(
|
||||||
k -> new CopyOnWriteArrayList<>());
|
eventType,
|
||||||
|
k -> new CopyOnWriteArrayList<>()
|
||||||
|
);
|
||||||
|
|
||||||
register(registry, listener);
|
register(registry, listener);
|
||||||
}
|
}
|
||||||
@@ -58,10 +60,15 @@ public class EventBus {
|
|||||||
|
|
||||||
private void register(List<Listener> registry, Listener target) {
|
private void register(List<Listener> registry, Listener target) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
for (Listener listener : registry) {
|
for (Listener listener : registry) {
|
||||||
|
if (target.priority() > listener.priority()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
if (target.priority() > listener.priority()) break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
registry.add(i, target);
|
registry.add(i, target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user