190 lines
3.8 KiB
Lua
190 lines
3.8 KiB
Lua
-- Original chunk: @Lua\LuaFiles\LX6\Service\RPCDeserializeBase.lua
|
|
-- Decompiled from: 02186_RPCDeserializeBase.lua_49bd54ceeac5.luajit
|
|
|
|
local MidToName = require("LuaGen/AutoGen/RPCMethodIdToName")
|
|
local LogUtils = LX6.Utils.LogUtilsLua
|
|
local Serializer = uv0
|
|
local SerializeObjectMarkNull = 0
|
|
|
|
function Serializer.Dispatcher(ctx, br, mid)
|
|
local reader = ctx.midToReader[mid]
|
|
|
|
if not reader then
|
|
return false
|
|
end
|
|
|
|
local handler = ctx.sidToImpl[math.floor(mid / 1000000)][ctx.midToName[mid]]
|
|
|
|
if handler then
|
|
local autoQaFunctions = L50.Gm.AutoQaFunctions
|
|
|
|
if autoQaFunctions and (autoQaFunctions.IsRpcPrinting or autoQaFunctions.IsProtocolRpcTest or autoQaFunctions.IsRPCCollect) then
|
|
local args = uv3
|
|
args[MULTRES] = reader(br)
|
|
|
|
if autoQaFunctions.IsRPCCollect then
|
|
autoQaFunctions.SendRpcName(MidToName[mid], 1)
|
|
end
|
|
|
|
if autoQaFunctions.IsRpcPrinting and LX6.Engine.DebugRpcMgr.FilterRpc(MidToName[mid]) then
|
|
local serviceName = UX.RPC.LuaRpcProcessor.GetMethodServiceName(mid)
|
|
|
|
print_warn(gString.Format("[Lua rpc: %s->c] [%s] ", serviceName, MidToName[mid]), args)
|
|
LogUtils.RecordRPC(gString.Format("[s->c] [%s].[%s] %s", serviceName, MidToName[mid], args))
|
|
end
|
|
|
|
if autoQaFunctions.IsProtocolRpcTest then
|
|
local tmpArgs = MidToName
|
|
|
|
for i = 1, #args do
|
|
local v = args[i]
|
|
|
|
if v == nil then
|
|
tmpArgs[i] = "nil"
|
|
elseif type(v) == "table" then
|
|
tmpArgs[i] = table.tostring(v, false)
|
|
else
|
|
tmpArgs[i] = args[i]
|
|
end
|
|
end
|
|
|
|
autoQaFunctions.OnSendProtocolLuaRPC(false, MidToName[mid], tmpArgs)
|
|
end
|
|
|
|
handler(unpack(args, 1, table.maxn(args)))
|
|
|
|
return true
|
|
end
|
|
|
|
handler(reader(br))
|
|
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
function Serializer.ReturnMessageDeserializer(ctx, br, mid)
|
|
local reader = ctx.midToReturnMessageReader[mid]
|
|
|
|
if not reader then
|
|
return
|
|
end
|
|
|
|
slot4 = uv3
|
|
slot4[MULTRES] = reader(br)
|
|
|
|
return slot4
|
|
end
|
|
|
|
function Serializer.ReadBuffer(reader)
|
|
if reader:ReadByte() ~= SerializeObjectMarkNull then
|
|
return reader:ReadBuffer()
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
function Serializer.ReadBuffer7Bit(reader)
|
|
if reader:ReadByte() ~= SerializeObjectMarkNull then
|
|
return reader:ReadBuffer7Bit()
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
function Serializer.ReadComplex(reader, nontrivial)
|
|
local obj = SerializeObjectMarkNull
|
|
local byte = reader:ReadByte()
|
|
|
|
if byte ~= SerializeObjectMarkNull then
|
|
nontrivial(reader, obj)
|
|
else
|
|
return nil
|
|
end
|
|
|
|
return obj
|
|
end
|
|
|
|
function Serializer.ReadStruct(reader, nontrivial)
|
|
local obj = uv0
|
|
|
|
nontrivial(reader, obj)
|
|
|
|
return obj
|
|
end
|
|
|
|
function Serializer.ReadList(reader, itemReader)
|
|
local byte = reader:ReadByte()
|
|
|
|
if byte == SerializeObjectMarkNull then
|
|
return nil
|
|
end
|
|
|
|
local size = reader:ReadInt32()
|
|
local list = {
|
|
Count = size,
|
|
Length = size
|
|
}
|
|
|
|
for i = 1, size do
|
|
list[i] = itemReader(reader)
|
|
end
|
|
|
|
return list
|
|
end
|
|
|
|
function Serializer.ReadList7Bit(reader, itemReader)
|
|
local byte = reader:ReadByte()
|
|
|
|
if byte == SerializeObjectMarkNull then
|
|
return nil
|
|
end
|
|
|
|
local size = reader:ReadInt7Bit()
|
|
local list = {
|
|
Count = size,
|
|
Length = size
|
|
}
|
|
|
|
for i = 1, size do
|
|
list[i] = itemReader(reader)
|
|
end
|
|
|
|
return list
|
|
end
|
|
|
|
function Serializer.ReadDict(reader, keyReader, itemReader)
|
|
if reader:ReadByte() == SerializeObjectMarkNull then
|
|
return nil
|
|
end
|
|
|
|
local size = reader:ReadInt32()
|
|
local dict = SerializeObjectMarkNull
|
|
|
|
for i = 1, size do
|
|
local key = keyReader(reader)
|
|
dict[key] = itemReader(reader)
|
|
end
|
|
|
|
return dict
|
|
end
|
|
|
|
function Serializer.ReadDict7Bit(reader, keyReader, itemReader)
|
|
if reader:ReadByte() == SerializeObjectMarkNull then
|
|
return nil
|
|
end
|
|
|
|
local size = reader:ReadInt7Bit()
|
|
local dict = SerializeObjectMarkNull
|
|
|
|
for i = 1, size do
|
|
local key = keyReader(reader)
|
|
dict[key] = itemReader(reader)
|
|
end
|
|
|
|
return dict
|
|
end
|
|
|
|
return Serializer
|