Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove type parameters on events #21

Merged
merged 1 commit into from
Mar 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -153,7 +153,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 @@ -162,7 +162,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 @@ -183,7 +183,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 @@ -50,8 +50,8 @@ class LavalinkNode(

internal val httpClient = OkHttpClient()

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 @@ -90,7 +90,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 @@ -99,7 +99,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
Loading