Files
Ananta-ps/Ananta.Proxy/proxy/lua/RPCDeserializeBase.lua
T

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