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 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); } } }