diff --git a/protocol/src/test/lua/main.lua b/protocol/src/test/lua/main.lua index 10361583..de6751ed 100644 --- a/protocol/src/test/lua/main.lua +++ b/protocol/src/test/lua/main.lua @@ -52,10 +52,10 @@ end function byteBufferTest() local byteBuffer = ByteBuffer:new() - byteBuffer:writeBoolean(true) - byteBuffer:writeBoolean(false) - assert(byteBuffer:readBoolean() == true) - assert(byteBuffer:readBoolean() == false) + byteBuffer:writeBool(true) + byteBuffer:writeBool(false) + assert(byteBuffer:readBool() == true) + assert(byteBuffer:readBool() == false) byteBuffer:setWriteOffset(1) byteBuffer:setReadOffset(1) diff --git a/protocol/src/test/lua/zfoolua/ByteBuffer.lua b/protocol/src/test/lua/zfoolua/ByteBuffer.lua index b984bf9b..bafb7c1d 100644 --- a/protocol/src/test/lua/zfoolua/ByteBuffer.lua +++ b/protocol/src/test/lua/zfoolua/ByteBuffer.lua @@ -14,8 +14,8 @@ local zeroByte = string.char(0) local ByteBuffer = {} -local trueBooleanStrValue = string.char(1) -local falseBooleanStrValue = string.char(0) +local trueBoolStrValue = string.char(1) +local falseBoolStrValue = string.char(0) function serializeTableToJson(tbl) local res = {} @@ -127,6 +127,10 @@ function ByteBuffer:compatibleRead(beforeReadIndex, length) end -------------------------------------get和set------------------------------------- +function ByteBuffer:getBuffer() + return self.buffer +end + function ByteBuffer:getWriteOffset() return self.writeOffset end @@ -166,19 +170,19 @@ end -------------------------------------write和read------------------------------------- --bool -function ByteBuffer:writeBoolean(boolValue) +function ByteBuffer:writeBool(boolValue) if boolValue then - self:writeRawByteStr(trueBooleanStrValue) + self:writeRawByteStr(trueBoolStrValue) else - self:writeRawByteStr(falseBooleanStrValue) + self:writeRawByteStr(falseBoolStrValue) end return self end -function ByteBuffer:readBoolean() +function ByteBuffer:readBool() -- When char > 256, the readUByte method will show an error. -- So, we have to use readChar - return self:readRawByteStr() == trueBooleanStrValue + return self:readRawByteStr() == trueBoolStrValue end @@ -527,24 +531,24 @@ function ByteBuffer:readPacket(protocolId) return protocolRegistration:read(self) end -function ByteBuffer:writeBooleanArray(array) +function ByteBuffer:writeBoolArray(array) if array == nil then self:writeInt(0) else self:writeInt(#array) for index, element in pairs(array) do - self:writeBoolean(element) + self:writeBool(element) end end return self end -function ByteBuffer:readBooleanArray() +function ByteBuffer:readBoolArray() local array = {} local size = self:readInt() if size > 0 then for index = 1, size do - table.insert(array, self:readBoolean()) + table.insert(array, self:readBool()) end end return array diff --git a/protocol/src/test/lua/zfoolua/packet/ComplexObject.lua b/protocol/src/test/lua/zfoolua/packet/ComplexObject.lua index 5aff706d..7f3fe646 100644 --- a/protocol/src/test/lua/zfoolua/packet/ComplexObject.lua +++ b/protocol/src/test/lua/zfoolua/packet/ComplexObject.lua @@ -105,10 +105,10 @@ function ComplexObject:write(buffer, packet) buffer:writeDouble(packet.ff) buffer:writeDoubleArray(packet.fff) buffer:writeDoubleArray(packet.ffff) - buffer:writeBoolean(packet.g) - buffer:writeBoolean(packet.gg) - buffer:writeBooleanArray(packet.ggg) - buffer:writeBooleanArray(packet.gggg) + 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) @@ -303,13 +303,13 @@ function ComplexObject:read(buffer) packet.fff = array22 local array23 = buffer:readDoubleArray() packet.ffff = array23 - local result24 = buffer:readBoolean() + local result24 = buffer:readBool() packet.g = result24 - local result25 = buffer:readBoolean() + local result25 = buffer:readBool() packet.gg = result25 - local array26 = buffer:readBooleanArray() + local array26 = buffer:readBoolArray() packet.ggg = array26 - local array27 = buffer:readBooleanArray() + local array27 = buffer:readBoolArray() packet.gggg = array27 local result28 = buffer:readString() packet.jj = result28 diff --git a/protocol/src/test/lua/zfoolua/packet/NormalObject.lua b/protocol/src/test/lua/zfoolua/packet/NormalObject.lua index 943d43b0..41a86161 100644 --- a/protocol/src/test/lua/zfoolua/packet/NormalObject.lua +++ b/protocol/src/test/lua/zfoolua/packet/NormalObject.lua @@ -1,4 +1,4 @@ - +-- 常规的对象,取所有语言语法的交集,基本上所有语言都支持下面的语法 local NormalObject = {} function NormalObject:new() @@ -6,6 +6,7 @@ function NormalObject:new() a = 0, -- byte aaa = {}, -- byte[] b = 0, -- short + -- 整数类型 c = 0, -- int d = 0, -- long e = 0, -- float @@ -20,7 +21,9 @@ function NormalObject:new() m = {}, -- Dictionary mm = {}, -- Dictionary s = {}, -- HashSet - ssss = {} -- HashSet + ssss = {}, -- HashSet + outCompatibleValue = 0, -- int + outCompatibleValue2 = 0 -- int } setmetatable(obj, self) self.__index = self @@ -44,7 +47,8 @@ function NormalObject:write(buffer, packet) buffer:writeInt(0) return end - buffer:writeInt(-1) + local beforeWriteIndex = buffer:getWriteOffset() + buffer:writeInt(857) buffer:writeByte(packet.a) buffer:writeByteArray(packet.aaa) buffer:writeShort(packet.b) @@ -52,7 +56,7 @@ function NormalObject:write(buffer, packet) buffer:writeLong(packet.d) buffer:writeFloat(packet.e) buffer:writeDouble(packet.f) - buffer:writeBoolean(packet.g) + buffer:writeBool(packet.g) buffer:writeString(packet.jj) buffer:writePacket(packet.kk, 102) buffer:writeIntArray(packet.l) @@ -63,6 +67,9 @@ function NormalObject:write(buffer, packet) buffer:writeIntPacketMap(packet.mm, 102) buffer:writeIntArray(packet.s) buffer:writeStringArray(packet.ssss) + buffer:writeInt(packet.outCompatibleValue) + buffer:writeInt(packet.outCompatibleValue2) + buffer:adjustPadding(857, beforeWriteIndex) end function NormalObject:read(buffer) @@ -86,7 +93,7 @@ function NormalObject:read(buffer) packet.e = result5 local result6 = buffer:readDouble() packet.f = result6 - local result7 = buffer:readBoolean() + local result7 = buffer:readBool() packet.g = result7 local result8 = buffer:readString() packet.jj = result8 @@ -108,6 +115,14 @@ function NormalObject:read(buffer) packet.s = set16 local set17 = buffer:readStringArray() packet.ssss = set17 + if buffer:compatibleRead(beforeReadIndex, length) then + local result18 = buffer:readInt() + packet.outCompatibleValue = result18 + end + if buffer:compatibleRead(beforeReadIndex, length) then + local result19 = buffer:readInt() + packet.outCompatibleValue2 = result19 + end if length > 0 then buffer:setReadOffset(beforeReadIndex + length) end diff --git a/protocol/src/test/lua/zfoolua/packet/ObjectA.lua b/protocol/src/test/lua/zfoolua/packet/ObjectA.lua index 122717f1..404d7920 100644 --- a/protocol/src/test/lua/zfoolua/packet/ObjectA.lua +++ b/protocol/src/test/lua/zfoolua/packet/ObjectA.lua @@ -5,7 +5,8 @@ function ObjectA:new() local obj = { a = 0, -- int m = {}, -- Dictionary - objectB = nil -- ObjectB + objectB = nil, -- ObjectB + innerCompatibleValue = 0 -- int } setmetatable(obj, self) self.__index = self @@ -29,10 +30,13 @@ function ObjectA:write(buffer, packet) buffer:writeInt(0) return end - buffer:writeInt(-1) + local 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 function ObjectA:read(buffer) @@ -48,6 +52,10 @@ function ObjectA:read(buffer) packet.m = map1 local result2 = buffer:readPacket(103) packet.objectB = result2 + if buffer:compatibleRead(beforeReadIndex, length) then + local result3 = buffer:readInt() + packet.innerCompatibleValue = result3 + end if length > 0 then buffer:setReadOffset(beforeReadIndex + length) end diff --git a/protocol/src/test/lua/zfoolua/packet/ObjectB.lua b/protocol/src/test/lua/zfoolua/packet/ObjectB.lua index 9c0691d7..8a8a35bd 100644 --- a/protocol/src/test/lua/zfoolua/packet/ObjectB.lua +++ b/protocol/src/test/lua/zfoolua/packet/ObjectB.lua @@ -3,7 +3,8 @@ local ObjectB = {} function ObjectB:new() local obj = { - flag = false -- bool + flag = false, -- bool + innerCompatibleValue = 0 -- int } setmetatable(obj, self) self.__index = self @@ -27,8 +28,11 @@ function ObjectB:write(buffer, packet) buffer:writeInt(0) return end - buffer:writeInt(-1) - buffer:writeBoolean(packet.flag) + local beforeWriteIndex = buffer:getWriteOffset() + buffer:writeInt(4) + buffer:writeBool(packet.flag) + buffer:writeInt(packet.innerCompatibleValue) + buffer:adjustPadding(4, beforeWriteIndex) end function ObjectB:read(buffer) @@ -38,8 +42,12 @@ function ObjectB:read(buffer) end local beforeReadIndex = buffer:getReadOffset() local packet = ObjectB:new() - local result0 = buffer:readBoolean() + local result0 = buffer:readBool() packet.flag = result0 + if buffer:compatibleRead(beforeReadIndex, length) then + local result1 = buffer:readInt() + packet.innerCompatibleValue = result1 + end if length > 0 then buffer:setReadOffset(beforeReadIndex + length) end diff --git a/protocol/src/test/lua/zfoolua/packet/SimpleObject.lua b/protocol/src/test/lua/zfoolua/packet/SimpleObject.lua index b2b446c0..7316f20e 100644 --- a/protocol/src/test/lua/zfoolua/packet/SimpleObject.lua +++ b/protocol/src/test/lua/zfoolua/packet/SimpleObject.lua @@ -30,7 +30,7 @@ function SimpleObject:write(buffer, packet) end buffer:writeInt(-1) buffer:writeInt(packet.c) - buffer:writeBoolean(packet.g) + buffer:writeBool(packet.g) end function SimpleObject:read(buffer) @@ -42,7 +42,7 @@ function SimpleObject:read(buffer) local packet = SimpleObject:new() local result0 = buffer:readInt() packet.c = result0 - local result1 = buffer:readBoolean() + local result1 = buffer:readBool() packet.g = result1 if length > 0 then buffer:setReadOffset(beforeReadIndex + length)