chore: separated processor and api

This commit is contained in:
zaaarf 2023-08-22 11:09:27 +02:00
parent d48726c80f
commit bfc4753e66
No known key found for this signature in database
GPG key ID: 6445A5CD15E5B40C
5 changed files with 1 additions and 84 deletions

View file

@ -8,7 +8,7 @@ Suppose that you have a simple event system, with annotated listeners receiving
That works, of course, but it's not that fast. Ah, if only you knew in advance, such as at compile time, who's going to get called with what... oh, wait, you do.
GEB is just a basic event bus in itself; the actual magician is the processor, who writes into each event direct calls to all subscribers, to take as little time as possible.
GEB is just a basic event bus in itself; the actual magician is the [processor](https://github.com/zaaarf/geb-processor), who writes into each event direct calls to all subscribers, to take as little time as possible.
## What's with the name?
"GEB Bus" kind of sounds like "Jeb Bush" and I think it's very funny. Please clap.

View file

@ -1,17 +0,0 @@
package ftbsc.geb.api.annotations;
import ftbsc.geb.api.IBus;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* This annotation should mark either a static instance of {@link IBus}
* or a static method returning one.
* @since 0.1.0
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.CLASS)
public @interface BusInstance {}

View file

@ -1,17 +0,0 @@
package ftbsc.geb.api.annotations;
import ftbsc.geb.api.IEvent;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Marks a class as an Event. It should implement the {@link IEvent} interface.
* It doesn't need to be abstract, but it can never be final.
* @since 0.1.0
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface Event {}

View file

@ -1,32 +0,0 @@
package ftbsc.geb.api.annotations;
import ftbsc.geb.api.IEvent;
import ftbsc.geb.api.IListener;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Marks the method as a listener. Its parent must implement the {@link IListener} interface.
* The annotated method should only take a single input value, an instance of {@link IEvent};
* it should be either void or boolean; if it's boolean, the return value indicates whether
* the event was canceled.
* @since 0.1.0
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface Listen {
/**
* @return an integer indicating priority level for the listener, defaulting to 0
*/
int priority() default 0;
/**
* @return an array of {@link String}s specifying which buses they should be listening on;
* an empty array means that they should listen on all buses, ignoring identifiers:
* that's probably what you wanted anyway.
*/
String[] on() default {}; //empty array = listen on all of them
}

View file

@ -1,17 +0,0 @@
package ftbsc.geb.api.annotations;
import ftbsc.geb.api.IListener;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* This annotation should mark either be a static instance of {@link IListener}
* or a static method returning one.
* @since 0.1.0
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.CLASS)
public @interface ListenerInstance {}