From 710a28b21deca3a25048f1645abf73e0a83bc588 Mon Sep 17 00:00:00 2001 From: godotg Date: Sun, 7 Jul 2024 13:36:11 +0800 Subject: [PATCH] test[kotlin]: kotlin protocol test --- .../kotlin/com/zfoo/kotlin/ProtocolManager.kt | 18 +- .../com/zfoo/kotlin/packet/ComplexObject.kt | 714 +++++++++--------- .../com/zfoo/kotlin/packet/EmptyObject.kt | 56 +- .../com/zfoo/kotlin/packet/NormalObject.kt | 186 +++-- .../kotlin/com/zfoo/kotlin/packet/ObjectA.kt | 86 ++- .../kotlin/com/zfoo/kotlin/packet/ObjectB.kt | 74 +- .../com/zfoo/kotlin/packet/SimpleObject.kt | 66 +- 7 files changed, 597 insertions(+), 603 deletions(-) diff --git a/protocol/src/test/kotlin/com/zfoo/kotlin/ProtocolManager.kt b/protocol/src/test/kotlin/com/zfoo/kotlin/ProtocolManager.kt index 85d3633d..0986b402 100644 --- a/protocol/src/test/kotlin/com/zfoo/kotlin/ProtocolManager.kt +++ b/protocol/src/test/kotlin/com/zfoo/kotlin/ProtocolManager.kt @@ -1,10 +1,16 @@ package com.zfoo.kotlin import com.zfoo.kotlin.packet.EmptyObject +import com.zfoo.kotlin.packet.EmptyObjectRegistration import com.zfoo.kotlin.packet.ComplexObject +import com.zfoo.kotlin.packet.ComplexObjectRegistration import com.zfoo.kotlin.packet.NormalObject +import com.zfoo.kotlin.packet.NormalObjectRegistration import com.zfoo.kotlin.packet.ObjectA +import com.zfoo.kotlin.packet.ObjectARegistration import com.zfoo.kotlin.packet.ObjectB +import com.zfoo.kotlin.packet.ObjectBRegistration import com.zfoo.kotlin.packet.SimpleObject +import com.zfoo.kotlin.packet.SimpleObjectRegistration class ProtocolManager { companion object { val protocols = arrayOfNulls(Short.MAX_VALUE.toInt()) @@ -12,17 +18,17 @@ class ProtocolManager { @JvmStatic fun initProtocol() { // initProtocol - protocols[0] = EmptyObject.registrationEmptyObject + protocols[0] = EmptyObjectRegistration() protocolIdMap[EmptyObject::class.java] = 0.toShort() - protocols[100] = ComplexObject.registrationComplexObject + protocols[100] = ComplexObjectRegistration() protocolIdMap[ComplexObject::class.java] = 100.toShort() - protocols[101] = NormalObject.registrationNormalObject + protocols[101] = NormalObjectRegistration() protocolIdMap[NormalObject::class.java] = 101.toShort() - protocols[102] = ObjectA.registrationObjectA + protocols[102] = ObjectARegistration() protocolIdMap[ObjectA::class.java] = 102.toShort() - protocols[103] = ObjectB.registrationObjectB + protocols[103] = ObjectBRegistration() protocolIdMap[ObjectB::class.java] = 103.toShort() - protocols[104] = SimpleObject.registrationSimpleObject + protocols[104] = SimpleObjectRegistration() protocolIdMap[SimpleObject::class.java] = 104.toShort() } diff --git a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ComplexObject.kt b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ComplexObject.kt index 9dba335b..42d4629b 100644 --- a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ComplexObject.kt +++ b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ComplexObject.kt @@ -3,6 +3,7 @@ import com.zfoo.kotlin.packet.ObjectA import com.zfoo.kotlin.packet.ObjectB import com.zfoo.kotlin.IProtocolRegistration import com.zfoo.kotlin.ByteBuffer + // 复杂的对象,包括了各种复杂的结构,数组,List,Set,Map class ComplexObject { // byte类型,最简单的整形 @@ -58,366 +59,363 @@ class ComplexObject { // 如果要修改协议并且兼容老协议,需要加上Compatible注解,保持Compatible注解的value自增 var myCompatible: Int = 0 var myObject: ObjectA? = null +} - companion object { - @JvmField - val registrationComplexObject: IProtocolRegistration = object : IProtocolRegistration { - override fun protocolId(): Short { - return 100 - } - - override fun write(buffer: ByteBuffer, packet: Any?) { - if (packet == null) { - buffer.writeInt(0) - return - } - val message = packet as ComplexObject - val beforeWriteIndex = buffer.writeOffset() - buffer.writeInt(36962) - buffer.writeByte(message.a) - buffer.writeByte(message.aa) - buffer.writeByteArray(message.aaa) - buffer.writeByteArray(message.aaaa) - buffer.writeShort(message.b) - buffer.writeShort(message.bb) - buffer.writeShortArray(message.bbb) - buffer.writeShortArray(message.bbbb) - buffer.writeInt(message.c) - buffer.writeInt(message.cc) - buffer.writeIntArray(message.ccc) - buffer.writeIntArray(message.cccc) - buffer.writeLong(message.d) - buffer.writeLong(message.dd) - buffer.writeLongArray(message.ddd) - buffer.writeLongArray(message.dddd) - buffer.writeFloat(message.e) - buffer.writeFloat(message.ee) - buffer.writeFloatArray(message.eee) - buffer.writeFloatArray(message.eeee) - buffer.writeDouble(message.f) - buffer.writeDouble(message.ff) - buffer.writeDoubleArray(message.fff) - buffer.writeDoubleArray(message.ffff) - buffer.writeBool(message.g) - buffer.writeBool(message.gg) - buffer.writeBooleanArray(message.ggg) - buffer.writeBooleanArray(message.gggg) - buffer.writeString(message.jj) - buffer.writeStringArray(message.jjj) - buffer.writePacket(message.kk, 102) - buffer.writeInt(message.kkk.size) - val length0 = message.kkk.size - for (i1 in 0 until length0) { - val element2 = message.kkk[i1] - buffer.writePacket(element2, 102) - } - buffer.writeIntList(message.l) - buffer.writeInt(message.ll.size) - for (element3 in message.ll) { - buffer.writeInt(element3.size) - for (element4 in element3) { - buffer.writeIntList(element4) - } - } - buffer.writeInt(message.lll.size) - for (element5 in message.lll) { - buffer.writePacketList(element5, 102) - } - buffer.writeStringList(message.llll) - buffer.writeInt(message.lllll.size) - for (element6 in message.lllll) { - buffer.writeIntStringMap(element6) - } - buffer.writeIntStringMap(message.m) - buffer.writeIntPacketMap(message.mm, 102) - buffer.writeInt(message.mmm.size) - for ((keyElement7, valueElement8) in message.mmm) { - buffer.writePacket(keyElement7, 102) - buffer.writeIntList(valueElement8) - } - buffer.writeInt(message.mmmm.size) - for ((keyElement9, valueElement10) in message.mmmm) { - buffer.writeInt(keyElement9.size) - for (element11 in keyElement9) { - buffer.writePacketList(element11, 102) - } - buffer.writeInt(valueElement10.size) - for (element12 in valueElement10) { - buffer.writeInt(element12.size) - for (element13 in element12) { - buffer.writeIntList(element13) - } - } - } - buffer.writeInt(message.mmmmm.size) - for ((keyElement14, valueElement15) in message.mmmmm) { - buffer.writeInt(keyElement14.size) - for (element16 in keyElement14) { - buffer.writeIntStringMap(element16) - } - buffer.writeInt(valueElement15.size) - for (i17 in valueElement15) { - buffer.writeIntStringMap(i17) - } - } - buffer.writeIntSet(message.s) - buffer.writeInt(message.ss.size) - for (i18 in message.ss) { - buffer.writeInt(i18.size) - for (i19 in i18) { - buffer.writeIntList(i19) - } - } - buffer.writeInt(message.sss.size) - for (i20 in message.sss) { - buffer.writePacketSet(i20, 102) - } - buffer.writeStringSet(message.ssss) - buffer.writeInt(message.sssss.size) - for (i21 in message.sssss) { - buffer.writeIntStringMap(i21) - } - buffer.writeInt(message.myCompatible) - buffer.writePacket(message.myObject, 102) - buffer.adjustPadding(36962, beforeWriteIndex) - } - - override fun read(buffer: ByteBuffer): Any { - val length = buffer.readInt() - val packet = ComplexObject() - if (length == 0) { - return packet - } - val beforeReadIndex = buffer.readOffset() - val result0 = buffer.readByte() - packet.a = result0 - val result1 = buffer.readByte() - packet.aa = result1 - val array2 = buffer.readByteArray() - packet.aaa = array2 - val array3 = buffer.readByteArray() - packet.aaaa = array3 - val result4 = buffer.readShort() - packet.b = result4 - val result5 = buffer.readShort() - packet.bb = result5 - val array6 = buffer.readShortArray() - packet.bbb = array6 - val array7 = buffer.readShortArray() - packet.bbbb = array7 - val result8 = buffer.readInt() - packet.c = result8 - val result9 = buffer.readInt() - packet.cc = result9 - val array10 = buffer.readIntArray() - packet.ccc = array10 - val array11 = buffer.readIntArray() - packet.cccc = array11 - val result12 = buffer.readLong() - packet.d = result12 - val result13 = buffer.readLong() - packet.dd = result13 - val array14 = buffer.readLongArray() - packet.ddd = array14 - val array15 = buffer.readLongArray() - packet.dddd = array15 - val result16 = buffer.readFloat() - packet.e = result16 - val result17 = buffer.readFloat() - packet.ee = result17 - val array18 = buffer.readFloatArray() - packet.eee = array18 - val array19 = buffer.readFloatArray() - packet.eeee = array19 - val result20 = buffer.readDouble() - packet.f = result20 - val result21 = buffer.readDouble() - packet.ff = result21 - val array22 = buffer.readDoubleArray() - packet.fff = array22 - val array23 = buffer.readDoubleArray() - packet.ffff = array23 - val result24 = buffer.readBool() - packet.g = result24 - val result25 = buffer.readBool() - packet.gg = result25 - val array26 = buffer.readBooleanArray() - packet.ggg = array26 - val array27 = buffer.readBooleanArray() - packet.gggg = array27 - val result28 = buffer.readString() - packet.jj = result28 - val array29 = buffer.readStringArray() - packet.jjj = array29 - val result30 = buffer.readPacket(102) as ObjectA - packet.kk = result30 - val size34 = buffer.readInt() - val result31 = Array(size34) { init -> ObjectA()} - if (size34 > 0) { - for (index32 in 0 until size34) { - val result35 = buffer.readPacket(102) as ObjectA - result31[index32] = result35 - } - } - packet.kkk = result31 - val list36 = buffer.readIntList() - packet.l = list36 - val size39 = buffer.readInt() - val result37 = ArrayList>>(size39) - if (size39 > 0) { - for (index38 in 0 until size39) { - val size42 = buffer.readInt() - val result40 = ArrayList>(size42) - if (size42 > 0) { - for (index41 in 0 until size42) { - val list43 = buffer.readIntList() - result40.add(list43) - } - } - result37.add(result40) - } - } - packet.ll = result37 - val size46 = buffer.readInt() - val result44 = ArrayList>(size46) - if (size46 > 0) { - for (index45 in 0 until size46) { - val list47 = buffer.readPacketList(ObjectA::class.java, 102) - result44.add(list47) - } - } - packet.lll = result44 - val list48 = buffer.readStringList() - packet.llll = list48 - val size51 = buffer.readInt() - val result49 = ArrayList>(size51) - if (size51 > 0) { - for (index50 in 0 until size51) { - val map52 = buffer.readIntStringMap() - result49.add(map52) - } - } - packet.lllll = result49 - val map53 = buffer.readIntStringMap() - packet.m = map53 - val map54 = buffer.readIntPacketMap(ObjectA::class.java, 102) - packet.mm = map54 - val size56 = buffer.readInt() - val result55 = HashMap>(size56) - if (size56 > 0) { - for (index57 in 0 until size56) { - val result58 = buffer.readPacket(102) as ObjectA - val list59 = buffer.readIntList() - result55.put(result58, list59) - } - } - packet.mmm = result55 - val size61 = buffer.readInt() - val result60 = HashMap>, List>>>(size61) - if (size61 > 0) { - for (index62 in 0 until size61) { - val size65 = buffer.readInt() - val result63 = ArrayList>(size65) - if (size65 > 0) { - for (index64 in 0 until size65) { - val list66 = buffer.readPacketList(ObjectA::class.java, 102) - result63.add(list66) - } - } - val size69 = buffer.readInt() - val result67 = ArrayList>>(size69) - if (size69 > 0) { - for (index68 in 0 until size69) { - val size72 = buffer.readInt() - val result70 = ArrayList>(size72) - if (size72 > 0) { - for (index71 in 0 until size72) { - val list73 = buffer.readIntList() - result70.add(list73) - } - } - result67.add(result70) - } - } - result60.put(result63, result67) - } - } - packet.mmmm = result60 - val size75 = buffer.readInt() - val result74 = HashMap>, Set>>(size75) - if (size75 > 0) { - for (index76 in 0 until size75) { - val size79 = buffer.readInt() - val result77 = ArrayList>(size79) - if (size79 > 0) { - for (index78 in 0 until size79) { - val map80 = buffer.readIntStringMap() - result77.add(map80) - } - } - val size83 = buffer.readInt() - val result81 = HashSet>() - if (size83 > 0) { - for (index82 in 0 until size83) { - val map84 = buffer.readIntStringMap() - result81.add(map84) - } - } - result74.put(result77, result81) - } - } - packet.mmmmm = result74 - val set85 = buffer.readIntSet() - packet.s = set85 - val size88 = buffer.readInt() - val result86 = HashSet>>() - if (size88 > 0) { - for (index87 in 0 until size88) { - val size91 = buffer.readInt() - val result89 = HashSet>() - if (size91 > 0) { - for (index90 in 0 until size91) { - val list92 = buffer.readIntList() - result89.add(list92) - } - } - result86.add(result89) - } - } - packet.ss = result86 - val size95 = buffer.readInt() - val result93 = HashSet>() - if (size95 > 0) { - for (index94 in 0 until size95) { - val set96 = buffer.readPacketSet(ObjectA::class.java, 102) - result93.add(set96) - } - } - packet.sss = result93 - val set97 = buffer.readStringSet() - packet.ssss = set97 - val size100 = buffer.readInt() - val result98 = HashSet>() - if (size100 > 0) { - for (index99 in 0 until size100) { - val map101 = buffer.readIntStringMap() - result98.add(map101) - } - } - packet.sssss = result98 - if (buffer.compatibleRead(beforeReadIndex, length)) { - val result102 = buffer.readInt() - packet.myCompatible = result102 - } - if (buffer.compatibleRead(beforeReadIndex, length)) { - val result103 = buffer.readPacket(102) as ObjectA - packet.myObject = result103 - } - if (length > 0) { - buffer.setReadOffset(beforeReadIndex + length) - } - return packet +class ComplexObjectRegistration : IProtocolRegistration { + override fun protocolId(): Short { + return 100 + } + + override fun write(buffer: ByteBuffer, packet: Any?) { + if (packet == null) { + buffer.writeInt(0) + return + } + val message = packet as ComplexObject + val beforeWriteIndex = buffer.writeOffset() + buffer.writeInt(36962) + buffer.writeByte(message.a) + buffer.writeByte(message.aa) + buffer.writeByteArray(message.aaa) + buffer.writeByteArray(message.aaaa) + buffer.writeShort(message.b) + buffer.writeShort(message.bb) + buffer.writeShortArray(message.bbb) + buffer.writeShortArray(message.bbbb) + buffer.writeInt(message.c) + buffer.writeInt(message.cc) + buffer.writeIntArray(message.ccc) + buffer.writeIntArray(message.cccc) + buffer.writeLong(message.d) + buffer.writeLong(message.dd) + buffer.writeLongArray(message.ddd) + buffer.writeLongArray(message.dddd) + buffer.writeFloat(message.e) + buffer.writeFloat(message.ee) + buffer.writeFloatArray(message.eee) + buffer.writeFloatArray(message.eeee) + buffer.writeDouble(message.f) + buffer.writeDouble(message.ff) + buffer.writeDoubleArray(message.fff) + buffer.writeDoubleArray(message.ffff) + buffer.writeBool(message.g) + buffer.writeBool(message.gg) + buffer.writeBooleanArray(message.ggg) + buffer.writeBooleanArray(message.gggg) + buffer.writeString(message.jj) + buffer.writeStringArray(message.jjj) + buffer.writePacket(message.kk, 102) + buffer.writeInt(message.kkk.size) + val length0 = message.kkk.size + for (i1 in 0 until length0) { + val element2 = message.kkk[i1] + buffer.writePacket(element2, 102) + } + buffer.writeIntList(message.l) + buffer.writeInt(message.ll.size) + for (element3 in message.ll) { + buffer.writeInt(element3.size) + for (element4 in element3) { + buffer.writeIntList(element4) } } + buffer.writeInt(message.lll.size) + for (element5 in message.lll) { + buffer.writePacketList(element5, 102) + } + buffer.writeStringList(message.llll) + buffer.writeInt(message.lllll.size) + for (element6 in message.lllll) { + buffer.writeIntStringMap(element6) + } + buffer.writeIntStringMap(message.m) + buffer.writeIntPacketMap(message.mm, 102) + buffer.writeInt(message.mmm.size) + for ((keyElement7, valueElement8) in message.mmm) { + buffer.writePacket(keyElement7, 102) + buffer.writeIntList(valueElement8) + } + buffer.writeInt(message.mmmm.size) + for ((keyElement9, valueElement10) in message.mmmm) { + buffer.writeInt(keyElement9.size) + for (element11 in keyElement9) { + buffer.writePacketList(element11, 102) + } + buffer.writeInt(valueElement10.size) + for (element12 in valueElement10) { + buffer.writeInt(element12.size) + for (element13 in element12) { + buffer.writeIntList(element13) + } + } + } + buffer.writeInt(message.mmmmm.size) + for ((keyElement14, valueElement15) in message.mmmmm) { + buffer.writeInt(keyElement14.size) + for (element16 in keyElement14) { + buffer.writeIntStringMap(element16) + } + buffer.writeInt(valueElement15.size) + for (i17 in valueElement15) { + buffer.writeIntStringMap(i17) + } + } + buffer.writeIntSet(message.s) + buffer.writeInt(message.ss.size) + for (i18 in message.ss) { + buffer.writeInt(i18.size) + for (i19 in i18) { + buffer.writeIntList(i19) + } + } + buffer.writeInt(message.sss.size) + for (i20 in message.sss) { + buffer.writePacketSet(i20, 102) + } + buffer.writeStringSet(message.ssss) + buffer.writeInt(message.sssss.size) + for (i21 in message.sssss) { + buffer.writeIntStringMap(i21) + } + buffer.writeInt(message.myCompatible) + buffer.writePacket(message.myObject, 102) + buffer.adjustPadding(36962, beforeWriteIndex) + } + + override fun read(buffer: ByteBuffer): Any { + val length = buffer.readInt() + val packet = ComplexObject() + if (length == 0) { + return packet + } + val beforeReadIndex = buffer.readOffset() + val result0 = buffer.readByte() + packet.a = result0 + val result1 = buffer.readByte() + packet.aa = result1 + val array2 = buffer.readByteArray() + packet.aaa = array2 + val array3 = buffer.readByteArray() + packet.aaaa = array3 + val result4 = buffer.readShort() + packet.b = result4 + val result5 = buffer.readShort() + packet.bb = result5 + val array6 = buffer.readShortArray() + packet.bbb = array6 + val array7 = buffer.readShortArray() + packet.bbbb = array7 + val result8 = buffer.readInt() + packet.c = result8 + val result9 = buffer.readInt() + packet.cc = result9 + val array10 = buffer.readIntArray() + packet.ccc = array10 + val array11 = buffer.readIntArray() + packet.cccc = array11 + val result12 = buffer.readLong() + packet.d = result12 + val result13 = buffer.readLong() + packet.dd = result13 + val array14 = buffer.readLongArray() + packet.ddd = array14 + val array15 = buffer.readLongArray() + packet.dddd = array15 + val result16 = buffer.readFloat() + packet.e = result16 + val result17 = buffer.readFloat() + packet.ee = result17 + val array18 = buffer.readFloatArray() + packet.eee = array18 + val array19 = buffer.readFloatArray() + packet.eeee = array19 + val result20 = buffer.readDouble() + packet.f = result20 + val result21 = buffer.readDouble() + packet.ff = result21 + val array22 = buffer.readDoubleArray() + packet.fff = array22 + val array23 = buffer.readDoubleArray() + packet.ffff = array23 + val result24 = buffer.readBool() + packet.g = result24 + val result25 = buffer.readBool() + packet.gg = result25 + val array26 = buffer.readBooleanArray() + packet.ggg = array26 + val array27 = buffer.readBooleanArray() + packet.gggg = array27 + val result28 = buffer.readString() + packet.jj = result28 + val array29 = buffer.readStringArray() + packet.jjj = array29 + val result30 = buffer.readPacket(102) as ObjectA + packet.kk = result30 + val size34 = buffer.readInt() + val result31 = Array(size34) { init -> ObjectA()} + if (size34 > 0) { + for (index32 in 0 until size34) { + val result35 = buffer.readPacket(102) as ObjectA + result31[index32] = result35 + } + } + packet.kkk = result31 + val list36 = buffer.readIntList() + packet.l = list36 + val size39 = buffer.readInt() + val result37 = ArrayList>>(size39) + if (size39 > 0) { + for (index38 in 0 until size39) { + val size42 = buffer.readInt() + val result40 = ArrayList>(size42) + if (size42 > 0) { + for (index41 in 0 until size42) { + val list43 = buffer.readIntList() + result40.add(list43) + } + } + result37.add(result40) + } + } + packet.ll = result37 + val size46 = buffer.readInt() + val result44 = ArrayList>(size46) + if (size46 > 0) { + for (index45 in 0 until size46) { + val list47 = buffer.readPacketList(ObjectA::class.java, 102) + result44.add(list47) + } + } + packet.lll = result44 + val list48 = buffer.readStringList() + packet.llll = list48 + val size51 = buffer.readInt() + val result49 = ArrayList>(size51) + if (size51 > 0) { + for (index50 in 0 until size51) { + val map52 = buffer.readIntStringMap() + result49.add(map52) + } + } + packet.lllll = result49 + val map53 = buffer.readIntStringMap() + packet.m = map53 + val map54 = buffer.readIntPacketMap(ObjectA::class.java, 102) + packet.mm = map54 + val size56 = buffer.readInt() + val result55 = HashMap>(size56) + if (size56 > 0) { + for (index57 in 0 until size56) { + val result58 = buffer.readPacket(102) as ObjectA + val list59 = buffer.readIntList() + result55.put(result58, list59) + } + } + packet.mmm = result55 + val size61 = buffer.readInt() + val result60 = HashMap>, List>>>(size61) + if (size61 > 0) { + for (index62 in 0 until size61) { + val size65 = buffer.readInt() + val result63 = ArrayList>(size65) + if (size65 > 0) { + for (index64 in 0 until size65) { + val list66 = buffer.readPacketList(ObjectA::class.java, 102) + result63.add(list66) + } + } + val size69 = buffer.readInt() + val result67 = ArrayList>>(size69) + if (size69 > 0) { + for (index68 in 0 until size69) { + val size72 = buffer.readInt() + val result70 = ArrayList>(size72) + if (size72 > 0) { + for (index71 in 0 until size72) { + val list73 = buffer.readIntList() + result70.add(list73) + } + } + result67.add(result70) + } + } + result60.put(result63, result67) + } + } + packet.mmmm = result60 + val size75 = buffer.readInt() + val result74 = HashMap>, Set>>(size75) + if (size75 > 0) { + for (index76 in 0 until size75) { + val size79 = buffer.readInt() + val result77 = ArrayList>(size79) + if (size79 > 0) { + for (index78 in 0 until size79) { + val map80 = buffer.readIntStringMap() + result77.add(map80) + } + } + val size83 = buffer.readInt() + val result81 = HashSet>() + if (size83 > 0) { + for (index82 in 0 until size83) { + val map84 = buffer.readIntStringMap() + result81.add(map84) + } + } + result74.put(result77, result81) + } + } + packet.mmmmm = result74 + val set85 = buffer.readIntSet() + packet.s = set85 + val size88 = buffer.readInt() + val result86 = HashSet>>() + if (size88 > 0) { + for (index87 in 0 until size88) { + val size91 = buffer.readInt() + val result89 = HashSet>() + if (size91 > 0) { + for (index90 in 0 until size91) { + val list92 = buffer.readIntList() + result89.add(list92) + } + } + result86.add(result89) + } + } + packet.ss = result86 + val size95 = buffer.readInt() + val result93 = HashSet>() + if (size95 > 0) { + for (index94 in 0 until size95) { + val set96 = buffer.readPacketSet(ObjectA::class.java, 102) + result93.add(set96) + } + } + packet.sss = result93 + val set97 = buffer.readStringSet() + packet.ssss = set97 + val size100 = buffer.readInt() + val result98 = HashSet>() + if (size100 > 0) { + for (index99 in 0 until size100) { + val map101 = buffer.readIntStringMap() + result98.add(map101) + } + } + packet.sssss = result98 + if (buffer.compatibleRead(beforeReadIndex, length)) { + val result102 = buffer.readInt() + packet.myCompatible = result102 + } + if (buffer.compatibleRead(beforeReadIndex, length)) { + val result103 = buffer.readPacket(102) as ObjectA + packet.myObject = result103 + } + if (length > 0) { + buffer.setReadOffset(beforeReadIndex + length) + } + return packet } } \ No newline at end of file diff --git a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/EmptyObject.kt b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/EmptyObject.kt index 7c74d1da..d65824ab 100644 --- a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/EmptyObject.kt +++ b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/EmptyObject.kt @@ -2,38 +2,36 @@ package com.zfoo.kotlin.packet import com.zfoo.kotlin.IProtocolRegistration import com.zfoo.kotlin.ByteBuffer + class EmptyObject { +} - companion object { - @JvmField - val registrationEmptyObject: IProtocolRegistration = object : IProtocolRegistration { - override fun protocolId(): Short { - return 0 - } - - override fun write(buffer: ByteBuffer, packet: Any?) { - if (packet == null) { - buffer.writeInt(0) - return - } - val message = packet as EmptyObject - buffer.writeInt(-1) - } - - override fun read(buffer: ByteBuffer): Any { - val length = buffer.readInt() - val packet = EmptyObject() - if (length == 0) { - return packet - } - val beforeReadIndex = buffer.readOffset() - - if (length > 0) { - buffer.setReadOffset(beforeReadIndex + length) - } - return packet - } +class EmptyObjectRegistration : IProtocolRegistration { + override fun protocolId(): Short { + return 0 + } + + override fun write(buffer: ByteBuffer, packet: Any?) { + if (packet == null) { + buffer.writeInt(0) + return } + val message = packet as EmptyObject + buffer.writeInt(-1) + } + + override fun read(buffer: ByteBuffer): Any { + val length = buffer.readInt() + val packet = EmptyObject() + if (length == 0) { + return packet + } + val beforeReadIndex = buffer.readOffset() + + if (length > 0) { + buffer.setReadOffset(beforeReadIndex + length) + } + return packet } } \ No newline at end of file diff --git a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/NormalObject.kt b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/NormalObject.kt index 767c2b74..2424556c 100644 --- a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/NormalObject.kt +++ b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/NormalObject.kt @@ -3,6 +3,7 @@ import com.zfoo.kotlin.packet.ObjectA import com.zfoo.kotlin.packet.ObjectB import com.zfoo.kotlin.IProtocolRegistration import com.zfoo.kotlin.ByteBuffer + // 常规的对象,取所有语言语法的交集,基本上所有语言都支持下面的语法 class NormalObject { var a: Byte = 0 @@ -26,101 +27,98 @@ class NormalObject { var ssss: Set = emptySet() var outCompatibleValue: Int = 0 var outCompatibleValue2: Int = 0 +} - companion object { - @JvmField - val registrationNormalObject: IProtocolRegistration = object : IProtocolRegistration { - override fun protocolId(): Short { - return 101 - } - - override fun write(buffer: ByteBuffer, packet: Any?) { - if (packet == null) { - buffer.writeInt(0) - return - } - val message = packet as NormalObject - val beforeWriteIndex = buffer.writeOffset() - buffer.writeInt(857) - buffer.writeByte(message.a) - buffer.writeByteArray(message.aaa) - buffer.writeShort(message.b) - buffer.writeInt(message.c) - buffer.writeLong(message.d) - buffer.writeFloat(message.e) - buffer.writeDouble(message.f) - buffer.writeBool(message.g) - buffer.writeString(message.jj) - buffer.writePacket(message.kk, 102) - buffer.writeIntList(message.l) - buffer.writeLongList(message.ll) - buffer.writePacketList(message.lll, 102) - buffer.writeStringList(message.llll) - buffer.writeIntStringMap(message.m) - buffer.writeIntPacketMap(message.mm, 102) - buffer.writeIntSet(message.s) - buffer.writeStringSet(message.ssss) - buffer.writeInt(message.outCompatibleValue) - buffer.writeInt(message.outCompatibleValue2) - buffer.adjustPadding(857, beforeWriteIndex) - } - - override fun read(buffer: ByteBuffer): Any { - val length = buffer.readInt() - val packet = NormalObject() - if (length == 0) { - return packet - } - val beforeReadIndex = buffer.readOffset() - val result0 = buffer.readByte() - packet.a = result0 - val array1 = buffer.readByteArray() - packet.aaa = array1 - val result2 = buffer.readShort() - packet.b = result2 - val result3 = buffer.readInt() - packet.c = result3 - val result4 = buffer.readLong() - packet.d = result4 - val result5 = buffer.readFloat() - packet.e = result5 - val result6 = buffer.readDouble() - packet.f = result6 - val result7 = buffer.readBool() - packet.g = result7 - val result8 = buffer.readString() - packet.jj = result8 - val result9 = buffer.readPacket(102) as ObjectA - packet.kk = result9 - val list10 = buffer.readIntList() - packet.l = list10 - val list11 = buffer.readLongList() - packet.ll = list11 - val list12 = buffer.readPacketList(ObjectA::class.java, 102) - packet.lll = list12 - val list13 = buffer.readStringList() - packet.llll = list13 - val map14 = buffer.readIntStringMap() - packet.m = map14 - val map15 = buffer.readIntPacketMap(ObjectA::class.java, 102) - packet.mm = map15 - val set16 = buffer.readIntSet() - packet.s = set16 - val set17 = buffer.readStringSet() - packet.ssss = set17 - if (buffer.compatibleRead(beforeReadIndex, length)) { - val result18 = buffer.readInt() - packet.outCompatibleValue = result18 - } - if (buffer.compatibleRead(beforeReadIndex, length)) { - val result19 = buffer.readInt() - packet.outCompatibleValue2 = result19 - } - if (length > 0) { - buffer.setReadOffset(beforeReadIndex + length) - } - return packet - } +class NormalObjectRegistration : IProtocolRegistration { + override fun protocolId(): Short { + return 101 + } + + override fun write(buffer: ByteBuffer, packet: Any?) { + if (packet == null) { + buffer.writeInt(0) + return } + val message = packet as NormalObject + val beforeWriteIndex = buffer.writeOffset() + buffer.writeInt(857) + buffer.writeByte(message.a) + buffer.writeByteArray(message.aaa) + buffer.writeShort(message.b) + buffer.writeInt(message.c) + buffer.writeLong(message.d) + buffer.writeFloat(message.e) + buffer.writeDouble(message.f) + buffer.writeBool(message.g) + buffer.writeString(message.jj) + buffer.writePacket(message.kk, 102) + buffer.writeIntList(message.l) + buffer.writeLongList(message.ll) + buffer.writePacketList(message.lll, 102) + buffer.writeStringList(message.llll) + buffer.writeIntStringMap(message.m) + buffer.writeIntPacketMap(message.mm, 102) + buffer.writeIntSet(message.s) + buffer.writeStringSet(message.ssss) + buffer.writeInt(message.outCompatibleValue) + buffer.writeInt(message.outCompatibleValue2) + buffer.adjustPadding(857, beforeWriteIndex) + } + + override fun read(buffer: ByteBuffer): Any { + val length = buffer.readInt() + val packet = NormalObject() + if (length == 0) { + return packet + } + val beforeReadIndex = buffer.readOffset() + val result0 = buffer.readByte() + packet.a = result0 + val array1 = buffer.readByteArray() + packet.aaa = array1 + val result2 = buffer.readShort() + packet.b = result2 + val result3 = buffer.readInt() + packet.c = result3 + val result4 = buffer.readLong() + packet.d = result4 + val result5 = buffer.readFloat() + packet.e = result5 + val result6 = buffer.readDouble() + packet.f = result6 + val result7 = buffer.readBool() + packet.g = result7 + val result8 = buffer.readString() + packet.jj = result8 + val result9 = buffer.readPacket(102) as ObjectA + packet.kk = result9 + val list10 = buffer.readIntList() + packet.l = list10 + val list11 = buffer.readLongList() + packet.ll = list11 + val list12 = buffer.readPacketList(ObjectA::class.java, 102) + packet.lll = list12 + val list13 = buffer.readStringList() + packet.llll = list13 + val map14 = buffer.readIntStringMap() + packet.m = map14 + val map15 = buffer.readIntPacketMap(ObjectA::class.java, 102) + packet.mm = map15 + val set16 = buffer.readIntSet() + packet.s = set16 + val set17 = buffer.readStringSet() + packet.ssss = set17 + if (buffer.compatibleRead(beforeReadIndex, length)) { + val result18 = buffer.readInt() + packet.outCompatibleValue = result18 + } + if (buffer.compatibleRead(beforeReadIndex, length)) { + val result19 = buffer.readInt() + packet.outCompatibleValue2 = result19 + } + if (length > 0) { + buffer.setReadOffset(beforeReadIndex + length) + } + return packet } } \ No newline at end of file diff --git a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ObjectA.kt b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ObjectA.kt index ddf63123..d7dc8f52 100644 --- a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ObjectA.kt +++ b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ObjectA.kt @@ -3,56 +3,54 @@ import com.zfoo.kotlin.packet.ObjectB import com.zfoo.kotlin.IProtocolRegistration import com.zfoo.kotlin.ByteBuffer + class ObjectA { var a: Int = 0 var m: Map = emptyMap() var objectB: ObjectB? = null var innerCompatibleValue: Int = 0 +} - companion object { - @JvmField - val registrationObjectA: IProtocolRegistration = object : IProtocolRegistration { - override fun protocolId(): Short { - return 102 - } - - override fun write(buffer: ByteBuffer, packet: Any?) { - if (packet == null) { - buffer.writeInt(0) - return - } - val message = packet as ObjectA - val beforeWriteIndex = buffer.writeOffset() - buffer.writeInt(201) - buffer.writeInt(message.a) - buffer.writeIntStringMap(message.m) - buffer.writePacket(message.objectB, 103) - buffer.writeInt(message.innerCompatibleValue) - buffer.adjustPadding(201, beforeWriteIndex) - } - - override fun read(buffer: ByteBuffer): Any { - val length = buffer.readInt() - val packet = ObjectA() - if (length == 0) { - return packet - } - val beforeReadIndex = buffer.readOffset() - val result0 = buffer.readInt() - packet.a = result0 - val map1 = buffer.readIntStringMap() - packet.m = map1 - val result2 = buffer.readPacket(103) as ObjectB - packet.objectB = result2 - if (buffer.compatibleRead(beforeReadIndex, length)) { - val result3 = buffer.readInt() - packet.innerCompatibleValue = result3 - } - if (length > 0) { - buffer.setReadOffset(beforeReadIndex + length) - } - return packet - } +class ObjectARegistration : IProtocolRegistration { + override fun protocolId(): Short { + return 102 + } + + override fun write(buffer: ByteBuffer, packet: Any?) { + if (packet == null) { + buffer.writeInt(0) + return } + val message = packet as ObjectA + val beforeWriteIndex = buffer.writeOffset() + buffer.writeInt(201) + buffer.writeInt(message.a) + buffer.writeIntStringMap(message.m) + buffer.writePacket(message.objectB, 103) + buffer.writeInt(message.innerCompatibleValue) + buffer.adjustPadding(201, beforeWriteIndex) + } + + override fun read(buffer: ByteBuffer): Any { + val length = buffer.readInt() + val packet = ObjectA() + if (length == 0) { + return packet + } + val beforeReadIndex = buffer.readOffset() + val result0 = buffer.readInt() + packet.a = result0 + val map1 = buffer.readIntStringMap() + packet.m = map1 + val result2 = buffer.readPacket(103) as ObjectB + packet.objectB = result2 + if (buffer.compatibleRead(beforeReadIndex, length)) { + val result3 = buffer.readInt() + packet.innerCompatibleValue = result3 + } + if (length > 0) { + buffer.setReadOffset(beforeReadIndex + length) + } + return packet } } \ No newline at end of file diff --git a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ObjectB.kt b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ObjectB.kt index bc423fcf..fee4cb65 100644 --- a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ObjectB.kt +++ b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/ObjectB.kt @@ -2,48 +2,46 @@ package com.zfoo.kotlin.packet import com.zfoo.kotlin.IProtocolRegistration import com.zfoo.kotlin.ByteBuffer + class ObjectB { var flag: Boolean = false var innerCompatibleValue: Int = 0 +} - companion object { - @JvmField - val registrationObjectB: IProtocolRegistration = object : IProtocolRegistration { - override fun protocolId(): Short { - return 103 - } - - override fun write(buffer: ByteBuffer, packet: Any?) { - if (packet == null) { - buffer.writeInt(0) - return - } - val message = packet as ObjectB - val beforeWriteIndex = buffer.writeOffset() - buffer.writeInt(4) - buffer.writeBool(message.flag) - buffer.writeInt(message.innerCompatibleValue) - buffer.adjustPadding(4, beforeWriteIndex) - } - - override fun read(buffer: ByteBuffer): Any { - val length = buffer.readInt() - val packet = ObjectB() - if (length == 0) { - return packet - } - val beforeReadIndex = buffer.readOffset() - val result0 = buffer.readBool() - packet.flag = result0 - if (buffer.compatibleRead(beforeReadIndex, length)) { - val result1 = buffer.readInt() - packet.innerCompatibleValue = result1 - } - if (length > 0) { - buffer.setReadOffset(beforeReadIndex + length) - } - return packet - } +class ObjectBRegistration : IProtocolRegistration { + override fun protocolId(): Short { + return 103 + } + + override fun write(buffer: ByteBuffer, packet: Any?) { + if (packet == null) { + buffer.writeInt(0) + return } + val message = packet as ObjectB + val beforeWriteIndex = buffer.writeOffset() + buffer.writeInt(4) + buffer.writeBool(message.flag) + buffer.writeInt(message.innerCompatibleValue) + buffer.adjustPadding(4, beforeWriteIndex) + } + + override fun read(buffer: ByteBuffer): Any { + val length = buffer.readInt() + val packet = ObjectB() + if (length == 0) { + return packet + } + val beforeReadIndex = buffer.readOffset() + val result0 = buffer.readBool() + packet.flag = result0 + if (buffer.compatibleRead(beforeReadIndex, length)) { + val result1 = buffer.readInt() + packet.innerCompatibleValue = result1 + } + if (length > 0) { + buffer.setReadOffset(beforeReadIndex + length) + } + return packet } } \ No newline at end of file diff --git a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/SimpleObject.kt b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/SimpleObject.kt index 35cb3026..01f45b2c 100644 --- a/protocol/src/test/kotlin/com/zfoo/kotlin/packet/SimpleObject.kt +++ b/protocol/src/test/kotlin/com/zfoo/kotlin/packet/SimpleObject.kt @@ -2,44 +2,42 @@ package com.zfoo.kotlin.packet import com.zfoo.kotlin.IProtocolRegistration import com.zfoo.kotlin.ByteBuffer + class SimpleObject { var c: Int = 0 var g: Boolean = false +} - companion object { - @JvmField - val registrationSimpleObject: IProtocolRegistration = object : IProtocolRegistration { - override fun protocolId(): Short { - return 104 - } - - override fun write(buffer: ByteBuffer, packet: Any?) { - if (packet == null) { - buffer.writeInt(0) - return - } - val message = packet as SimpleObject - buffer.writeInt(-1) - buffer.writeInt(message.c) - buffer.writeBool(message.g) - } - - override fun read(buffer: ByteBuffer): Any { - val length = buffer.readInt() - val packet = SimpleObject() - if (length == 0) { - return packet - } - val beforeReadIndex = buffer.readOffset() - val result0 = buffer.readInt() - packet.c = result0 - val result1 = buffer.readBool() - packet.g = result1 - if (length > 0) { - buffer.setReadOffset(beforeReadIndex + length) - } - return packet - } +class SimpleObjectRegistration : IProtocolRegistration { + override fun protocolId(): Short { + return 104 + } + + override fun write(buffer: ByteBuffer, packet: Any?) { + if (packet == null) { + buffer.writeInt(0) + return } + val message = packet as SimpleObject + buffer.writeInt(-1) + buffer.writeInt(message.c) + buffer.writeBool(message.g) + } + + override fun read(buffer: ByteBuffer): Any { + val length = buffer.readInt() + val packet = SimpleObject() + if (length == 0) { + return packet + } + val beforeReadIndex = buffer.readOffset() + val result0 = buffer.readInt() + packet.c = result0 + val result1 = buffer.readBool() + packet.g = result1 + if (length > 0) { + buffer.setReadOffset(beforeReadIndex + length) + } + return packet } } \ No newline at end of file