Commit c378dcb0 authored by Him188's avatar Him188

Add length param

parent db4954ba
...@@ -754,8 +754,8 @@ class Jce private constructor(private val charset: JceCharset, context: SerialMo ...@@ -754,8 +754,8 @@ class Jce private constructor(private val charset: JceCharset, context: SerialMo
return dumpAsPacket(serializer, obj).readBytes() return dumpAsPacket(serializer, obj).readBytes()
} }
fun <T> load(deserializer: DeserializationStrategy<T>, packet: ByteReadPacket): T { fun <T> load(deserializer: DeserializationStrategy<T>, packet: ByteReadPacket, length: Int = packet.remaining.toInt()): T {
packet.readIoBuffer().withUse { packet.readIoBuffer(n = length).withUse {
val decoder = JceDecoder(JceInput(this)) val decoder = JceDecoder(JceInput(this))
return decoder.decode(deserializer) return decoder.decode(deserializer)
} }
......
...@@ -22,8 +22,12 @@ fun <T : JceStruct> BytePacketBuilder.writeJceStruct(serializer: SerializationSt ...@@ -22,8 +22,12 @@ fun <T : JceStruct> BytePacketBuilder.writeJceStruct(serializer: SerializationSt
this.writePacket(Jce.byCharSet(charset).dumpAsPacket(serializer, struct)) this.writePacket(Jce.byCharSet(charset).dumpAsPacket(serializer, struct))
} }
fun <T : JceStruct> ByteReadPacket.readRemainingAsJceStruct(serializer: DeserializationStrategy<T>, charset: JceCharset = JceCharset.UTF8): T { fun <T : JceStruct> ByteReadPacket.readRemainingAsJceStruct(
return Jce.byCharSet(charset).load(serializer, this) serializer: DeserializationStrategy<T>,
charset: JceCharset = JceCharset.UTF8,
length: Int = this.remaining.toInt()
): T {
return Jce.byCharSet(charset).load(serializer, this, length)
} }
/** /**
...@@ -33,7 +37,7 @@ fun <T : JceStruct> ByteReadPacket.decodeUniPacket(deserializer: Deserialization ...@@ -33,7 +37,7 @@ fun <T : JceStruct> ByteReadPacket.decodeUniPacket(deserializer: Deserialization
return decodeUniRequestPacketAndDeserialize(name) { return decodeUniRequestPacketAndDeserialize(name) {
it.read { it.read {
discardExact(1) discardExact(1)
this.readRemainingAsJceStruct(deserializer) this.readRemainingAsJceStruct(deserializer, length = (this.remaining - 1).toInt())
} }
} }
} }
...@@ -45,7 +49,7 @@ fun <T : ProtoBuf> ByteReadPacket.decodeUniPacket(deserializer: DeserializationS ...@@ -45,7 +49,7 @@ fun <T : ProtoBuf> ByteReadPacket.decodeUniPacket(deserializer: DeserializationS
return decodeUniRequestPacketAndDeserialize(name) { return decodeUniRequestPacketAndDeserialize(name) {
it.read { it.read {
discardExact(1) discardExact(1)
this.readRemainingAsProtoBuf(deserializer) this.readRemainingAsProtoBuf(deserializer, (this.remaining - 1).toInt())
} }
} }
} }
...@@ -89,8 +93,8 @@ fun <T : ProtoBuf> ByteArray.loadAs(deserializer: DeserializationStrategy<T>): T ...@@ -89,8 +93,8 @@ fun <T : ProtoBuf> ByteArray.loadAs(deserializer: DeserializationStrategy<T>): T
/** /**
* load * load
*/ */
fun <T : ProtoBuf> Input.readRemainingAsProtoBuf(serializer: DeserializationStrategy<T>): T { fun <T : ProtoBuf> ByteReadPacket.readRemainingAsProtoBuf(serializer: DeserializationStrategy<T>, length: Int = this.remaining.toInt()): T {
return ProtoBufWithNullableSupport.load(serializer, this.readBytes()) return ProtoBufWithNullableSupport.load(serializer, this.readBytes(length))
} }
/** /**
......
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