Skip to content

Commit

Permalink
Remove types on events (#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
duncte123 committed Mar 10, 2024
1 parent 08dabd4 commit 56fe8c5
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 21 deletions.
10 changes: 5 additions & 5 deletions src/main/kotlin/dev/arbjerg/lavalink/client/LavalinkClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ class LavalinkClient(val userId: Long) : Closeable, Disposable {
get() = linkMap.values.toList()

// Events forwarded from all nodes.
private val sink: Sinks.Many<ClientEvent<*>> = Sinks.many().multicast().onBackpressureBuffer()
val flux: Flux<ClientEvent<*>> = sink.asFlux()
private val sink: Sinks.Many<ClientEvent> = Sinks.many().multicast().onBackpressureBuffer()
val flux: Flux<ClientEvent> = sink.asFlux()
private val reference: Disposable = flux.subscribe()

/**
Expand Down Expand Up @@ -216,7 +216,7 @@ class LavalinkClient(val userId: Long) : Closeable, Disposable {
*
* @return a [Flux] of [ClientEvent]s
*/
fun <T : ClientEvent<*>> on(type: Class<T>): Flux<T> {
fun <T : ClientEvent> on(type: Class<T>): Flux<T> {
return flux.ofType(type)
}

Expand All @@ -225,7 +225,7 @@ class LavalinkClient(val userId: Long) : Closeable, Disposable {
*
* @return a [Flux] of [ClientEvent]s
*/
inline fun <reified T : ClientEvent<*>> on() = on(T::class.java)
inline fun <reified T : ClientEvent> on() = on(T::class.java)

/**
* Close the client and disconnect all nodes.
Expand All @@ -246,7 +246,7 @@ class LavalinkClient(val userId: Long) : Closeable, Disposable {
}

private fun listenForNodeEvent(node: LavalinkNode) {
node.on<ClientEvent<Message>>()
node.on<ClientEvent>()
.subscribe {
try {
sink.tryEmitNext(it)
Expand Down
8 changes: 4 additions & 4 deletions src/main/kotlin/dev/arbjerg/lavalink/client/LavalinkNode.kt
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ class LavalinkNode(

internal val httpClient = OkHttpClient.Builder().callTimeout(nodeOptions.httpTimeout, TimeUnit.MILLISECONDS).build()

internal val sink: Many<ClientEvent<*>> = Sinks.many().multicast().onBackpressureBuffer()
val flux: Flux<ClientEvent<*>> = sink.asFlux()
internal val sink: Many<ClientEvent> = Sinks.many().multicast().onBackpressureBuffer()
val flux: Flux<ClientEvent> = sink.asFlux()
private val reference: Disposable = flux.subscribe()

internal val rest = LavalinkRestClient(this)
Expand Down Expand Up @@ -89,7 +89,7 @@ class LavalinkNode(
*
* @return a [Flux] of [ClientEvent]s
*/
fun <T : ClientEvent<*>> on(type: Class<T>): Flux<T> {
fun <T : ClientEvent> on(type: Class<T>): Flux<T> {
return flux.ofType(type)
}

Expand All @@ -98,7 +98,7 @@ class LavalinkNode(
*
* @return a [Flux] of [ClientEvent]s
*/
inline fun <reified T : ClientEvent<*>> on() = on(T::class.java)
inline fun <reified T : ClientEvent> on() = on(T::class.java)

/**
* Retrieves a list of all players from the lavalink node.
Expand Down
22 changes: 11 additions & 11 deletions src/main/kotlin/dev/arbjerg/lavalink/client/events.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ internal fun Message.toClientEvent(node: LavalinkNode) = when (this) {
is Message.StatsEvent -> StatsEvent(node, frameStats, players, playingPlayers, uptime, memory, cpu)
}

sealed class ClientEvent<T : Message>(open val node: LavalinkNode)
sealed class ClientEvent(open val node: LavalinkNode)

// Normal events
data class ReadyEvent(override val node: LavalinkNode, val resumed: Boolean, val sessionId: String)
: ClientEvent<Message.ReadyEvent>(node)
: ClientEvent(node)

data class PlayerUpdateEvent(override val node: LavalinkNode, val guildId: Long, val state: PlayerState)
: ClientEvent<Message.PlayerUpdateEvent>(node)
: ClientEvent(node)

data class StatsEvent(
override val node: LavalinkNode,
Expand All @@ -34,23 +34,23 @@ data class StatsEvent(
val uptime: Long,
val memory: Memory,
val cpu: Cpu
) : ClientEvent<Message.StatsEvent>(node)
) : ClientEvent(node)

// Player events
sealed class EmittedEvent<T : Message.EmittedEvent>(override val node: LavalinkNode, open val guildId: Long)
: ClientEvent<T>(node)
sealed class EmittedEvent(override val node: LavalinkNode, open val guildId: Long)
: ClientEvent(node)

data class TrackStartEvent(override val node: LavalinkNode, override val guildId: Long, val track: Track)
: EmittedEvent<Message.EmittedEvent.TrackStartEvent>(node, guildId)
: EmittedEvent(node, guildId)

data class TrackEndEvent(override val node: LavalinkNode, override val guildId: Long, val track: Track, val endReason: AudioTrackEndReason)
: EmittedEvent<Message.EmittedEvent.TrackEndEvent>(node, guildId)
: EmittedEvent(node, guildId)

data class TrackExceptionEvent(override val node: LavalinkNode, override val guildId: Long, val track: Track, val exception: TrackException)
: EmittedEvent<Message.EmittedEvent.TrackExceptionEvent>(node, guildId)
: EmittedEvent(node, guildId)

data class TrackStuckEvent(override val node: LavalinkNode, override val guildId: Long, val track: Track, val thresholdMs: Long)
: EmittedEvent<Message.EmittedEvent.TrackStuckEvent>(node, guildId)
: EmittedEvent(node, guildId)

data class WebSocketClosedEvent(override val node: LavalinkNode, override val guildId: Long, val code: Int, val reason: String, val byRemote: Boolean)
: EmittedEvent<Message.EmittedEvent.WebSocketClosedEvent>(node, guildId)
: EmittedEvent(node, guildId)
2 changes: 1 addition & 1 deletion src/test/kotlin/testScript.kt
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ fun main() {
println("[event 2] Node '${event.node.name}' has stats, current players: ${event.playingPlayers}/${event.players}")
}

client.on<EmittedEvent<*>>()
client.on<EmittedEvent>()
.subscribe { event ->
if (event is TrackStartEvent) {
println("Is a track start event!")
Expand Down

0 comments on commit 56fe8c5

Please sign in to comment.