Skip to content

PhoenixOrigin/EventEmitter

Repository files navigation

EventEmitter

Very simple event emitter library made in java

How it works

It creates "channels" which can be fired events upon. You can assign each callback a priority and cancel it during the callback (Callbacks already fired will not be reversed somehow). Events can be anything as long as they extend the Event class.

Usage Javadoc

Add library

Gradle

Groovy

dependencies {
    implementation 'io.github.phoenixorigin:eventemitter:1.0.0'
}

Kotlin

dependencies {
    implementation("io.github.phoenixorigin:eventemitter:1.0.0")
}

Using it

Generic event handler

EventEmitter<? extends Event> eventEmitter = new EventEmitter<>();

Handling Event

eventEmitter.on("channel", ((channel, event) -> {
    CustomEvent event = (CustomEvent) event;
    // Handle event
}));

Emitting Events

eventEmitter.emit("channel", new CustomEvent());

Event Specific Event Handlers

EventEmitter<CustomEvent> eventEmitter = new EventEmitter<>();

Handling Event

eventEmitter.on("channel", ((channel, event) -> {
    // Handle event. Event will be an instance of whatever was set in EventEmitter instance. 
    // In this case, event will be an instance of CustomEvent
}));

Emitting Events

// Same as normal.
eventEmitter.emit("channel", new CustomEvent());

Priorities

If you need to give certain events priorities over others, you can do

eventEmitter.on("channel", ((channel, event) -> {
    System.out.println(event.e);
}), EventEmitter.Priority.LOW);
// Options are TOP, HIGH, MEDIUM, LOW (Low is default)

Cancelling events

If you need to cancel an event for whatever reason, you can just do

eventEmitter.on("channel", ((channel, event) -> {
    event.cancel();
}));

Unregistering an eventhandler

// Record the UUID of the eventhandler instance
String eventHandlerUUID = eventEmitter.on("channel", ((channel, event) -> {
    // Whatever
}));
// Unregister the instance
eventEmitter.off(eventHandlerUUID);

About

Javascript event emitter clone in java

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages