Update all codec to suspend; added a default ProtocolCryptoContext implementation
This commit is contained in:
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)
|
||||
|
||||
Reference in New Issue
Block a user