diff options
Diffstat (limited to 'src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt')
-rw-r--r-- | src/main/kotlin/moe/nea/notenoughupdates/events/NEUEventBus.kt | 13 |
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 |