45 lines
1.3 KiB
Java
45 lines
1.3 KiB
Java
package ctbrec.event;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
import java.util.concurrent.Executors;
|
|
import com.google.common.eventbus.AsyncEventBus;
|
|
import com.google.common.eventbus.EventBus;
|
|
|
|
@Slf4j
|
|
public class EventBusHolder {
|
|
private static Map<String, EventHandler> handlers = new HashMap<>();
|
|
|
|
private EventBusHolder() {}
|
|
|
|
public static final EventBus BUS = new AsyncEventBus(Executors.newFixedThreadPool(2, r -> {
|
|
Thread t = new Thread(r);
|
|
t.setName("EventBus-" + UUID.randomUUID().toString().substring(0, 8));
|
|
t.setPriority(Thread.NORM_PRIORITY - 1);
|
|
return t;
|
|
}));
|
|
|
|
|
|
public static void register(EventHandler handler) {
|
|
if(handlers.containsKey(handler.getId())) {
|
|
log.warn("EventHandler with ID {} is already registered", handler.getId());
|
|
} else {
|
|
BUS.register(handler);
|
|
handlers.put(handler.getId(), handler);
|
|
log.debug("EventHandler with ID {} has been added", handler.getId());
|
|
}
|
|
}
|
|
|
|
public static void unregister(String id) {
|
|
EventHandler handler = handlers.get(id);
|
|
if(handler != null) {
|
|
BUS.unregister(handler);
|
|
handlers.remove(id);
|
|
log.debug("EventHandler with ID {} has been removed", id);
|
|
}
|
|
}
|
|
}
|