seppuku/src/main/java/team/stiff/pomelo/EventManager.java

52 lines
1.4 KiB
Java

package team.stiff.pomelo;
import team.stiff.pomelo.handler.EventHandler;
/**
* Pomelo is a simplistic event-bus that supports event filtering.
* <p>
* todo; thread-safety
* todo; junit testing
*
* @author Daniel
* @since May 31, 2017
*/
public interface EventManager {
/**
* Notify all registered {@link EventHandler}s that are listening
* for the passed event that the event has been dispatched.
*
* @param event event instance
* @param <E> event type
* @return passed event instance
*/
<E> E dispatchEvent(E event);
/**
* Checks if the given listener object is registered.
*
* @param listener listener instance
* @return true if registered; false otherwise
*/
boolean isRegisteredListener(Object listener);
/**
* Register an object as an event listener that listens for the provided
* eventClass type to be dispatched.
*
* @param listener event listener instance
* @return true if successfully added; false otherwise
*/
boolean addEventListener(Object listener);
/**
* Remove an event listener from the bus so it does not listen
* for event dispatches anymore.
*
* @param listener event listener instance
* @return true if successfully removed; false otherwise
*/
boolean removeEventListener(Object listener);
}