add WebSocket timers

- EventDispatcher, TimerEvent add.
This commit is contained in:
dalbodeule
2024-07-30 22:40:07 +09:00
parent da13e8b834
commit a9ee40e936
6 changed files with 179 additions and 11 deletions

View File

@@ -0,0 +1,19 @@
package space.mori.chzzk_bot.common.events
interface Event
interface EventHandler<E: Event> {
suspend fun handle(event: E)
}
object EventDispatcher {
private val handlers = mutableMapOf<Class<out Event>, MutableList<EventHandler<out Event>>>()
fun <E : Event> register(eventClass: Class<E>, handler: EventHandler<E>) {
handlers.computeIfAbsent(eventClass) { mutableListOf() }.add(handler)
}
suspend fun <E : Event> dispatch(event: E) {
handlers[event::class.java]?.forEach { (it as EventHandler<E>).handle(event) }
}
}

View File

@@ -0,0 +1,11 @@
package space.mori.chzzk_bot.common.events
enum class TimerType {
UPTIME, TIMER, REMOVE
}
class TimerEvent(
val uid: String,
val type: TimerType,
val time: String?
): Event