aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt')
-rw-r--r--src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt b/src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt
index eba71bc..7eb0ecd 100644
--- a/src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt
+++ b/src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt
@@ -1,7 +1,14 @@
package moe.nea.notenoughupdates.events
import java.util.concurrent.CopyOnWriteArrayList
+import moe.nea.notenoughupdates.NotEnoughUpdates
+/**
+ * A pubsub event bus.
+ *
+ * [subscribe] to events [publish]ed on this event bus.
+ * Subscriptions may not necessarily be delivered in the order or registering.
+ */
open class NEUEventBus<T : NEUEvent> {
data class Handler<T>(val invocation: (T) -> Unit, val receivesCancelled: Boolean)
@@ -17,7 +24,11 @@ open class NEUEventBus<T : NEUEvent> {
fun publish(event: T): T {
for (function in toHandle) {
if (function.receivesCancelled || event !is NEUEvent.Cancellable || !event.cancelled) {
- function.invocation(event)
+ try {
+ function.invocation(event)
+ } catch (e: Exception) {
+ NotEnoughUpdates.logger.error("Caught exception during processing event $event", e)
+ }
}
}
return event