test[protocol]: ruby test

This commit is contained in:
godotg
2024-07-24 14:59:31 +08:00
parent 7103d95983
commit 01de60bc48
10 changed files with 18749 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
require './zfooruby/ProtocolManager.rb'
require './zfooruby/ByteBuffer.rb'
def assertEqual(a, b)
if a != b
raise "assert failed"
end
end
def byteBufferTest
buffer = ByteBuffer.new()
buffer.writeBool(true)
assertEqual(buffer.readBool(), true)
buffer.writeByte(100)
assertEqual(buffer.readByte(), 100)
buffer.writeShort(127)
assertEqual(buffer.readShort(), 127)
buffer.writeRawInt(2147483647)
assertEqual(buffer.readRawInt(), 2147483647)
buffer.writeRawInt(-2147483648)
assertEqual(buffer.readRawInt(), -2147483648)
buffer.writeInt(2147483647)
assertEqual(buffer.readInt(), 2147483647)
buffer.writeInt(-2147483648)
assertEqual(buffer.readInt(), -2147483648)
buffer.writeLong(9999999999999999)
assertEqual(buffer.readLong(), 9999999999999999)
buffer.writeLong(444444444444444)
assertEqual(buffer.readLong(), 444444444444444)
buffer.writeLong(-9223372036854775808)
assertEqual(buffer.readLong(), -9223372036854775808)
buffer.writeString("Hello, 你好")
assertEqual(buffer.readString(), "Hello, 你好")
buffer.writeFloat(99.0)
assertEqual(buffer.readFloat(), 99.0)
buffer.writeFloat(-99.0)
assertEqual(buffer.readFloat(), -99.0)
buffer.writeDouble(99.0)
assertEqual(buffer.readDouble(), 99.0)
buffer.writeDouble(-99.0)
assertEqual(buffer.readDouble(), -99.0)
end
ProtocolManager.initProtocol()
# data = File.read("D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-no-compatible.bytes")
# data = File.read("D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-out-compatible.bytes")
# data = File.read("D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-inner-compatible.bytes")
# data = File.read("D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-out-inner-compatible.bytes")
data = File.read("D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-out-inner-inner-compatible.bytes")
byteBuffer = ByteBuffer.new()
byteBuffer.writeBytesString(data)
packet = ProtocolManager.read(byteBuffer)
newByteBuffer = ByteBuffer.new()
ProtocolManager.write(newByteBuffer, packet)
newPacket = ProtocolManager.read(newByteBuffer)
puts packet.inspect
puts newPacket.inspect
byteBufferTest()
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,48 @@
require_relative 'packet/EmptyObject.rb'
require_relative 'packet/VeryBigObject.rb'
require_relative 'packet/ComplexObject.rb'
require_relative 'packet/NormalObject.rb'
require_relative 'packet/ObjectA.rb'
require_relative 'packet/ObjectB.rb'
require_relative 'packet/SimpleObject.rb'
class ProtocolManager
@@protocols = Array.new(32767)
@@protocolIdMap = Hash.new()
def self.initProtocol()
@@protocols[0] = EmptyObjectRegistration.new()
@@protocolIdMap[EmptyObject] = 0
@@protocols[1] = VeryBigObjectRegistration.new()
@@protocolIdMap[VeryBigObject] = 1
@@protocols[100] = ComplexObjectRegistration.new()
@@protocolIdMap[ComplexObject] = 100
@@protocols[101] = NormalObjectRegistration.new()
@@protocolIdMap[NormalObject] = 101
@@protocols[102] = ObjectARegistration.new()
@@protocolIdMap[ObjectA] = 102
@@protocols[103] = ObjectBRegistration.new()
@@protocolIdMap[ObjectB] = 103
@@protocols[104] = SimpleObjectRegistration.new()
@@protocolIdMap[SimpleObject] = 104
end
def self.getProtocol(protocolId)
return @@protocols[protocolId]
end
def self.write(buffer, packet)
protocolId = @@protocolIdMap[packet.class]
buffer.writeShort(protocolId)
protocol = @@protocols[protocolId]
protocol.write(buffer, packet)
end
def self.read(buffer)
protocolId = buffer.readShort()
protocol = @@protocols[protocolId]
packet = protocol.read(buffer)
return packet
end
end
@@ -0,0 +1,517 @@
# 复杂的对象,包括了各种复杂的结构,数组,List,Set,Map
class ComplexObject
# byte类型,最简单的整形
attr_accessor :a # byte
# byte的包装类型,优先使用基础类型,包装类型会有装箱拆箱
attr_accessor :aa # byte
# 数组类型
attr_accessor :aaa # byte[]
attr_accessor :aaaa # byte[]
attr_accessor :b # short
attr_accessor :bb # short
attr_accessor :bbb # short[]
attr_accessor :bbbb # short[]
attr_accessor :c # int
attr_accessor :cc # int
attr_accessor :ccc # int[]
attr_accessor :cccc # int[]
attr_accessor :d # long
attr_accessor :dd # long
attr_accessor :ddd # long[]
attr_accessor :dddd # long[]
attr_accessor :e # float
attr_accessor :ee # float
attr_accessor :eee # float[]
attr_accessor :eeee # float[]
attr_accessor :f # double
attr_accessor :ff # double
attr_accessor :fff # double[]
attr_accessor :ffff # double[]
attr_accessor :g # bool
attr_accessor :gg # bool
attr_accessor :ggg # bool[]
attr_accessor :gggg # bool[]
attr_accessor :jj # string
attr_accessor :jjj # string[]
attr_accessor :kk # ObjectA
attr_accessor :kkk # ObjectA[]
attr_accessor :l # List<int>
attr_accessor :ll # List<List<List<int>>>
attr_accessor :lll # List<List<ObjectA>>
attr_accessor :llll # List<string>
attr_accessor :lllll # List<Dictionary<int, string>>
attr_accessor :m # Dictionary<int, string>
attr_accessor :mm # Dictionary<int, ObjectA>
attr_accessor :mmm # Dictionary<ObjectA, List<int>>
attr_accessor :mmmm # Dictionary<List<List<ObjectA>>, List<List<List<int>>>>
attr_accessor :mmmmm # Dictionary<List<Dictionary<int, string>>, HashSet<Dictionary<int, string>>>
attr_accessor :s # HashSet<int>
attr_accessor :ss # HashSet<HashSet<List<int>>>
attr_accessor :sss # HashSet<HashSet<ObjectA>>
attr_accessor :ssss # HashSet<string>
attr_accessor :sssss # HashSet<Dictionary<int, string>>
# 如果要修改协议并且兼容老协议,需要加上Compatible注解,保持Compatible注解的value自增
attr_accessor :myCompatible # int
attr_accessor :myObject # ObjectA
def initialize()
@a = 0
@aa = 0
@aaa = Array.new()
@aaaa = Array.new()
@b = 0
@bb = 0
@bbb = Array.new()
@bbbb = Array.new()
@c = 0
@cc = 0
@ccc = Array.new()
@cccc = Array.new()
@d = 0
@dd = 0
@ddd = Array.new()
@dddd = Array.new()
@e = 0.0
@ee = 0.0
@eee = Array.new()
@eeee = Array.new()
@f = 0.0
@ff = 0.0
@fff = Array.new()
@ffff = Array.new()
@g = false
@gg = false
@ggg = Array.new()
@gggg = Array.new()
@jj = ""
@jjj = Array.new()
@kk = nil
@kkk = Array.new()
@l = Array.new()
@ll = Array.new()
@lll = Array.new()
@llll = Array.new()
@lllll = Array.new()
@m = Hash.new()
@mm = Hash.new()
@mmm = Hash.new()
@mmmm = Hash.new()
@mmmmm = Hash.new()
@s = Set.new()
@ss = Set.new()
@sss = Set.new()
@ssss = Set.new()
@sssss = Set.new()
@myCompatible = 0
@myObject = nil
end
end
class ComplexObjectRegistration
def protocolId()
return 100
end
def write(buffer, packet)
if packet.nil?
buffer.writeInt(0)
return
end
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.writeBoolArray(packet.ggg)
buffer.writeBoolArray(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.nil? || packet.ll.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.ll.length)
for element0 in packet.ll
if element0.nil? || element0.empty?
buffer.writeInt(0)
else
buffer.writeInt(element0.length)
for element1 in element0
buffer.writeIntArray(element1)
end
end
end
end
if packet.lll.nil? || packet.lll.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.lll.length)
for element2 in packet.lll
buffer.writePacketArray(element2, 102)
end
end
buffer.writeStringArray(packet.llll)
if packet.lllll.nil? || packet.lllll.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.lllll.length)
for element3 in packet.lllll
buffer.writeIntStringMap(element3)
end
end
buffer.writeIntStringMap(packet.m)
buffer.writeIntPacketMap(packet.mm, 102)
if packet.mmm.nil? || packet.mmm.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.mmm.length)
packet.mmm.each do |key4, value5|
buffer.writePacket(key4, 102)
buffer.writeIntArray(value5)
end
end
if packet.mmmm.nil? || packet.mmmm.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.mmmm.length)
packet.mmmm.each do |key6, value7|
if key6.nil? || key6.empty?
buffer.writeInt(0)
else
buffer.writeInt(key6.length)
for element8 in key6
buffer.writePacketArray(element8, 102)
end
end
if value7.nil? || value7.empty?
buffer.writeInt(0)
else
buffer.writeInt(value7.length)
for element9 in value7
if element9.nil? || element9.empty?
buffer.writeInt(0)
else
buffer.writeInt(element9.length)
for element10 in element9
buffer.writeIntArray(element10)
end
end
end
end
end
end
if packet.mmmmm.nil? || packet.mmmmm.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.mmmmm.length)
packet.mmmmm.each do |key11, value12|
if key11.nil? || key11.empty?
buffer.writeInt(0)
else
buffer.writeInt(key11.length)
for element13 in key11
buffer.writeIntStringMap(element13)
end
end
if value12.nil? || value12.empty?
buffer.writeInt(0)
else
buffer.writeInt(value12.length)
for element14 in value12
buffer.writeIntStringMap(element14)
end
end
end
end
buffer.writeIntSet(packet.s)
if packet.ss.nil? || packet.ss.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.ss.length)
for element15 in packet.ss
if element15.nil? || element15.empty?
buffer.writeInt(0)
else
buffer.writeInt(element15.length)
for element16 in element15
buffer.writeIntArray(element16)
end
end
end
end
if packet.sss.nil? || packet.sss.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.sss.length)
for element17 in packet.sss
buffer.writePacketSet(element17, 102)
end
end
buffer.writeStringSet(packet.ssss)
if packet.sssss.nil? || packet.sssss.empty?
buffer.writeInt(0)
else
buffer.writeInt(packet.sssss.length)
for element18 in packet.sssss
buffer.writeIntStringMap(element18)
end
end
buffer.writeInt(packet.myCompatible)
buffer.writePacket(packet.myObject, 102)
buffer.adjustPadding(36962, beforeWriteIndex)
end
def read(buffer)
length = buffer.readInt()
if length == 0
return nil
end
beforeReadIndex = buffer.getReadOffset()
packet = ComplexObject.new()
result0 = buffer.readByte()
packet.a = result0
result1 = buffer.readByte()
packet.aa = result1
array2 = buffer.readByteArray()
packet.aaa = array2
array3 = buffer.readByteArray()
packet.aaaa = array3
result4 = buffer.readShort()
packet.b = result4
result5 = buffer.readShort()
packet.bb = result5
array6 = buffer.readShortArray()
packet.bbb = array6
array7 = buffer.readShortArray()
packet.bbbb = array7
result8 = buffer.readInt()
packet.c = result8
result9 = buffer.readInt()
packet.cc = result9
array10 = buffer.readIntArray()
packet.ccc = array10
array11 = buffer.readIntArray()
packet.cccc = array11
result12 = buffer.readLong()
packet.d = result12
result13 = buffer.readLong()
packet.dd = result13
array14 = buffer.readLongArray()
packet.ddd = array14
array15 = buffer.readLongArray()
packet.dddd = array15
result16 = buffer.readFloat()
packet.e = result16
result17 = buffer.readFloat()
packet.ee = result17
array18 = buffer.readFloatArray()
packet.eee = array18
array19 = buffer.readFloatArray()
packet.eeee = array19
result20 = buffer.readDouble()
packet.f = result20
result21 = buffer.readDouble()
packet.ff = result21
array22 = buffer.readDoubleArray()
packet.fff = array22
array23 = buffer.readDoubleArray()
packet.ffff = array23
result24 = buffer.readBool()
packet.g = result24
result25 = buffer.readBool()
packet.gg = result25
array26 = buffer.readBoolArray()
packet.ggg = array26
array27 = buffer.readBoolArray()
packet.gggg = array27
result28 = buffer.readString()
packet.jj = result28
array29 = buffer.readStringArray()
packet.jjj = array29
result30 = buffer.readPacket(102)
packet.kk = result30
array31 = buffer.readPacketArray(102)
packet.kkk = array31
list32 = buffer.readIntArray()
packet.l = list32
result33 = Array.new()
size35 = buffer.readInt()
if size35 > 0
for index34 in 0..size35 - 1
result36 = Array.new()
size38 = buffer.readInt()
if size38 > 0
for index37 in 0..size38 - 1
list39 = buffer.readIntArray()
result36.push(list39)
end
end
result33.push(result36)
end
end
packet.ll = result33
result40 = Array.new()
size42 = buffer.readInt()
if size42 > 0
for index41 in 0..size42 - 1
list43 = buffer.readPacketArray(102)
result40.push(list43)
end
end
packet.lll = result40
list44 = buffer.readStringArray()
packet.llll = list44
result45 = Array.new()
size47 = buffer.readInt()
if size47 > 0
for index46 in 0..size47 - 1
map48 = buffer.readIntStringMap()
result45.push(map48)
end
end
packet.lllll = result45
map49 = buffer.readIntStringMap()
packet.m = map49
map50 = buffer.readIntPacketMap(102)
packet.mm = map50
result51 = Hash.new()
size52 = buffer.readInt()
if size52 > 0
for index53 in 0..size52 - 1
result54 = buffer.readPacket(102)
list55 = buffer.readIntArray()
result51[result54] = list55
end
end
packet.mmm = result51
result56 = Hash.new()
size57 = buffer.readInt()
if size57 > 0
for index58 in 0..size57 - 1
result59 = Array.new()
size61 = buffer.readInt()
if size61 > 0
for index60 in 0..size61 - 1
list62 = buffer.readPacketArray(102)
result59.push(list62)
end
end
result63 = Array.new()
size65 = buffer.readInt()
if size65 > 0
for index64 in 0..size65 - 1
result66 = Array.new()
size68 = buffer.readInt()
if size68 > 0
for index67 in 0..size68 - 1
list69 = buffer.readIntArray()
result66.push(list69)
end
end
result63.push(result66)
end
end
result56[result59] = result63
end
end
packet.mmmm = result56
result70 = Hash.new()
size71 = buffer.readInt()
if size71 > 0
for index72 in 0..size71 - 1
result73 = Array.new()
size75 = buffer.readInt()
if size75 > 0
for index74 in 0..size75 - 1
map76 = buffer.readIntStringMap()
result73.push(map76)
end
end
result77 = Set.new()
size79 = buffer.readInt()
if size79 > 0
for index78 in 0..size79 - 1
map80 = buffer.readIntStringMap()
result77.add(map80)
end
end
result70[result73] = result77
end
end
packet.mmmmm = result70
set81 = buffer.readIntSet()
packet.s = set81
result82 = Set.new()
size84 = buffer.readInt()
if size84 > 0
for index83 in 0..size84 - 1
result85 = Set.new()
size87 = buffer.readInt()
if size87 > 0
for index86 in 0..size87 - 1
list88 = buffer.readIntArray()
result85.add(list88)
end
end
result82.add(result85)
end
end
packet.ss = result82
result89 = Set.new()
size91 = buffer.readInt()
if size91 > 0
for index90 in 0..size91 - 1
set92 = buffer.readPacketSet(102)
result89.add(set92)
end
end
packet.sss = result89
set93 = buffer.readStringSet()
packet.ssss = set93
result94 = Set.new()
size96 = buffer.readInt()
if size96 > 0
for index95 in 0..size96 - 1
map97 = buffer.readIntStringMap()
result94.add(map97)
end
end
packet.sssss = result94
if buffer.compatibleRead(beforeReadIndex, length)
result98 = buffer.readInt()
packet.myCompatible = result98
end
if buffer.compatibleRead(beforeReadIndex, length)
result99 = buffer.readPacket(102)
packet.myObject = result99
end
if length > 0
buffer.setReadOffset(beforeReadIndex + length)
end
return packet
end
end
@@ -0,0 +1,35 @@
class EmptyObject
def initialize()
end
end
class EmptyObjectRegistration
def protocolId()
return 0
end
def write(buffer, packet)
if packet.nil?
buffer.writeInt(0)
return
end
buffer.writeInt(-1)
end
def read(buffer)
length = buffer.readInt()
if length == 0
return nil
end
beforeReadIndex = buffer.getReadOffset()
packet = EmptyObject.new()
if length > 0
buffer.setReadOffset(beforeReadIndex + length)
end
return packet
end
end
@@ -0,0 +1,139 @@
# 常规的对象,取所有语言语法的交集,基本上所有语言都支持下面的语法
class NormalObject
attr_accessor :a # byte
attr_accessor :aaa # byte[]
attr_accessor :b # short
# 整数类型
attr_accessor :c # int
attr_accessor :d # long
attr_accessor :e # float
attr_accessor :f # double
attr_accessor :g # bool
attr_accessor :jj # string
attr_accessor :kk # ObjectA
attr_accessor :l # List<int>
attr_accessor :ll # List<long>
attr_accessor :lll # List<ObjectA>
attr_accessor :llll # List<string>
attr_accessor :m # Dictionary<int, string>
attr_accessor :mm # Dictionary<int, ObjectA>
attr_accessor :s # HashSet<int>
attr_accessor :ssss # HashSet<string>
attr_accessor :outCompatibleValue # int
attr_accessor :outCompatibleValue2 # int
def initialize()
@a = 0
@aaa = Array.new()
@b = 0
@c = 0
@d = 0
@e = 0.0
@f = 0.0
@g = false
@jj = ""
@kk = nil
@l = Array.new()
@ll = Array.new()
@lll = Array.new()
@llll = Array.new()
@m = Hash.new()
@mm = Hash.new()
@s = Set.new()
@ssss = Set.new()
@outCompatibleValue = 0
@outCompatibleValue2 = 0
end
end
class NormalObjectRegistration
def protocolId()
return 101
end
def write(buffer, packet)
if packet.nil?
buffer.writeInt(0)
return
end
beforeWriteIndex = buffer.getWriteOffset()
buffer.writeInt(857)
buffer.writeByte(packet.a)
buffer.writeByteArray(packet.aaa)
buffer.writeShort(packet.b)
buffer.writeInt(packet.c)
buffer.writeLong(packet.d)
buffer.writeFloat(packet.e)
buffer.writeDouble(packet.f)
buffer.writeBool(packet.g)
buffer.writeString(packet.jj)
buffer.writePacket(packet.kk, 102)
buffer.writeIntArray(packet.l)
buffer.writeLongArray(packet.ll)
buffer.writePacketArray(packet.lll, 102)
buffer.writeStringArray(packet.llll)
buffer.writeIntStringMap(packet.m)
buffer.writeIntPacketMap(packet.mm, 102)
buffer.writeIntSet(packet.s)
buffer.writeStringSet(packet.ssss)
buffer.writeInt(packet.outCompatibleValue)
buffer.writeInt(packet.outCompatibleValue2)
buffer.adjustPadding(857, beforeWriteIndex)
end
def read(buffer)
length = buffer.readInt()
if length == 0
return nil
end
beforeReadIndex = buffer.getReadOffset()
packet = NormalObject.new()
result0 = buffer.readByte()
packet.a = result0
array1 = buffer.readByteArray()
packet.aaa = array1
result2 = buffer.readShort()
packet.b = result2
result3 = buffer.readInt()
packet.c = result3
result4 = buffer.readLong()
packet.d = result4
result5 = buffer.readFloat()
packet.e = result5
result6 = buffer.readDouble()
packet.f = result6
result7 = buffer.readBool()
packet.g = result7
result8 = buffer.readString()
packet.jj = result8
result9 = buffer.readPacket(102)
packet.kk = result9
list10 = buffer.readIntArray()
packet.l = list10
list11 = buffer.readLongArray()
packet.ll = list11
list12 = buffer.readPacketArray(102)
packet.lll = list12
list13 = buffer.readStringArray()
packet.llll = list13
map14 = buffer.readIntStringMap()
packet.m = map14
map15 = buffer.readIntPacketMap(102)
packet.mm = map15
set16 = buffer.readIntSet()
packet.s = set16
set17 = buffer.readStringSet()
packet.ssss = set17
if buffer.compatibleRead(beforeReadIndex, length)
result18 = buffer.readInt()
packet.outCompatibleValue = result18
end
if buffer.compatibleRead(beforeReadIndex, length)
result19 = buffer.readInt()
packet.outCompatibleValue2 = result19
end
if length > 0
buffer.setReadOffset(beforeReadIndex + length)
end
return packet
end
end
@@ -0,0 +1,56 @@
class ObjectA
attr_accessor :a # int
attr_accessor :m # Dictionary<int, string>
attr_accessor :objectB # ObjectB
attr_accessor :innerCompatibleValue # int
def initialize()
@a = 0
@m = Hash.new()
@objectB = nil
@innerCompatibleValue = 0
end
end
class ObjectARegistration
def protocolId()
return 102
end
def write(buffer, packet)
if packet.nil?
buffer.writeInt(0)
return
end
beforeWriteIndex = buffer.getWriteOffset()
buffer.writeInt(201)
buffer.writeInt(packet.a)
buffer.writeIntStringMap(packet.m)
buffer.writePacket(packet.objectB, 103)
buffer.writeInt(packet.innerCompatibleValue)
buffer.adjustPadding(201, beforeWriteIndex)
end
def read(buffer)
length = buffer.readInt()
if length == 0
return nil
end
beforeReadIndex = buffer.getReadOffset()
packet = ObjectA.new()
result0 = buffer.readInt()
packet.a = result0
map1 = buffer.readIntStringMap()
packet.m = map1
result2 = buffer.readPacket(103)
packet.objectB = result2
if buffer.compatibleRead(beforeReadIndex, length)
result3 = buffer.readInt()
packet.innerCompatibleValue = result3
end
if length > 0
buffer.setReadOffset(beforeReadIndex + length)
end
return packet
end
end
@@ -0,0 +1,46 @@
class ObjectB
attr_accessor :flag # bool
attr_accessor :innerCompatibleValue # int
def initialize()
@flag = false
@innerCompatibleValue = 0
end
end
class ObjectBRegistration
def protocolId()
return 103
end
def write(buffer, packet)
if packet.nil?
buffer.writeInt(0)
return
end
beforeWriteIndex = buffer.getWriteOffset()
buffer.writeInt(4)
buffer.writeBool(packet.flag)
buffer.writeInt(packet.innerCompatibleValue)
buffer.adjustPadding(4, beforeWriteIndex)
end
def read(buffer)
length = buffer.readInt()
if length == 0
return nil
end
beforeReadIndex = buffer.getReadOffset()
packet = ObjectB.new()
result0 = buffer.readBool()
packet.flag = result0
if buffer.compatibleRead(beforeReadIndex, length)
result1 = buffer.readInt()
packet.innerCompatibleValue = result1
end
if length > 0
buffer.setReadOffset(beforeReadIndex + length)
end
return packet
end
end
@@ -0,0 +1,42 @@
class SimpleObject
attr_accessor :c # int
attr_accessor :g # bool
def initialize()
@c = 0
@g = false
end
end
class SimpleObjectRegistration
def protocolId()
return 104
end
def write(buffer, packet)
if packet.nil?
buffer.writeInt(0)
return
end
buffer.writeInt(-1)
buffer.writeInt(packet.c)
buffer.writeBool(packet.g)
end
def read(buffer)
length = buffer.readInt()
if length == 0
return nil
end
beforeReadIndex = buffer.getReadOffset()
packet = SimpleObject.new()
result0 = buffer.readInt()
packet.c = result0
result1 = buffer.readBool()
packet.g = result1
if length > 0
buffer.setReadOffset(beforeReadIndex + length)
end
return packet
end
end
File diff suppressed because it is too large Load Diff