1
0
mirror of https://github.com/mamoe/mirai.git synced 2025-04-14 23:20:49 +08:00
This commit is contained in:
jiahua.liu 2020-01-27 22:53:57 +08:00
parent 75f21405af
commit 5b8dbf590c
2 changed files with 18 additions and 3 deletions
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io

View File

@ -3,6 +3,8 @@ package net.mamoe.mirai.qqandroid.io
import kotlinx.io.charsets.Charset
import kotlinx.io.core.*
import kotlinx.io.pool.ObjectPool
import kotlinx.serialization.DeserializationStrategy
import net.mamoe.mirai.qqandroid.io.serialization.Jce
import net.mamoe.mirai.qqandroid.network.protocol.jce.RequestPacket
import net.mamoe.mirai.utils.io.DebugLogger
import net.mamoe.mirai.utils.io.readIoBuffer
@ -18,12 +20,16 @@ inline class JceHead(private val value: Long) {
override fun toString(): String {
return "JceHead(tag=$tag, type=$type)"
}
}Z
}
fun <J : JceStruct> ByteArray.readJceStruct(factory: JceStruct.Factory<J>, tag: Int = 0, charset: Charset = CharsetUTF8): J {
fun <J : JceStruct> ByteArray.readJceStruct(
deserializer: DeserializationStrategy<J>,
tag: Int = 0,
charset: Charset = CharsetUTF8
): J {
this.asJceInput(charset).use {
return it.readJceStruct(factory, tag)
return Jce.byCharSet(charset).load(deserializer, this.)
}
}

View File

@ -10,6 +10,7 @@ import kotlinx.serialization.*
import kotlinx.serialization.internal.*
import kotlinx.serialization.modules.EmptyModule
import kotlinx.serialization.modules.SerialModule
import net.mamoe.mirai.qqandroid.io.CharsetUTF8
import net.mamoe.mirai.qqandroid.io.JceEncodeException
import net.mamoe.mirai.qqandroid.io.JceOutput
import net.mamoe.mirai.utils.io.toUHexString
@ -310,6 +311,14 @@ class Jce private constructor(private val charset: JceCharset, context: SerialMo
val UTF8 = Jce(JceCharset.UTF8)
val GBK = Jce(JceCharset.GBK)
public fun byCharSet(c: Charset): Jce {
return if (c === CharsetUTF8) {
UTF8
} else {
GBK
}
}
internal const val BYTE: Int = 0
internal const val DOUBLE: Int = 5
internal const val FLOAT: Int = 4