diff --git a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/Gateway.kt b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/Gateway.kt index 5d4c8b4..8ed6a4f 100644 --- a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/Gateway.kt +++ b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/Gateway.kt @@ -71,9 +71,9 @@ class Gateway( // if (frame !is Frame.Text && frame !is Frame.Binary) return@onEach - logger.d { "Received event ${frame.readText()}" } + logger.d { "Received payload ${frame.readText()}" } - val raw = json.decodeFromString(frame.readText()) + val raw = json.decodeFromString(frame.readText()) val seq = this.seq ?: 0 if (seq + 1 == raw.s) { this.seq = raw.s @@ -82,33 +82,33 @@ class Gateway( return@onEach } - when (val msg = raw.asIncoming()) { - is Event.Incoming<*> -> scope.launch { handleEvent(msg) } - is Event.Unknown -> scope.launch { handleUnknownEvent(msg) } + when (val payload = raw.asIncoming()) { + is Payload.Incoming<*> -> scope.launch { handlePayload(payload) } + is Payload.Unknown -> scope.launch { handleUnknownPayload(payload) } } } .launchIn(scope) } - suspend fun handleEvent(e: Event.Incoming<*>) { + suspend fun handlePayload(e: Payload.Incoming<*>) { logger.d { e.toString() } - when (val payload = e.d) { - is Payload.Hello -> handleHello(payload) - is Payload.Ready -> handlers.ready.handle(payload) - is Payload.Heartbeat -> {} - is Payload.HeartbeatAck -> { missedBeats -= 1 } + when (val event = e.d) { + is Event.Hello -> handleHello(event) + is Event.Ready -> handlers.ready.handle(event) + is Event.Heartbeat -> {} + is Event.HeartbeatAck -> { missedBeats -= 1 } } } - suspend fun handleUnknownEvent(e: Event.Unknown) { - logger.w { "Unknown event $e" } + suspend fun handleUnknownPayload(e: Payload.Unknown) { + logger.w { "Unknown payload $e" } } - suspend fun handleHello(e: Payload.Hello) { + suspend fun handleHello(e: Event.Hello) { val token = auth.token ?: throw IllegalStateException("Token missing between connection and hello, cannot send Identify") - Payload.Identify(token = token).pack().send() + Event.Identify(token = token).pack().send() val interval = e.heartbeatInterval.milliseconds scope.launch { @@ -127,7 +127,7 @@ class Gateway( resume(ResumeReason.MissedHeartbeat) break } - Payload.QoSHeartbeat(this@Gateway.seq).pack().send() + Event.QoSHeartbeat(this@Gateway.seq).pack().send() missedBeats += 1 delay(interval) } @@ -160,7 +160,7 @@ class Gateway( is ResumeReason.MissedHeartbeat -> "heartbeat missed" is ResumeReason.SkippedSequence -> - "events skipped one sequence (expected: $seq, actual: ${reason.next})" + "payloads skipped one sequence (expected: $seq, actual: ${reason.next})" is ResumeReason.CloseCode -> "closed with code ${reason.code}" null -> @@ -171,10 +171,10 @@ class Gateway( // TODO } - private suspend inline fun Event.Outgoing.send() { + private suspend inline fun Payload.Outgoing.send() { val ws = ws ?: throw IllegalStateException("Tried to send with no connection") - logger.d { "Sending event $this" } + logger.d { "Sending payload $this" } logger.d { "Raw: ${json.encodeToString(this)}" } ws.send(json.encodeToString(this)) } diff --git a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/Payloads.kt b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/Payloads.kt index c8dbb83..d01469c 100644 --- a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/Payloads.kt +++ b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/Payloads.kt @@ -6,17 +6,17 @@ import kotlinx.serialization.json.JsonElement import moe.lava.neon.core.api.ApiConstants import moe.lava.neon.core.api.structures.User -sealed interface Event { +sealed interface Payload { val op: Int val d: Any? - sealed interface WithSequence : Event { + sealed interface WithSequence : Payload { val s: Int? val t: String? } @Serializable - data class Incoming( + data class Incoming( override val op: Int, override val d: T, override val s: Int?, @@ -24,10 +24,10 @@ sealed interface Event { ) : WithSequence @Serializable - data class Outgoing( + data class Outgoing( override val op: Int, override val d: T, - ) : Event + ) : Payload @Serializable data class Unknown( @@ -39,9 +39,9 @@ sealed interface Event { } @Serializable -sealed interface Payload { - sealed interface Incoming : Payload - sealed interface Outgoing : Payload +sealed interface Event { + sealed interface Incoming : Event + sealed interface Outgoing : Event sealed class Dispatch : Incoming // 1 diff --git a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/SerializingExtensions.kt b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/SerializingExtensions.kt index 15dc08d..2f87726 100644 --- a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/SerializingExtensions.kt +++ b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/SerializingExtensions.kt @@ -6,36 +6,36 @@ import moe.lava.neon.core.api.ApiConstants private val json = ApiConstants.json -fun T.pack(): Event.Outgoing { +fun T.pack(): Payload.Outgoing { val opcode: Int = when (this) { - is Payload.Heartbeat -> 1 - is Payload.Identify -> 2 - is Payload.HeartbeatAck -> 11 - is Payload.QoSHeartbeat -> 40 + is Event.Heartbeat -> 1 + is Event.Identify -> 2 + is Event.HeartbeatAck -> 11 + is Event.QoSHeartbeat -> 40 } - return Event.Outgoing(op = opcode, d = this) + return Payload.Outgoing(op = opcode, d = this) } -fun Event.Unknown.asIncoming() : Event.WithSequence { +fun Payload.Unknown.asIncoming() : Payload.WithSequence { return when (op) { 0 -> when (t) { - "READY" -> decode() + "READY" -> decode() else -> this } - 1 -> decode() - 10 -> decode() - 11 -> decode() + 1 -> decode() + 10 -> decode() + 11 -> decode() else -> this } } -private inline fun Event.Unknown.decode(): Event.Incoming = - Event.Incoming( +private inline fun Payload.Unknown.decode(): Payload.Incoming = + Payload.Incoming( op = op, d = json.decodeFromJsonElement(d!!), s = s, t = t, ) -private inline fun KSerializer.wrap(): KSerializer> = - Event.Incoming.serializer(this) +private inline fun KSerializer.wrap(): KSerializer> = + Payload.Incoming.serializer(this) diff --git a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/handlers/Handler.kt b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/handlers/Handler.kt index 8e79987..7fe148f 100644 --- a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/handlers/Handler.kt +++ b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/handlers/Handler.kt @@ -1,7 +1,7 @@ package moe.lava.neon.core.api.gateway.handlers -import moe.lava.neon.core.api.gateway.Payload +import moe.lava.neon.core.api.gateway.Event -sealed interface Handler { - fun handle(payload: T) +sealed interface Handler { + fun handle(event: T) } diff --git a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/handlers/ReadyHandler.kt b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/handlers/ReadyHandler.kt index 5addf23..b44ee0b 100644 --- a/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/handlers/ReadyHandler.kt +++ b/core/src/commonMain/kotlin/moe/lava/neon/core/api/gateway/handlers/ReadyHandler.kt @@ -2,13 +2,13 @@ package moe.lava.neon.core.api.gateway.handlers import co.touchlab.kermit.Logger import dev.zacsweers.metro.Inject -import moe.lava.neon.core.api.gateway.Payload +import moe.lava.neon.core.api.gateway.Event private val logger = Logger.withTag("neon.core.api.events/ready") @Inject -class ReadyHandler : Handler { - override fun handle(payload: Payload.Ready) { - logger.i { "Received payload $payload" } +class ReadyHandler : Handler { + override fun handle(event: Event.Ready) { + logger.i { "Received payload $event" } } }