Update all codec to suspend; added a default ProtocolCryptoContext implementation

This commit is contained in:
2026-09-07 07:40:08 +08:00
parent 687039f69a
commit 641df674e4
296 files changed
+2199 -1818

No files matched your search

@@ -7,6 +7,6 @@
package cn.rtast.libmc.mcping.rconlib
import cn.rtast.libmc.common.BytesBuffer
import cn.rtast.libmc.common.stream.BytesBuffer
internal fun BytesBuffer.writeNull() = writeByte(0x00)
internal suspend fun BytesBuffer.writeNull() = writeByte(0x00)
@@ -7,10 +7,10 @@
package cn.rtast.libmc.mcping.rconlib
import cn.rtast.libmc.common.ByteOrder
import cn.rtast.libmc.common.BytesBuffer
import cn.rtast.libmc.common.ReadChannel
import cn.rtast.libmc.common.WriteChannel
import cn.rtast.libmc.common.stream.ByteOrder
import cn.rtast.libmc.common.stream.BytesBuffer
import cn.rtast.libmc.common.stream.ReadChannel
import cn.rtast.libmc.common.stream.WriteChannel
internal abstract class Packet {
abstract val requestId: Int
@@ -25,7 +25,7 @@ internal abstract class Packet {
open val length: Int
get() = 4 + 4 + payloadLength + 2
fun writePayload(buf: BytesBuffer) {
suspend fun writePayload(buf: BytesBuffer) {
buf.writeInt(length, ByteOrder.LITTLE_ENDIAN)
buf.writeInt(requestId, ByteOrder.LITTLE_ENDIAN)
buf.writeInt(type, ByteOrder.LITTLE_ENDIAN)
@@ -35,7 +35,7 @@ internal abstract class Packet {
}
companion object Codec {
fun decode(channel: ReadChannel): ResponsePacket {
suspend fun decode(channel: ReadChannel): ResponsePacket {
val length = channel.readInt(ByteOrder.LITTLE_ENDIAN)
val requestId = channel.readInt(ByteOrder.LITTLE_ENDIAN)
val type = channel.readInt(ByteOrder.LITTLE_ENDIAN)
@@ -73,11 +73,11 @@ internal data class ResponsePacket(
) : Packet()
internal fun WriteChannel.sendPacket(packet: Packet) {
internal suspend fun WriteChannel.sendPacket(packet: Packet) {
val buf = BytesBuffer()
packet.writePayload(buf)
writeFully(buf.toByteArray())
flush()
}
internal fun ReadChannel.readPacket(): ResponsePacket = Packet.decode(this)
internal suspend fun ReadChannel.readPacket(): ResponsePacket = Packet.decode(this)
@@ -9,9 +9,9 @@
package cn.rtast.libmc.mcping.rconlib
import cn.rtast.libmc.common.LibMCContext
import cn.rtast.libmc.common.ReadChannel
import cn.rtast.libmc.common.Socket
import cn.rtast.libmc.common.WriteChannel
import cn.rtast.libmc.common.stream.ReadChannel
import cn.rtast.libmc.common.stream.Socket
import cn.rtast.libmc.common.stream.WriteChannel
import kotlin.jvm.JvmName
import kotlin.jvm.JvmOverloads
@@ -25,7 +25,7 @@ public class RCONClient internal constructor(
private var writeChannel: WriteChannel? = null
private var currentRequestId = 1
public fun connect(password: String): Boolean {
public suspend fun connect(password: String): Boolean {
socket = Socket(host, port, context)
readChannel = socket!!.openReadChannel()
writeChannel = socket!!.openWriteChannel()
@@ -34,7 +34,7 @@ public class RCONClient internal constructor(
return readChannel!!.readPacket().requestId != -1
}
public fun command(command: String): String {
public suspend fun command(command: String): String {
val reqId = currentRequestId++
val commandPacket = ExecCommandPacket(command, reqId)
writeChannel!!.sendPacket(commandPacket)