forked from Qortal/qortal
Added unified, simple event bus to eventually replace controller "notifiers"
This commit is contained in:
parent
ec2c9d2a44
commit
ce5cf87094
5
src/main/java/org/qortal/event/Event.java
Normal file
5
src/main/java/org/qortal/event/Event.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package org.qortal.event;
|
||||||
|
|
||||||
|
public interface Event {
|
||||||
|
|
||||||
|
}
|
33
src/main/java/org/qortal/event/EventBus.java
Normal file
33
src/main/java/org/qortal/event/EventBus.java
Normal file
@ -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
Normal file
6
src/main/java/org/qortal/event/Listener.java
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package org.qortal.event;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface Listener {
|
||||||
|
void listen(Event event);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user