Commit e44e7b39 authored by Him188's avatar Him188

Daily QQA update: JceInput

parent 6b6499e9
package net.mamoe.mirai.qqandroid.network.io package net.mamoe.mirai.qqandroid.network.io
import kotlinx.io.core.BytePacketBuilder
abstract class JceStruct { abstract class JceStruct {
abstract fun writeTo(builder: JceOutput) abstract fun writeTo(builder: JceOutput)
interface Factory<out T : JceStruct> {
fun newInstanceFrom(input: JceInput): T
}
} }
\ No newline at end of file
package net.mamoe.mirai.qqandroid.network.protocol.jce package net.mamoe.mirai.qqandroid.network.protocol.jce
import net.mamoe.mirai.qqandroid.network.io.JceInput
import net.mamoe.mirai.qqandroid.network.io.JceOutput import net.mamoe.mirai.qqandroid.network.io.JceOutput
import net.mamoe.mirai.qqandroid.network.io.JceStruct import net.mamoe.mirai.qqandroid.network.io.JceStruct
...@@ -17,6 +18,12 @@ class RequestPacket( ...@@ -17,6 +18,12 @@ class RequestPacket(
val sServantName: String = "", val sServantName: String = "",
val status: Map<String, String> = EMPTY_MAP val status: Map<String, String> = EMPTY_MAP
) : JceStruct() { ) : JceStruct() {
companion object : Factory<RequestPacket> {
override fun newInstanceFrom(input: JceInput): RequestPacket {
TODO("not implemented")
}
}
override fun writeTo(builder: JceOutput) { override fun writeTo(builder: JceOutput) {
builder.write(this.iVersion, 1) builder.write(this.iVersion, 1)
builder.write(this.cPacketType, 2) builder.write(this.cPacketType, 2)
......
package net.mamoe.mirai.qqandroid.network.protocol.jce package net.mamoe.mirai.qqandroid.network.protocol.jce
import net.mamoe.mirai.qqandroid.network.io.JceInput
import net.mamoe.mirai.qqandroid.network.io.JceOutput import net.mamoe.mirai.qqandroid.network.io.JceOutput
import net.mamoe.mirai.qqandroid.network.io.JceStruct import net.mamoe.mirai.qqandroid.network.io.JceStruct
...@@ -41,7 +42,12 @@ class SvcReqRegister( ...@@ -41,7 +42,12 @@ class SvcReqRegister(
val vecGuid: ByteArray? = null, val vecGuid: ByteArray? = null,
val vecServerBuf: ByteArray? = null val vecServerBuf: ByteArray? = null
) : JceStruct() { ) : JceStruct() {
companion object : Factory<RequestPacket> {
override fun newInstanceFrom(input: JceInput): RequestPacket {
TODO("not implemented")
}
}
override fun writeTo(builder: JceOutput) { override fun writeTo(builder: JceOutput) {
builder.write(lUin, 0) builder.write(lUin, 0)
builder.write(lBid, 1) builder.write(lBid, 1)
......
...@@ -8,6 +8,7 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.login.LoginPacket ...@@ -8,6 +8,7 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.login.LoginPacket
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.NullPacketId import net.mamoe.mirai.qqandroid.network.protocol.packet.login.NullPacketId
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.NullPacketId.commandName import net.mamoe.mirai.qqandroid.network.protocol.packet.login.NullPacketId.commandName
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.PacketId import net.mamoe.mirai.qqandroid.network.protocol.packet.login.PacketId
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.SvcReqRegisterPacket
import net.mamoe.mirai.utils.cryptor.adjustToPublicKey import net.mamoe.mirai.utils.cryptor.adjustToPublicKey
import net.mamoe.mirai.utils.cryptor.decryptBy import net.mamoe.mirai.utils.cryptor.decryptBy
import net.mamoe.mirai.utils.io.* import net.mamoe.mirai.utils.io.*
...@@ -48,7 +49,8 @@ internal typealias PacketConsumer = suspend (packet: Packet, packetId: PacketId, ...@@ -48,7 +49,8 @@ internal typealias PacketConsumer = suspend (packet: Packet, packetId: PacketId,
@UseExperimental(ExperimentalUnsignedTypes::class) @UseExperimental(ExperimentalUnsignedTypes::class)
internal object KnownPacketFactories : List<PacketFactory<*>> by mutableListOf( internal object KnownPacketFactories : List<PacketFactory<*>> by mutableListOf(
LoginPacket LoginPacket,
SvcReqRegisterPacket
) { ) {
fun findPacketFactory(commandName: String): PacketFactory<*> = this.first { it.id.commandName == commandName } fun findPacketFactory(commandName: String): PacketFactory<*> = this.first { it.id.commandName == commandName }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment