test[gdscript]: gdscript protocol test

This commit is contained in:
godotg committed 2023-10-12 21:34:18 +08:00
1 parent 3ff774074c
commit 7f90231210
15 files changed
+14195 -666

No files matched your search

@@ -1,9 +1,14 @@
extends Node2D
const ProtocolManager = preload("res://gdProtocol/ProtocolManager.gd")
const ByteBuffer = preload("res://gdProtocol/buffer/ByteBuffer.gd")
const FileUtils = preload("res://zfoo/util/FileUtils.gd")
const ProtocolManager = preload("res://zfoogd/ProtocolManager.gd")
const ByteBuffer = preload("res://zfoogd/ByteBuffer.gd")
const FileUtils = preload("res://zfoo/FileUtils.gd")
# 测试参数
#op.setFoldProtocol(true);
#op.setProtocolPath("D:\\github\\godot-bird\\protocoltest");
#op.getGenerateLanguages().add(CodeLanguage.GdScript);
func _ready():
var buffer = ByteBuffer.new()
@@ -38,8 +43,8 @@ func _ready():
assert(999999 == buffer.readInt())
assert(2147483647 == buffer.readInt())
var maxLong = int("9223372036854775807")
var minLong = int("-9223372036854775808")
var maxLong: int = 9223372036854775807
var minLong: int = maxLong + 1
buffer.writeLong(maxLong)
buffer.writeLong(9999999999999999)
buffer.writeLong(99999999)
@@ -74,22 +79,22 @@ func _ready():
buffer.writeString(strValue)
assert(strValue == buffer.readString())
buffer.writeChar(strValue)
assert(strValue[0] == buffer.readChar())
buffer.writeChar("")
assert(ByteBuffer.EMPTY == buffer.readChar())
test()
func test():
ProtocolManager.initProtocol()
var buffer = ByteBuffer.new()
var poolByteArray = FileUtils.readFileToByteArray("user://ComplexObject.bytes")
buffer.writePoolByteArray(poolByteArray)
#var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-no-compatible.txt")
#var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-inner-compatible.txt")
#var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-out-compatible.txt")
#var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-out-inner-compatible.txt")
var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-out-inner-inner-compatible.txt")
buffer.writePackedByteArray(poolByteArray)
var packet = ProtocolManager.read(buffer)
print(packet)
packet.myCompatible = 0
var newByteBuffer = ByteBuffer.new()
ProtocolManager.write(newByteBuffer, packet);
print(newByteBuffer.getWriteOffset())
@@ -1,33 +0,0 @@
const ComplexObject = preload("res://gdProtocol/packet/ComplexObject.gd")
const NormalObject = preload("res://gdProtocol/packet/NormalObject.gd")
const ObjectA = preload("res://gdProtocol/packet/ObjectA.gd")
const ObjectB = preload("res://gdProtocol/packet/ObjectB.gd")
const SimpleObject = preload("res://gdProtocol/packet/SimpleObject.gd")
const protocols = {}
static func getProtocol(protocolId: int):
return protocols[protocolId]
static func newInstance(protocolId: int):
var protocol = protocols[protocolId]
return protocol.new()
static func write(buffer, packet):
var protocolId: int = packet.PROTOCOL_ID
buffer.writeShort(protocolId)
var protocol = protocols[protocolId]
protocol.write(buffer, packet)
static func read(buffer):
var protocolId = buffer.readShort();
var protocol = protocols[protocolId]
var packet = protocol.read(buffer);
return packet;
static func initProtocol():
protocols[100] = ComplexObject
protocols[101] = NormalObject
protocols[102] = ObjectA
protocols[103] = ObjectB
protocols[104] = SimpleObject
@@ -1,408 +0,0 @@
# 复杂的对象
# 包括了各种复杂的结构,数组,List,Set,Map
#
# @author godotg
# byte类型,最简单的整形
var a # byte
# byte的包装类型
# 优先使用基础类型,包装类型会有装箱拆箱
var aa # java.lang.Byte
# 数组类型
var aaa # byte[]
var aaaa # java.lang.Byte[]
var b # short
var bb # java.lang.Short
var bbb # short[]
var bbbb # java.lang.Short[]
var c # int
var cc # java.lang.Integer
var ccc # int[]
var cccc # java.lang.Integer[]
var d # long
var dd # java.lang.Long
var ddd # long[]
var dddd # java.lang.Long[]
var e # float
var ee # java.lang.Float
var eee # float[]
var eeee # java.lang.Float[]
var f # double
var ff # java.lang.Double
var fff # double[]
var ffff # java.lang.Double[]
var g # boolean
var gg # java.lang.Boolean
var ggg # boolean[]
var gggg # java.lang.Boolean[]
var h # char
var hh # java.lang.Character
var hhh # char[]
var hhhh # java.lang.Character[]
var jj # java.lang.String
var jjj # java.lang.String[]
var kk # com.zfoo.protocol.packet.ObjectA
var kkk # com.zfoo.protocol.packet.ObjectA[]
var l # java.util.List<java.lang.Integer>
var ll # java.util.List<java.util.List<java.util.List<java.lang.Integer>>>
var lll # java.util.List<java.util.List<com.zfoo.protocol.packet.ObjectA>>
var llll # java.util.List<java.lang.String>
var lllll # java.util.List<java.util.Map<java.lang.Integer, java.lang.String>>
var m # java.util.Map<java.lang.Integer, java.lang.String>
var mm # java.util.Map<java.lang.Integer, com.zfoo.protocol.packet.ObjectA>
var mmm # java.util.Map<com.zfoo.protocol.packet.ObjectA, java.util.List<java.lang.Integer>>
var mmmm # java.util.Map<java.util.List<java.util.List<com.zfoo.protocol.packet.ObjectA>>, java.util.List<java.util.List<java.util.List<java.lang.Integer>>>>
var mmmmm # java.util.Map<java.util.List<java.util.Map<java.lang.Integer, java.lang.String>>, java.util.Set<java.util.Map<java.lang.Integer, java.lang.String>>>
var s # java.util.Set<java.lang.Integer>
var ss # java.util.Set<java.util.Set<java.util.List<java.lang.Integer>>>
var sss # java.util.Set<java.util.Set<com.zfoo.protocol.packet.ObjectA>>
var ssss # java.util.Set<java.lang.String>
var sssss # java.util.Set<java.util.Map<java.lang.Integer, java.lang.String>>
# 如果要修改协议并且兼容老协议,需要加上Compatible注解,按照增加的顺序添加order
var myCompatible # int
var myObject # com.zfoo.protocol.packet.ObjectA
const PROTOCOL_ID = 100
static func write(buffer, packet):
if (buffer.writePacketFlag(packet)):
return
buffer.writeByte(packet.a)
buffer.writeByte(packet.aa)
buffer.writeByteArray(packet.aaa)
buffer.writeByteArray(packet.aaaa)
buffer.writeShort(packet.b)
buffer.writeShort(packet.bb)
buffer.writeShortArray(packet.bbb)
buffer.writeShortArray(packet.bbbb)
buffer.writeInt(packet.c)
buffer.writeInt(packet.cc)
buffer.writeIntArray(packet.ccc)
buffer.writeIntArray(packet.cccc)
buffer.writeLong(packet.d)
buffer.writeLong(packet.dd)
buffer.writeLongArray(packet.ddd)
buffer.writeLongArray(packet.dddd)
buffer.writeFloat(packet.e)
buffer.writeFloat(packet.ee)
buffer.writeFloatArray(packet.eee)
buffer.writeFloatArray(packet.eeee)
buffer.writeDouble(packet.f)
buffer.writeDouble(packet.ff)
buffer.writeDoubleArray(packet.fff)
buffer.writeDoubleArray(packet.ffff)
buffer.writeBool(packet.g)
buffer.writeBool(packet.gg)
buffer.writeBooleanArray(packet.ggg)
buffer.writeBooleanArray(packet.gggg)
buffer.writeChar(packet.h)
buffer.writeChar(packet.hh)
buffer.writeCharArray(packet.hhh)
buffer.writeCharArray(packet.hhhh)
buffer.writeString(packet.jj)
buffer.writeStringArray(packet.jjj)
buffer.writePacket(packet.kk, 102)
buffer.writePacketArray(packet.kkk, 102)
buffer.writeIntArray(packet.l)
if (packet.ll == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.ll.size())
for element0 in packet.ll:
if (element0 == null):
buffer.writeInt(0)
else:
buffer.writeInt(element0.size())
for element1 in element0:
buffer.writeIntArray(element1)
if (packet.lll == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.lll.size())
for element2 in packet.lll:
buffer.writePacketArray(element2, 102)
buffer.writeStringArray(packet.llll)
if (packet.lllll == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.lllll.size())
for element3 in packet.lllll:
buffer.writeIntStringMap(element3)
buffer.writeIntStringMap(packet.m)
buffer.writeIntPacketMap(packet.mm, 102)
if (packet.mmm == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.mmm.size())
for key4 in packet.mmm:
var value5 = packet.mmm[key4]
buffer.writePacket(key4, 102)
buffer.writeIntArray(value5)
if (packet.mmmm == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.mmmm.size())
for key6 in packet.mmmm:
var value7 = packet.mmmm[key6]
if (key6 == null):
buffer.writeInt(0)
else:
buffer.writeInt(key6.size())
for element8 in key6:
buffer.writePacketArray(element8, 102)
if (value7 == null):
buffer.writeInt(0)
else:
buffer.writeInt(value7.size())
for element9 in value7:
if (element9 == null):
buffer.writeInt(0)
else:
buffer.writeInt(element9.size())
for element10 in element9:
buffer.writeIntArray(element10)
if (packet.mmmmm == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.mmmmm.size())
for key11 in packet.mmmmm:
var value12 = packet.mmmmm[key11]
if (key11 == null):
buffer.writeInt(0)
else:
buffer.writeInt(key11.size())
for element13 in key11:
buffer.writeIntStringMap(element13)
if (value12 == null):
buffer.writeInt(0)
else:
buffer.writeInt(value12.size())
for element14 in value12:
buffer.writeIntStringMap(element14)
buffer.writeIntArray(packet.s)
if (packet.ss == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.ss.size())
for element15 in packet.ss:
if (element15 == null):
buffer.writeInt(0)
else:
buffer.writeInt(element15.size())
for element16 in element15:
buffer.writeIntArray(element16)
if (packet.sss == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.sss.size())
for element17 in packet.sss:
buffer.writePacketArray(element17, 102)
buffer.writeStringArray(packet.ssss)
if (packet.sssss == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.sssss.size())
for element18 in packet.sssss:
buffer.writeIntStringMap(element18)
buffer.writeInt(packet.myCompatible)
buffer.writePacket(packet.myObject, 102)
static func read(buffer):
if (!buffer.readBool()):
return null
var packet = buffer.newInstance(PROTOCOL_ID)
var result19 = buffer.readByte()
packet.a = result19
var result20 = buffer.readByte()
packet.aa = result20
var array21 = buffer.readByteArray()
packet.aaa = array21
var array22 = buffer.readByteArray()
packet.aaaa = array22
var result23 = buffer.readShort()
packet.b = result23
var result24 = buffer.readShort()
packet.bb = result24
var array25 = buffer.readShortArray()
packet.bbb = array25
var array26 = buffer.readShortArray()
packet.bbbb = array26
var result27 = buffer.readInt()
packet.c = result27
var result28 = buffer.readInt()
packet.cc = result28
var array29 = buffer.readIntArray()
packet.ccc = array29
var array30 = buffer.readIntArray()
packet.cccc = array30
var result31 = buffer.readLong()
packet.d = result31
var result32 = buffer.readLong()
packet.dd = result32
var array33 = buffer.readLongArray()
packet.ddd = array33
var array34 = buffer.readLongArray()
packet.dddd = array34
var result35 = buffer.readFloat()
packet.e = result35
var result36 = buffer.readFloat()
packet.ee = result36
var array37 = buffer.readFloatArray()
packet.eee = array37
var array38 = buffer.readFloatArray()
packet.eeee = array38
var result39 = buffer.readDouble()
packet.f = result39
var result40 = buffer.readDouble()
packet.ff = result40
var array41 = buffer.readDoubleArray()
packet.fff = array41
var array42 = buffer.readDoubleArray()
packet.ffff = array42
var result43 = buffer.readBool()
packet.g = result43
var result44 = buffer.readBool()
packet.gg = result44
var array45 = buffer.readBooleanArray()
packet.ggg = array45
var array46 = buffer.readBooleanArray()
packet.gggg = array46
var result47 = buffer.readChar()
packet.h = result47
var result48 = buffer.readChar()
packet.hh = result48
var array49 = buffer.readCharArray()
packet.hhh = array49
var array50 = buffer.readCharArray()
packet.hhhh = array50
var result51 = buffer.readString()
packet.jj = result51
var array52 = buffer.readStringArray()
packet.jjj = array52
var result53 = buffer.readPacket(102)
packet.kk = result53
var array54 = buffer.readPacketArray(102)
packet.kkk = array54
var list55 = buffer.readIntArray()
packet.l = list55
var result56 = []
var size58 = buffer.readInt()
if (size58 > 0):
for index57 in range(size58):
var result59 = []
var size61 = buffer.readInt()
if (size61 > 0):
for index60 in range(size61):
var list62 = buffer.readIntArray()
result59.append(list62)
result56.append(result59)
packet.ll = result56
var result63 = []
var size65 = buffer.readInt()
if (size65 > 0):
for index64 in range(size65):
var list66 = buffer.readPacketArray(102)
result63.append(list66)
packet.lll = result63
var list67 = buffer.readStringArray()
packet.llll = list67
var result68 = []
var size70 = buffer.readInt()
if (size70 > 0):
for index69 in range(size70):
var map71 = buffer.readIntStringMap()
result68.append(map71)
packet.lllll = result68
var map72 = buffer.readIntStringMap()
packet.m = map72
var map73 = buffer.readIntPacketMap(102)
packet.mm = map73
var result74 = {}
var size75 = buffer.readInt()
if (size75 > 0):
for index76 in range(size75):
var result77 = buffer.readPacket(102)
var list78 = buffer.readIntArray()
result74[result77] = list78
packet.mmm = result74
var result79 = {}
var size80 = buffer.readInt()
if (size80 > 0):
for index81 in range(size80):
var result82 = []
var size84 = buffer.readInt()
if (size84 > 0):
for index83 in range(size84):
var list85 = buffer.readPacketArray(102)
result82.append(list85)
var result86 = []
var size88 = buffer.readInt()
if (size88 > 0):
for index87 in range(size88):
var result89 = []
var size91 = buffer.readInt()
if (size91 > 0):
for index90 in range(size91):
var list92 = buffer.readIntArray()
result89.append(list92)
result86.append(result89)
result79[result82] = result86
packet.mmmm = result79
var result93 = {}
var size94 = buffer.readInt()
if (size94 > 0):
for index95 in range(size94):
var result96 = []
var size98 = buffer.readInt()
if (size98 > 0):
for index97 in range(size98):
var map99 = buffer.readIntStringMap()
result96.append(map99)
var result100 = []
var size102 = buffer.readInt()
if (size102 > 0):
for index101 in range(size102):
var map103 = buffer.readIntStringMap()
result100.append(map103)
result93[result96] = result100
packet.mmmmm = result93
var set104 = buffer.readIntArray()
packet.s = set104
var result105 = []
var size107 = buffer.readInt()
if (size107 > 0):
for index106 in range(size107):
var result108 = []
var size110 = buffer.readInt()
if (size110 > 0):
for index109 in range(size110):
var list111 = buffer.readIntArray()
result108.append(list111)
result105.append(result108)
packet.ss = result105
var result112 = []
var size114 = buffer.readInt()
if (size114 > 0):
for index113 in range(size114):
var set115 = buffer.readPacketArray(102)
result112.append(set115)
packet.sss = result112
var set116 = buffer.readStringArray()
packet.ssss = set116
var result117 = []
var size119 = buffer.readInt()
if (size119 > 0):
for index118 in range(size119):
var map120 = buffer.readIntStringMap()
result117.append(map120)
packet.sssss = result117
if (!buffer.isReadable()):
return packet
var result121 = buffer.readInt()
packet.myCompatible = result121
if (!buffer.isReadable()):
return packet
var result122 = buffer.readPacket(102)
packet.myObject = result122
return packet
@@ -1,27 +0,0 @@
# @author godotg
var a # int
var m # java.util.Map<java.lang.Integer, java.lang.String>
var objectB # com.zfoo.protocol.packet.ObjectB
const PROTOCOL_ID = 102
static func write(buffer, packet):
if (buffer.writePacketFlag(packet)):
return
buffer.writeInt(packet.a)
buffer.writeIntStringMap(packet.m)
buffer.writePacket(packet.objectB, 103)
static func read(buffer):
if (!buffer.readBool()):
return null
var packet = buffer.newInstance(PROTOCOL_ID)
var result0 = buffer.readInt()
packet.a = result0
var map1 = buffer.readIntStringMap()
packet.m = map1
var result2 = buffer.readPacket(103)
packet.objectB = result2
return packet
@@ -1,19 +0,0 @@
# @author godotg
var flag # boolean
const PROTOCOL_ID = 103
static func write(buffer, packet):
if (buffer.writePacketFlag(packet)):
return
buffer.writeBool(packet.flag)
static func read(buffer):
if (!buffer.readBool()):
return null
var packet = buffer.newInstance(PROTOCOL_ID)
var result0 = buffer.readBool()
packet.flag = result0
return packet
@@ -1,23 +0,0 @@
# @author godotg
var c # int
var g # boolean
const PROTOCOL_ID = 104
static func write(buffer, packet):
if (buffer.writePacketFlag(packet)):
return
buffer.writeInt(packet.c)
buffer.writeBool(packet.g)
static func read(buffer):
if (!buffer.readBool()):
return null
var packet = buffer.newInstance(PROTOCOL_ID)
var result0 = buffer.readInt()
packet.c = result0
var result1 = buffer.readBool()
packet.g = result1
return packet
@@ -1,22 +1,48 @@
const ProtocolManager = preload("res://gdProtocol/ProtocolManager.gd")
const ProtocolManager = preload("res://zfoogd/ProtocolManager.gd")
const EMPTY: String = ""
const maxInt: int = 2147483647
const minInt: int = -2147483648
var buffer = StreamPeerBuffer.new()
var writeOffset: int = 0 setget setWriteOffset, getWriteOffset
var readOffset: int = 0 setget setReadOffset, getReadOffset
var writeOffset: int = 0
var readOffset: int = 0
func _init():
buffer.big_endian = true
func adjustPadding(predictionLength: int, beforeWriteIndex: int) -> void:
var currentWriteIndex = writeOffset
var predictionCount = writeIntCount(predictionLength)
var length = currentWriteIndex - beforeWriteIndex - predictionCount
var lengthCount = writeIntCount(length)
var padding = lengthCount - predictionCount
if padding == 0:
setWriteOffset(beforeWriteIndex)
writeInt(length)
setWriteOffset(currentWriteIndex)
else:
buffer.seek(currentWriteIndex - length)
var retainedByteBuf = buffer.get_partial_data(length)
buffer.seek(beforeWriteIndex)
writeInt(length)
buffer.put_partial_data(retainedByteBuf)
setWriteOffset(getWriteOffset() + length)
pass
func compatibleRead(beforeReadIndex: int, length: int) -> bool:
return length != -1 && getReadOffset() < length + beforeReadIndex
# -------------------------------------------------get/set-------------------------------------------------
func setWriteOffset(writeIndex: int) -> void:
if (writeIndex > buffer.get_size()):
var template = "writeIndex[{}] out of bounds exception: readerIndex: {}, writerIndex: {} (expected: 0 <= readerIndex <= writerIndex <= capacity: {})"
printerr(template.format([writeIndex, readOffset, writeOffset, buffer.size()], "{}"))
printerr(template.format([writeIndex, readOffset, writeOffset, buffer.get_size()], "{}"))
return
writeOffset = writeIndex
pass
func getWriteOffset() -> int:
return writeOffset
@@ -27,6 +53,7 @@ func setReadOffset(readIndex: int) -> void:
printerr(template.format([readIndex, readOffset, writeOffset, buffer.size()], "{}"))
return
readOffset = readIndex
pass
func getReadOffset() -> int:
return readOffset
@@ -35,22 +62,25 @@ func isReadable() -> bool:
return writeOffset > readOffset
# -------------------------------------------------write/read-------------------------------------------------
func writePoolByteArray(value: PoolByteArray):
var length = value.size()
func writePackedByteArray(value: PackedByteArray):
var length: int = value.size()
buffer.put_partial_data(value)
writeOffset += length
pass
func toPackedByteArray() -> PackedByteArray:
return buffer.data_array.slice(0, writeOffset)
func writeBool(value: bool) -> void:
var byte = 0
if (value):
byte = 1
var byte: int = 1 if value else 0
buffer.seek(writeOffset)
buffer.put_8(byte)
writeOffset += 1
pass
func readBool() -> bool:
buffer.seek(readOffset)
var byte = buffer.get_8()
var byte: int = buffer.get_8()
readOffset += 1
return byte == 1
@@ -58,10 +88,11 @@ func writeByte(value: int) -> void:
buffer.seek(writeOffset)
buffer.put_8(value)
writeOffset += 1
pass
func readByte() -> int:
buffer.seek(readOffset)
var value = buffer.get_8()
var value: int = buffer.get_8()
readOffset += 1
return value
@@ -69,6 +100,7 @@ func writeShort(value: int) -> void:
buffer.seek(writeOffset)
buffer.put_16(value)
writeOffset += 2
pass
func readShort() -> int:
buffer.seek(readOffset)
@@ -76,37 +108,63 @@ func readShort() -> int:
readOffset += 2
return value
func writeRawInt(value) -> void:
buffer.seek(writeOffset)
buffer.put_32(value)
writeOffset += 4
pass
func readRawInt() -> int:
buffer.seek(readOffset)
var value = buffer.get_32()
readOffset += 4
return value
func writeInt(value) -> void:
if !(minInt <= value && value <= maxInt):
printerr("value must range between minInt:-2147483648 and maxInt:2147483647")
return
writeLong(value)
pass
func writeIntCount(value: int) -> int:
if !(minInt <= value && value <= maxInt):
printerr("value must range between minInt:-2147483648 and maxInt:2147483647")
return 0
if value >> 7 == 0:
return 1
if value >> 14 == 0:
return 2
if value >> 21 == 0:
return 3
if value >> 28 == 0:
return 4
return 5
func readInt() -> int:
return readLong()
func writeLong(longValue: int) -> void:
var value = (longValue << 1) ^ (longValue >> 63)
var value: int = (longValue << 1) ^ (longValue >> 63)
if (value >> 7 == 0):
writeByte(value)
return
if (value >> 14 == 0):
writeByte(value | 0x80)
writeByte(value >> 7)
return
if (value >> 21 == 0):
writeByte(value | 0x80)
writeByte((value >> 7) | 0x80)
writeByte(value >> 14)
return
if (value >> 28 == 0):
writeByte(value | 0x80)
writeByte((value >> 7) | 0x80)
writeByte((value >> 14) | 0x80)
writeByte(value >> 21)
return
if (value >> 35 == 0):
writeByte(value | 0x80)
writeByte((value >> 7) | 0x80)
@@ -114,7 +172,6 @@ func writeLong(longValue: int) -> void:
writeByte((value >> 21) | 0x80)
writeByte(value >> 28)
return
if (value >> 42 == 0):
writeByte(value | 0x80)
writeByte((value >> 7) | 0x80)
@@ -123,7 +180,6 @@ func writeLong(longValue: int) -> void:
writeByte((value >> 28) | 0x80)
writeByte(value >> 35)
return
if (value >> 49 == 0):
writeByte(value | 0x80)
writeByte((value >> 7) | 0x80)
@@ -133,7 +189,6 @@ func writeLong(longValue: int) -> void:
writeByte((value >> 35) | 0x80)
writeByte(value >> 42)
return
if (value >> 56 == 0):
writeByte(value | 0x80)
writeByte((value >> 7) | 0x80)
@@ -144,7 +199,6 @@ func writeLong(longValue: int) -> void:
writeByte((value >> 42) | 0x80)
writeByte(value >> 49)
return
writeByte(value | 0x80)
writeByte((value >> 7) | 0x80)
writeByte((value >> 14) | 0x80)
@@ -154,6 +208,7 @@ func writeLong(longValue: int) -> void:
writeByte((value >> 42) | 0x80)
writeByte((value >> 49) | 0x80)
writeByte(value >> 56)
pass
func readLong() -> int:
var byte: int = readByte()
@@ -182,7 +237,6 @@ func readLong() -> int:
if (byte < 0):
byte = readByte()
value = value & 0x00FFFFFF_FFFFFFFF | byte << 56
var mask = value >> 1
if (mask < 0):
mask = mask & 0x7FFFFFFF_FFFFFFFF
@@ -193,6 +247,7 @@ func writeFloat(value: float) -> void:
buffer.seek(writeOffset)
buffer.put_float(value)
writeOffset += 4
pass
func readFloat() -> float:
buffer.seek(readOffset)
@@ -204,6 +259,7 @@ func writeDouble(value: float) -> void:
buffer.seek(writeOffset)
buffer.put_double(value)
writeOffset += 8
pass
func readDouble() -> float:
buffer.seek(readOffset)
@@ -216,43 +272,29 @@ func writeString(value: String) -> void:
if (value == null || value.length() ==0):
writeInt(0)
return
buffer.seek(writeOffset)
var strBytes = value.to_utf8()
var length = strBytes.size()
var strBytes: PackedByteArray = value.to_utf8_buffer()
var length: int = strBytes.size()
writeInt(length)
buffer.put_partial_data(strBytes)
writeOffset += length
pass
func readString() -> String:
var length = readInt()
var length: int = readInt()
if (length <= 0):
return EMPTY
buffer.seek(readOffset)
var value = buffer.get_utf8_string(length)
var strBytes = value.to_utf8()
var value: String = buffer.get_utf8_string(length)
var strBytes: PackedByteArray = value.to_utf8_buffer()
readOffset += length
return value
func writeChar(value) -> void:
if (value == null || value.length() == 0):
writeString(EMPTY)
return
writeString(value[0])
func readChar() -> String:
return readString()
func writePacketFlag(packet) -> bool:
var flag = (packet == null)
writeBool(!flag)
return flag
func writePacket(packet, protocolId):
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
protocolRegistration.write(self, packet)
pass
func readPacket(protocolId):
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
@@ -265,163 +307,163 @@ func writeBooleanArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
writeInt(array.size())
for element in array:
writeBool(element)
func readBooleanArray():
var array = []
pass
func readBooleanArray() -> Array[bool]:
var array: Array[bool] = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readBool())
return array
func writeByteArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
writeInt(array.size())
for element in array:
writeByte(element)
func readByteArray():
var array = []
pass
func readByteArray() -> Array[int]:
var array: Array[int] = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readByte())
return array
func writeShortArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
writeInt(array.size())
for element in array:
writeShort(element)
pass
func readShortArray():
var array = []
var array: Array[int] = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readShort())
return array
func writeIntArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
writeInt(array.size())
for element in array:
writeInt(element)
pass
func readIntArray():
var array = []
var array: Array[int] = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readInt())
return array
func writeLongArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
writeInt(array.size())
for element in array:
writeLong(element)
pass
func readLongArray():
var array = []
var array: Array[int] = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readLong())
return array
func writeFloatArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
writeInt(array.size())
for element in array:
writeFloat(element)
pass
func readFloatArray():
var array = []
var array: Array[float] = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readFloat())
return array
func writeDoubleArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
writeInt(array.size())
for element in array:
writeDouble(element)
pass
func readDoubleArray():
var array = []
var array: Array[float] = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readDouble())
return array
func writeCharArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
for element in array:
writeChar(element)
func readCharArray():
var array = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readChar())
return array
func writeStringArray(array):
if (array == null):
writeInt(0)
else:
writeInt(array.size());
writeInt(array.size())
for element in array:
writeString(element)
pass
func readStringArray():
var array = []
var array: Array[String] = []
var size = readInt()
if (size > 0):
for index in range(size):
array.append(readString())
return array
func writePacketArray(array, protocolId):
if (array == null):
writeInt(0)
else:
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
writeInt(array.size());
writeInt(array.size())
for element in array:
protocolRegistration.write(self, element)
pass
func readPacketArray(protocolId):
var array = []
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
var array = Array([], typeof(protocolRegistration), StringName("RefCounted"), protocolRegistration)
var size = readInt()
if (size > 0):
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
for index in range(size):
array.append(protocolRegistration.read(self))
#var a = array.get_typed_class_name()
#var b = array.get_typed_script()
#var c = array.get_typed_builtin()
#var typeArray: Array[ObjectA] = []
#var aa = typeArray.get_typed_class_name()
#var bb = typeArray.get_typed_script()
#var cc = typeArray.get_typed_builtin()
return array
func writeIntIntMap(map):
@@ -432,7 +474,8 @@ func writeIntIntMap(map):
for key in map:
writeInt(key)
writeInt(map[key])
pass
func readIntIntMap():
var map = {}
var size = readInt()
@@ -442,16 +485,17 @@ func readIntIntMap():
var value = readInt()
map[key] = value
return map
func writeIntLongMap(map):
if (map == null):
writeInt(0)
else:
writeInt(map.size())
for key in map:
writeInt(map)
writeInt(key)
writeLong(map[key])
pass
func readIntLongMap():
var map = {}
var size = readInt()
@@ -461,7 +505,7 @@ func readIntLongMap():
var value = readLong()
map[key] = value
return map
func writeIntStringMap(map):
if (map == null):
writeInt(0)
@@ -470,7 +514,8 @@ func writeIntStringMap(map):
for key in map:
writeInt(key)
writeString(map[key])
pass
func readIntStringMap():
var map = {}
var size = readInt()
@@ -481,7 +526,6 @@ func readIntStringMap():
map[key] = value
return map
func writeIntPacketMap(map, protocolId):
if (map == null):
writeInt(0)
@@ -491,6 +535,7 @@ func writeIntPacketMap(map, protocolId):
for key in map:
writeInt(key)
protocolRegistration.write(self, map[key])
pass
func readIntPacketMap(protocolId):
var map = {}
@@ -502,8 +547,7 @@ func readIntPacketMap(protocolId):
var value = protocolRegistration.read(self)
map[key] = value
return map
func writeLongIntMap(map):
if (map == null):
writeInt(0)
@@ -512,7 +556,8 @@ func writeLongIntMap(map):
for key in map:
writeLong(key)
writeInt(map[key])
pass
func readLongIntMap():
var map = {}
var size = readInt()
@@ -522,7 +567,7 @@ func readLongIntMap():
var value = readInt()
map[key] = value
return map
func writeLongLongMap(map):
if (map == null):
writeInt(0)
@@ -531,7 +576,8 @@ func writeLongLongMap(map):
for key in map:
writeLong(key)
writeLong(map[key])
pass
func readLongLongMap():
var map = {}
var size = readInt()
@@ -541,7 +587,7 @@ func readLongLongMap():
var value = readLong()
map[key] = value
return map
func writeLongStringMap(map):
if (map == null):
writeInt(0)
@@ -550,7 +596,8 @@ func writeLongStringMap(map):
for key in map:
writeLong(key)
writeString(map[key])
pass
func readLongStringMap():
var map = {}
var size = readInt()
@@ -561,7 +608,6 @@ func readLongStringMap():
map[key] = value
return map
func writeLongPacketMap(map, protocolId):
if (map == null):
writeInt(0)
@@ -571,6 +617,7 @@ func writeLongPacketMap(map, protocolId):
for key in map:
writeLong(key)
protocolRegistration.write(self, map[key])
pass
func readLongPacketMap(protocolId):
var map = {}
@@ -582,7 +629,6 @@ func readLongPacketMap(protocolId):
var value = protocolRegistration.read(self)
map[key] = value
return map
func writeStringIntMap(map):
if (map == null):
@@ -592,7 +638,8 @@ func writeStringIntMap(map):
for key in map:
writeString(key)
writeInt(map[key])
pass
func readStringIntMap():
var map = {}
var size = readInt()
@@ -602,7 +649,7 @@ func readStringIntMap():
var value = readInt()
map[key] = value
return map
func writeStringLongMap(map):
if (map == null):
writeInt(0)
@@ -611,7 +658,8 @@ func writeStringLongMap(map):
for key in map:
writeString(key)
writeLong(map[key])
pass
func readStringLongMap():
var map = {}
var size = readInt()
@@ -621,7 +669,7 @@ func readStringLongMap():
var value = readLong()
map[key] = value
return map
func writeStringStringMap(map):
if (map == null):
writeInt(0)
@@ -630,7 +678,8 @@ func writeStringStringMap(map):
for key in map:
writeString(key)
writeString(map[key])
pass
func readStringStringMap():
var map = {}
var size = readInt()
@@ -641,7 +690,6 @@ func readStringStringMap():
map[key] = value
return map
func writeStringPacketMap(map, protocolId):
if (map == null):
writeInt(0)
@@ -651,6 +699,7 @@ func writeStringPacketMap(map, protocolId):
for key in map:
writeString(key)
protocolRegistration.write(self, map[key])
pass
func readStringPacketMap(protocolId):
var map = {}
@@ -0,0 +1,36 @@
const EmptyObject = preload("res://zfoogd/packet/EmptyObject.gd")
const VeryBigObject = preload("res://zfoogd/packet/VeryBigObject.gd")
const ComplexObject = preload("res://zfoogd/packet/ComplexObject.gd")
const NormalObject = preload("res://zfoogd/packet/NormalObject.gd")
const ObjectA = preload("res://zfoogd/packet/ObjectA.gd")
const ObjectB = preload("res://zfoogd/packet/ObjectB.gd")
const SimpleObject = preload("res://zfoogd/packet/SimpleObject.gd")
const protocols: Dictionary = {
0: EmptyObject,
1: VeryBigObject,
100: ComplexObject,
101: NormalObject,
102: ObjectA,
103: ObjectB,
104: SimpleObject
}
static func getProtocol(protocolId: int):
return protocols[protocolId]
static func newInstance(protocolId: int):
var protocol = protocols[protocolId]
return protocol.new()
static func write(buffer, packet):
var protocolId: int = packet.PROTOCOL_ID
buffer.writeShort(protocolId)
var protocol = protocols[protocolId]
protocol.write(buffer, packet)
static func read(buffer):
var protocolId = buffer.readShort()
var protocol = protocols[protocolId]
var packet = protocol.read(buffer)
return packet
@@ -0,0 +1,401 @@
const PROTOCOL_ID = 100
const PROTOCOL_CLASS_NAME = "ComplexObject"
const ObjectA = preload("res://zfoogd/packet/ObjectA.gd")
const ObjectB = preload("res://zfoogd/packet/ObjectB.gd")
# 复杂的对象,包括了各种复杂的结构,数组,List,Set,Map
# byte类型,最简单的整形
var a: int
# byte的包装类型,优先使用基础类型,包装类型会有装箱拆箱
var aa: int
# 数组类型
var aaa: Array[int]
var aaaa: Array[int]
var b: int
var bb: int
var bbb: Array[int]
var bbbb: Array[int]
var c: int
var cc: int
var ccc: Array[int]
var cccc: Array[int]
var d: int
var dd: int
var ddd: Array[int]
var dddd: Array[int]
var e: float
var ee: float
var eee: Array[float]
var eeee: Array[float]
var f: float
var ff: float
var fff: Array[float]
var ffff: Array[float]
var g: bool
var gg: bool
var ggg: Array[bool]
var gggg: Array[bool]
var jj: String
var jjj: Array[String]
var kk: ObjectA
var kkk: Array[ObjectA]
var l: Array[int]
var ll: Array # Array<Array<Array<number>>>
var lll: Array # Array<Array<ObjectA>>
var llll: Array[String]
var lllll: Array # Array<Map<number, string>>
var m: Dictionary # Map<number, string>
var mm: Dictionary # Map<number, ObjectA>
var mmm: Dictionary # Map<ObjectA, Array<number>>
var mmmm: Dictionary # Map<Array<Array<ObjectA>>, Array<Array<Array<number>>>>
var mmmmm: Dictionary # Map<Array<Map<number, string>>, Set<Map<number, string>>>
var s: Array[int]
var ss: Array # Set<Set<Array<number>>>
var sss: Array # Set<Set<ObjectA>>
var ssss: Array[String]
var sssss: Array # Set<Map<number, string>>
# 如果要修改协议并且兼容老协议,需要加上Compatible注解,按照增加的顺序添加order
var myCompatible: int
var myObject: ObjectA
func _to_string() -> String:
const jsonTemplate = "{a:{}, aa:{}, aaa:{}, aaaa:{}, b:{}, bb:{}, bbb:{}, bbbb:{}, c:{}, cc:{}, ccc:{}, cccc:{}, d:{}, dd:{}, ddd:{}, dddd:{}, e:{}, ee:{}, eee:{}, eeee:{}, f:{}, ff:{}, fff:{}, ffff:{}, g:{}, gg:{}, ggg:{}, gggg:{}, jj:'{}', jjj:{}, kk:{}, kkk:{}, l:{}, ll:{}, lll:{}, llll:{}, lllll:{}, m:{}, mm:{}, mmm:{}, mmmm:{}, mmmmm:{}, s:{}, ss:{}, sss:{}, ssss:{}, sssss:{}, myCompatible:{}, myObject:{}}"
var params = [self.a, self.aa, JSON.stringify(self.aaa), JSON.stringify(self.aaaa), self.b, self.bb, JSON.stringify(self.bbb), JSON.stringify(self.bbbb), self.c, self.cc, JSON.stringify(self.ccc), JSON.stringify(self.cccc), self.d, self.dd, JSON.stringify(self.ddd), JSON.stringify(self.dddd), self.e, self.ee, JSON.stringify(self.eee), JSON.stringify(self.eeee), self.f, self.ff, JSON.stringify(self.fff), JSON.stringify(self.ffff), self.g, self.gg, JSON.stringify(self.ggg), JSON.stringify(self.gggg), self.jj, JSON.stringify(self.jjj), self.kk, JSON.stringify(self.kkk), JSON.stringify(self.l), JSON.stringify(self.ll), JSON.stringify(self.lll), JSON.stringify(self.llll), JSON.stringify(self.lllll), JSON.stringify(self.m), JSON.stringify(self.mm), JSON.stringify(self.mmm), JSON.stringify(self.mmmm), JSON.stringify(self.mmmmm), JSON.stringify(self.s), JSON.stringify(self.ss), JSON.stringify(self.sss), JSON.stringify(self.ssss), JSON.stringify(self.sssss), self.myCompatible, self.myObject]
return jsonTemplate.format(params, "{}")
static func write(buffer, packet):
if (packet == null):
buffer.writeInt(0)
return
var beforeWriteIndex = buffer.getWriteOffset()
buffer.writeInt(36962)
buffer.writeByte(packet.a)
buffer.writeByte(packet.aa)
buffer.writeByteArray(packet.aaa)
buffer.writeByteArray(packet.aaaa)
buffer.writeShort(packet.b)
buffer.writeShort(packet.bb)
buffer.writeShortArray(packet.bbb)
buffer.writeShortArray(packet.bbbb)
buffer.writeInt(packet.c)
buffer.writeInt(packet.cc)
buffer.writeIntArray(packet.ccc)
buffer.writeIntArray(packet.cccc)
buffer.writeLong(packet.d)
buffer.writeLong(packet.dd)
buffer.writeLongArray(packet.ddd)
buffer.writeLongArray(packet.dddd)
buffer.writeFloat(packet.e)
buffer.writeFloat(packet.ee)
buffer.writeFloatArray(packet.eee)
buffer.writeFloatArray(packet.eeee)
buffer.writeDouble(packet.f)
buffer.writeDouble(packet.ff)
buffer.writeDoubleArray(packet.fff)
buffer.writeDoubleArray(packet.ffff)
buffer.writeBool(packet.g)
buffer.writeBool(packet.gg)
buffer.writeBooleanArray(packet.ggg)
buffer.writeBooleanArray(packet.gggg)
buffer.writeString(packet.jj)
buffer.writeStringArray(packet.jjj)
buffer.writePacket(packet.kk, 102)
buffer.writePacketArray(packet.kkk, 102)
buffer.writeIntArray(packet.l)
if (packet.ll == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.ll.size())
for element0 in packet.ll:
if (element0 == null):
buffer.writeInt(0)
else:
buffer.writeInt(element0.size())
for element1 in element0:
buffer.writeIntArray(element1)
if (packet.lll == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.lll.size())
for element2 in packet.lll:
buffer.writePacketArray(element2, 102)
buffer.writeStringArray(packet.llll)
if (packet.lllll == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.lllll.size())
for element3 in packet.lllll:
buffer.writeIntStringMap(element3)
buffer.writeIntStringMap(packet.m)
buffer.writeIntPacketMap(packet.mm, 102)
if (packet.mmm == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.mmm.size())
for key4 in packet.mmm:
var value5 = packet.mmm[key4]
buffer.writePacket(key4, 102)
buffer.writeIntArray(value5)
if (packet.mmmm == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.mmmm.size())
for key6 in packet.mmmm:
var value7 = packet.mmmm[key6]
if (key6 == null):
buffer.writeInt(0)
else:
buffer.writeInt(key6.size())
for element8 in key6:
buffer.writePacketArray(element8, 102)
if (value7 == null):
buffer.writeInt(0)
else:
buffer.writeInt(value7.size())
for element9 in value7:
if (element9 == null):
buffer.writeInt(0)
else:
buffer.writeInt(element9.size())
for element10 in element9:
buffer.writeIntArray(element10)
if (packet.mmmmm == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.mmmmm.size())
for key11 in packet.mmmmm:
var value12 = packet.mmmmm[key11]
if (key11 == null):
buffer.writeInt(0)
else:
buffer.writeInt(key11.size())
for element13 in key11:
buffer.writeIntStringMap(element13)
if (value12 == null):
buffer.writeInt(0)
else:
buffer.writeInt(value12.size())
for element14 in value12:
buffer.writeIntStringMap(element14)
buffer.writeIntArray(packet.s)
if (packet.ss == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.ss.size())
for element15 in packet.ss:
if (element15 == null):
buffer.writeInt(0)
else:
buffer.writeInt(element15.size())
for element16 in element15:
buffer.writeIntArray(element16)
if (packet.sss == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.sss.size())
for element17 in packet.sss:
buffer.writePacketArray(element17, 102)
buffer.writeStringArray(packet.ssss)
if (packet.sssss == null):
buffer.writeInt(0)
else:
buffer.writeInt(packet.sssss.size())
for element18 in packet.sssss:
buffer.writeIntStringMap(element18)
buffer.writeInt(packet.myCompatible)
buffer.writePacket(packet.myObject, 102)
buffer.adjustPadding(36962, beforeWriteIndex)
pass
static func read(buffer):
var length = buffer.readInt()
if (length == 0):
return null
var beforeReadIndex = buffer.getReadOffset()
var packet = buffer.newInstance(PROTOCOL_ID)
var result19 = buffer.readByte()
packet.a = result19
var result20 = buffer.readByte()
packet.aa = result20
var array21 = buffer.readByteArray()
packet.aaa = array21
var array22 = buffer.readByteArray()
packet.aaaa = array22
var result23 = buffer.readShort()
packet.b = result23
var result24 = buffer.readShort()
packet.bb = result24
var array25 = buffer.readShortArray()
packet.bbb = array25
var array26 = buffer.readShortArray()
packet.bbbb = array26
var result27 = buffer.readInt()
packet.c = result27
var result28 = buffer.readInt()
packet.cc = result28
var array29 = buffer.readIntArray()
packet.ccc = array29
var array30 = buffer.readIntArray()
packet.cccc = array30
var result31 = buffer.readLong()
packet.d = result31
var result32 = buffer.readLong()
packet.dd = result32
var array33 = buffer.readLongArray()
packet.ddd = array33
var array34 = buffer.readLongArray()
packet.dddd = array34
var result35 = buffer.readFloat()
packet.e = result35
var result36 = buffer.readFloat()
packet.ee = result36
var array37 = buffer.readFloatArray()
packet.eee = array37
var array38 = buffer.readFloatArray()
packet.eeee = array38
var result39 = buffer.readDouble()
packet.f = result39
var result40 = buffer.readDouble()
packet.ff = result40
var array41 = buffer.readDoubleArray()
packet.fff = array41
var array42 = buffer.readDoubleArray()
packet.ffff = array42
var result43 = buffer.readBool()
packet.g = result43
var result44 = buffer.readBool()
packet.gg = result44
var array45 = buffer.readBooleanArray()
packet.ggg = array45
var array46 = buffer.readBooleanArray()
packet.gggg = array46
var result47 = buffer.readString()
packet.jj = result47
var array48 = buffer.readStringArray()
packet.jjj = array48
var result49 = buffer.readPacket(102)
packet.kk = result49
var array50 = buffer.readPacketArray(102)
packet.kkk = array50
var list51 = buffer.readIntArray()
packet.l = list51
var result52 = []
var size54 = buffer.readInt()
if (size54 > 0):
for index53 in range(size54):
var result55 = []
var size57 = buffer.readInt()
if (size57 > 0):
for index56 in range(size57):
var list58 = buffer.readIntArray()
result55.append(list58)
result52.append(result55)
packet.ll = result52
var result59 = []
var size61 = buffer.readInt()
if (size61 > 0):
for index60 in range(size61):
var list62 = buffer.readPacketArray(102)
result59.append(list62)
packet.lll = result59
var list63 = buffer.readStringArray()
packet.llll = list63
var result64 = []
var size66 = buffer.readInt()
if (size66 > 0):
for index65 in range(size66):
var map67 = buffer.readIntStringMap()
result64.append(map67)
packet.lllll = result64
var map68 = buffer.readIntStringMap()
packet.m = map68
var map69 = buffer.readIntPacketMap(102)
packet.mm = map69
var result70 = {}
var size71 = buffer.readInt()
if (size71 > 0):
for index72 in range(size71):
var result73 = buffer.readPacket(102)
var list74 = buffer.readIntArray()
result70[result73] = list74
packet.mmm = result70
var result75 = {}
var size76 = buffer.readInt()
if (size76 > 0):
for index77 in range(size76):
var result78 = []
var size80 = buffer.readInt()
if (size80 > 0):
for index79 in range(size80):
var list81 = buffer.readPacketArray(102)
result78.append(list81)
var result82 = []
var size84 = buffer.readInt()
if (size84 > 0):
for index83 in range(size84):
var result85 = []
var size87 = buffer.readInt()
if (size87 > 0):
for index86 in range(size87):
var list88 = buffer.readIntArray()
result85.append(list88)
result82.append(result85)
result75[result78] = result82
packet.mmmm = result75
var result89 = {}
var size90 = buffer.readInt()
if (size90 > 0):
for index91 in range(size90):
var result92 = []
var size94 = buffer.readInt()
if (size94 > 0):
for index93 in range(size94):
var map95 = buffer.readIntStringMap()
result92.append(map95)
var result96 = []
var size98 = buffer.readInt()
if (size98 > 0):
for index97 in range(size98):
var map99 = buffer.readIntStringMap()
result96.append(map99)
result89[result92] = result96
packet.mmmmm = result89
var set100 = buffer.readIntArray()
packet.s = set100
var result101 = []
var size103 = buffer.readInt()
if (size103 > 0):
for index102 in range(size103):
var result104 = []
var size106 = buffer.readInt()
if (size106 > 0):
for index105 in range(size106):
var list107 = buffer.readIntArray()
result104.append(list107)
result101.append(result104)
packet.ss = result101
var result108 = []
var size110 = buffer.readInt()
if (size110 > 0):
for index109 in range(size110):
var set111 = buffer.readPacketArray(102)
result108.append(set111)
packet.sss = result108
var set112 = buffer.readStringArray()
packet.ssss = set112
var result113 = []
var size115 = buffer.readInt()
if (size115 > 0):
for index114 in range(size115):
var map116 = buffer.readIntStringMap()
result113.append(map116)
packet.sssss = result113
if buffer.compatibleRead(beforeReadIndex, length):
var result117 = buffer.readInt()
packet.myCompatible = result117;
if buffer.compatibleRead(beforeReadIndex, length):
var result118 = buffer.readPacket(102)
packet.myObject = result118;
if (length > 0):
buffer.setReadOffset(beforeReadIndex + length)
return packet
@@ -0,0 +1,28 @@
const PROTOCOL_ID = 0
const PROTOCOL_CLASS_NAME = "EmptyObject"
func _to_string() -> String:
const jsonTemplate = "{}"
var params = []
return jsonTemplate.format(params, "{}")
static func write(buffer, packet):
if (packet == null):
buffer.writeInt(0)
return
buffer.writeInt(-1)
pass
static func read(buffer):
var length = buffer.readInt()
if (length == 0):
return null
var beforeReadIndex = buffer.getReadOffset()
var packet = buffer.newInstance(PROTOCOL_ID)
if (length > 0):
buffer.setReadOffset(beforeReadIndex + length)
return packet
@@ -1,29 +1,38 @@
# @author godotg
var a # byte
var aaa # byte[]
var b # short
var c # int
var d # long
var e # float
var f # double
var g # boolean
var jj # java.lang.String
var kk # com.zfoo.protocol.packet.ObjectA
var l # java.util.List<java.lang.Integer>
var ll # java.util.List<java.lang.Long>
var lll # java.util.List<com.zfoo.protocol.packet.ObjectA>
var llll # java.util.List<java.lang.String>
var m # java.util.Map<java.lang.Integer, java.lang.String>
var mm # java.util.Map<java.lang.Integer, com.zfoo.protocol.packet.ObjectA>
var s # java.util.Set<java.lang.Integer>
var ssss # java.util.Set<java.lang.String>
const PROTOCOL_ID = 101
const PROTOCOL_CLASS_NAME = "NormalObject"
const ObjectA = preload("res://zfoogd/packet/ObjectA.gd")
const ObjectB = preload("res://zfoogd/packet/ObjectB.gd")
var a: int
var aaa: Array[int]
var b: int
var c: int
var d: int
var e: float
var f: float
var g: bool
var jj: String
var kk: ObjectA
var l: Array[int]
var ll: Array[int]
var lll: Array[ObjectA]
var llll: Array[String]
var m: Dictionary # Map<number, string>
var mm: Dictionary # Map<number, ObjectA>
var s: Array[int]
var ssss: Array[String]
func _to_string() -> String:
const jsonTemplate = "{a:{}, aaa:{}, b:{}, c:{}, d:{}, e:{}, f:{}, g:{}, jj:'{}', kk:{}, l:{}, ll:{}, lll:{}, llll:{}, m:{}, mm:{}, s:{}, ssss:{}}"
var params = [self.a, JSON.stringify(self.aaa), self.b, self.c, self.d, self.e, self.f, self.g, self.jj, self.kk, JSON.stringify(self.l), JSON.stringify(self.ll), JSON.stringify(self.lll), JSON.stringify(self.llll), JSON.stringify(self.m), JSON.stringify(self.mm), JSON.stringify(self.s), JSON.stringify(self.ssss)]
return jsonTemplate.format(params, "{}")
static func write(buffer, packet):
if (buffer.writePacketFlag(packet)):
if (packet == null):
buffer.writeInt(0)
return
buffer.writeInt(-1)
buffer.writeByte(packet.a)
buffer.writeByteArray(packet.aaa)
buffer.writeShort(packet.b)
@@ -42,11 +51,13 @@ static func write(buffer, packet):
buffer.writeIntPacketMap(packet.mm, 102)
buffer.writeIntArray(packet.s)
buffer.writeStringArray(packet.ssss)
pass
static func read(buffer):
if (!buffer.readBool()):
var length = buffer.readInt()
if (length == 0):
return null
var beforeReadIndex = buffer.getReadOffset()
var packet = buffer.newInstance(PROTOCOL_ID)
var result0 = buffer.readByte()
packet.a = result0
@@ -84,4 +95,6 @@ static func read(buffer):
packet.s = set16
var set17 = buffer.readStringArray()
packet.ssss = set17
if (length > 0):
buffer.setReadOffset(beforeReadIndex + length)
return packet
@@ -0,0 +1,39 @@
const PROTOCOL_ID = 102
const PROTOCOL_CLASS_NAME = "ObjectA"
const ObjectB = preload("res://zfoogd/packet/ObjectB.gd")
var a: int
var m: Dictionary # Map<number, string>
var objectB: ObjectB
func _to_string() -> String:
const jsonTemplate = "{a:{}, m:{}, objectB:{}}"
var params = [self.a, JSON.stringify(self.m), self.objectB]
return jsonTemplate.format(params, "{}")
static func write(buffer, packet):
if (packet == null):
buffer.writeInt(0)
return
buffer.writeInt(-1)
buffer.writeInt(packet.a)
buffer.writeIntStringMap(packet.m)
buffer.writePacket(packet.objectB, 103)
pass
static func read(buffer):
var length = buffer.readInt()
if (length == 0):
return null
var beforeReadIndex = buffer.getReadOffset()
var packet = buffer.newInstance(PROTOCOL_ID)
var result0 = buffer.readInt()
packet.a = result0
var map1 = buffer.readIntStringMap()
packet.m = map1
var result2 = buffer.readPacket(103)
packet.objectB = result2
if (length > 0):
buffer.setReadOffset(beforeReadIndex + length)
return packet
@@ -0,0 +1,30 @@
const PROTOCOL_ID = 103
const PROTOCOL_CLASS_NAME = "ObjectB"
var flag: bool
func _to_string() -> String:
const jsonTemplate = "{flag:{}}"
var params = [self.flag]
return jsonTemplate.format(params, "{}")
static func write(buffer, packet):
if (packet == null):
buffer.writeInt(0)
return
buffer.writeInt(-1)
buffer.writeBool(packet.flag)
pass
static func read(buffer):
var length = buffer.readInt()
if (length == 0):
return null
var beforeReadIndex = buffer.getReadOffset()
var packet = buffer.newInstance(PROTOCOL_ID)
var result0 = buffer.readBool()
packet.flag = result0
if (length > 0):
buffer.setReadOffset(beforeReadIndex + length)
return packet
@@ -0,0 +1,34 @@
const PROTOCOL_ID = 104
const PROTOCOL_CLASS_NAME = "SimpleObject"
var c: int
var g: bool
func _to_string() -> String:
const jsonTemplate = "{c:{}, g:{}}"
var params = [self.c, self.g]
return jsonTemplate.format(params, "{}")
static func write(buffer, packet):
if (packet == null):
buffer.writeInt(0)
return
buffer.writeInt(-1)
buffer.writeInt(packet.c)
buffer.writeBool(packet.g)
pass
static func read(buffer):
var length = buffer.readInt()
if (length == 0):
return null
var beforeReadIndex = buffer.getReadOffset()
var packet = buffer.newInstance(PROTOCOL_ID)
var result0 = buffer.readInt()
packet.c = result0
var result1 = buffer.readBool()
packet.g = result1
if (length > 0):
buffer.setReadOffset(beforeReadIndex + length)
return packet
File diff suppressed because it is too large. Load diff