Browse Source

Added unified, simple event bus to eventually replace controller "notifiers"

split-DB
catbref 4 years ago
parent
commit
ce5cf87094
  1. 5
      src/main/java/org/qortal/event/Event.java
  2. 33
      src/main/java/org/qortal/event/EventBus.java
  3. 6
      src/main/java/org/qortal/event/Listener.java

5
src/main/java/org/qortal/event/Event.java

@ -0,0 +1,5 @@
package org.qortal.event;
public interface Event {
}

33
src/main/java/org/qortal/event/EventBus.java

@ -0,0 +1,33 @@
package org.qortal.event;
import java.util.ArrayList;
import java.util.List;
public enum EventBus {
INSTANCE;
private static final List<Listener> LISTENERS = new ArrayList<>();
public void addListener(Listener newListener) {
synchronized (LISTENERS) {
LISTENERS.add(newListener);
}
}
public void removeListener(Listener listener) {
synchronized (LISTENERS) {
LISTENERS.remove(listener);
}
}
public void notify(Event event) {
List<Listener> clonedListeners;
synchronized (LISTENERS) {
clonedListeners = new ArrayList<>(LISTENERS);
}
for (Listener listener : clonedListeners)
listener.listen(event);
}
}

6
src/main/java/org/qortal/event/Listener.java

@ -0,0 +1,6 @@
package org.qortal.event;
@FunctionalInterface
public interface Listener {
void listen(Event event);
}
Loading…
Cancel
Save