All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.lavalink.server.io.EventEmitter.kt Maven / Gradle / Ivy

package lavalink.server.io

import dev.arbjerg.lavalink.api.IPlayer
import dev.arbjerg.lavalink.api.PluginEventHandler
import org.slf4j.Logger
import org.slf4j.LoggerFactory

class EventEmitter(private val context: SocketContext, private val listeners: Collection) {

    companion object {
        private val log: Logger = LoggerFactory.getLogger(EventEmitter::class.java)
    }

    fun onWebSocketOpen(resumed: Boolean) = iterate { it.onWebSocketOpen(context, resumed) }
    fun onSocketContextPaused() = iterate { it.onSocketContextPaused(context) }
    fun onSocketContextDestroyed() = iterate { it.onSocketContextDestroyed(context) }
    fun onWebSocketMessageOut(message: String) = iterate { it.onWebSocketMessageOut(context, message) }
    fun onNewPlayer(player: IPlayer) = iterate { it.onNewPlayer(context, player) }
    fun onDestroyPlayer(player: IPlayer) = iterate { it.onDestroyPlayer(context, player) }

    private fun iterate(func: (PluginEventHandler) -> Unit) {
        listeners.forEach {
            try {
                func(it)
            } catch (e: Exception) {
                log.error("Error handling event", e)
            }
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy