mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-08-23 18:25:50 +00:00
test[lua]: lua protocol test
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<int, string>
|
||||
mm = {}, -- Dictionary<int, ObjectA>
|
||||
s = {}, -- HashSet<int>
|
||||
ssss = {} -- HashSet<string>
|
||||
ssss = {}, -- HashSet<string>
|
||||
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
|
||||
|
||||
@@ -5,7 +5,8 @@ function ObjectA:new()
|
||||
local obj = {
|
||||
a = 0, -- int
|
||||
m = {}, -- Dictionary<int, string>
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user