mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-24 06:50:08 +08:00
Add debug functions
This commit is contained in:
parent
9145eeb4b3
commit
ef7dd73dc0
@ -6,10 +6,7 @@ import kotlinx.io.core.ByteReadPacket
|
|||||||
import kotlinx.io.core.readBytes
|
import kotlinx.io.core.readBytes
|
||||||
import kotlinx.io.core.readUInt
|
import kotlinx.io.core.readUInt
|
||||||
import kotlinx.io.core.readULong
|
import kotlinx.io.core.readULong
|
||||||
import net.mamoe.mirai.utils.io.UVarInt
|
import net.mamoe.mirai.utils.io.*
|
||||||
import net.mamoe.mirai.utils.io.readUVarInt
|
|
||||||
import net.mamoe.mirai.utils.io.toReadPacket
|
|
||||||
import net.mamoe.mirai.utils.io.toUHexString
|
|
||||||
import kotlin.jvm.JvmStatic
|
import kotlin.jvm.JvmStatic
|
||||||
|
|
||||||
// ProtoBuf utilities
|
// ProtoBuf utilities
|
||||||
@ -143,29 +140,34 @@ fun ByteReadPacket.readProtoMap(length: Long = this.remaining): ProtoMap {
|
|||||||
while (this.remaining != expectingRemaining) {
|
while (this.remaining != expectingRemaining) {
|
||||||
require(this.remaining > expectingRemaining) { "Expecting to read $length bytes, but read ${expectingRemaining + length - this.remaining}" }
|
require(this.remaining > expectingRemaining) { "Expecting to read $length bytes, but read ${expectingRemaining + length - this.remaining}" }
|
||||||
|
|
||||||
val id = ProtoFieldId(readUVarInt())
|
try {
|
||||||
|
val id = ProtoFieldId(readUVarInt())
|
||||||
|
|
||||||
fun readValue(): Any = when (id.type) {
|
fun readValue(): Any = when (id.type) {
|
||||||
ProtoType.VAR_INT -> UVarInt(readUVarInt())
|
ProtoType.VAR_INT -> UVarInt(readUVarInt())
|
||||||
ProtoType.BIT_32 -> readUInt()
|
ProtoType.BIT_32 -> readUInt()
|
||||||
ProtoType.BIT_64 -> readULong()
|
ProtoType.BIT_64 -> readULong()
|
||||||
ProtoType.LENGTH_DELIMI -> tryReadProtoMapOrByteArray(readUVarInt().toInt())
|
ProtoType.LENGTH_DELIMI -> tryReadProtoMapOrByteArray(readUVarInt().toInt())
|
||||||
|
|
||||||
ProtoType.START_GROUP -> Unit
|
ProtoType.START_GROUP -> Unit
|
||||||
ProtoType.END_GROUP -> Unit
|
ProtoType.END_GROUP -> Unit
|
||||||
}
|
|
||||||
|
|
||||||
if (map.containsKey(id)) {
|
|
||||||
if (map[id] is MutableList<*>) {
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
(map[id] as MutableList<Any>) += readValue()
|
|
||||||
} else {
|
|
||||||
map[id] = mutableListOf(map[id]!!)
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
(map[id] as MutableList<Any>) += readValue()
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
map[id] = readValue()
|
if (map.containsKey(id)) {
|
||||||
|
if (map[id] is MutableList<*>) {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
(map[id] as MutableList<Any>) += readValue()
|
||||||
|
} else {
|
||||||
|
map[id] = mutableListOf(map[id]!!)
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
(map[id] as MutableList<Any>) += readValue()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
map[id] = readValue()
|
||||||
|
}
|
||||||
|
} catch (e: IllegalStateException) {
|
||||||
|
e.logStacktrace()
|
||||||
|
return map
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return map
|
return map
|
||||||
|
@ -10,6 +10,8 @@ import net.mamoe.mirai.utils.internal.printCompareHex
|
|||||||
|
|
||||||
internal object DebugLogger : MiraiLogger by DefaultLogger("Packet Debug")
|
internal object DebugLogger : MiraiLogger by DefaultLogger("Packet Debug")
|
||||||
|
|
||||||
|
internal fun Throwable.logStacktrace(message: String? = null) = DebugLogger.error(message, this)
|
||||||
|
|
||||||
internal fun debugPrintln(any: Any?) = DebugLogger.debug(any)
|
internal fun debugPrintln(any: Any?) = DebugLogger.debug(any)
|
||||||
|
|
||||||
@Deprecated("Low efficiency, only for debug purpose", ReplaceWith("this"))
|
@Deprecated("Low efficiency, only for debug purpose", ReplaceWith("this"))
|
||||||
|
Loading…
Reference in New Issue
Block a user