Initial commit: Ananta CBT 4229938 private server with all fixes
This commit is contained in:
commit
c84135c357
286 files changed
+2214315
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,189 @@
|
||||
-- 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
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,312 @@
|
||||
-- Original chunk: @Lua\LuaFiles\LX6\Service\RPCSerializeBase.lua
|
||||
-- Decompiled from: 00065_RPCSerializeBase.lua_87fc20cbb21f.luajit
|
||||
|
||||
local Serializer = uv0
|
||||
local SerializeObjectMarkNull = 0
|
||||
local SerializeObjectMarkCommon = 255
|
||||
|
||||
function Serializer.WritePrimitive(writer, val, nontrivial, default)
|
||||
if not val then
|
||||
nontrivial(writer, default)
|
||||
else
|
||||
nontrivial(writer, val)
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteStringWrap(nullable, name, limit)
|
||||
return function (writer, val)
|
||||
writer:WriteString(val, nullable, name, limit)
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteStruct(writer, val, nontrivial, name)
|
||||
if not val then
|
||||
print_error("[RPC] WriteStruct '" .. name .. "' = nil")
|
||||
nontrivial(writer, uv0)
|
||||
else
|
||||
nontrivial(writer, val)
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteStructWrap(nontrivial, name)
|
||||
return function (writer, val)
|
||||
Serializer.WriteStruct(writer, val, nontrivial, name)
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteBuffer(writer, val, name, nullable, limit, length)
|
||||
if not val then
|
||||
if nullable then
|
||||
writer:WriteByte(SerializeObjectMarkNull)
|
||||
else
|
||||
print_error("[RPC] WriteBuffer '" .. name .. "' = nil")
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
writer:WriteInt32(0)
|
||||
end
|
||||
|
||||
return
|
||||
else
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
writer:WriteBuffer(val, length or -1, limit)
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteBuffer7Bit(writer, val, name, nullable, limit, length)
|
||||
if not val then
|
||||
if nullable then
|
||||
writer:WriteByte(SerializeObjectMarkNull)
|
||||
else
|
||||
print_error("[RPC] WriteBuffer '" .. name .. "' = nil")
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
writer:Write7BitEncodedInt(0)
|
||||
end
|
||||
|
||||
return
|
||||
else
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
writer:WriteBuffer7Bit(val, length or -1, limit)
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteComplexWrap(nontrivial, name, nullable)
|
||||
return function (writer, val)
|
||||
Serializer.WriteComplex(writer, val, nontrivial, name, nullable)
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteComplex(writer, val, nontrivial, name, nullable)
|
||||
if not val then
|
||||
if nullable then
|
||||
writer:WriteByte(SerializeObjectMarkNull)
|
||||
else
|
||||
print_error("[RPC] WriteComplex '" .. name .. "' = nil")
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
nontrivial(writer, SerializeObjectMarkNull)
|
||||
end
|
||||
|
||||
return
|
||||
else
|
||||
if type(val) == "userdata" then
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
nontrivial(writer, val)
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
if not val._tp then
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
else
|
||||
writer:WriteByte(val._tp)
|
||||
end
|
||||
|
||||
nontrivial(writer, val)
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteList(writer, val, itemWriter, default, name, nullable, limit, length)
|
||||
if not val then
|
||||
if nullable then
|
||||
writer:WriteByte(SerializeObjectMarkNull)
|
||||
else
|
||||
print_error("[RPC] WriteList '" .. name .. "' = nil")
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
writer:WriteInt32(0)
|
||||
end
|
||||
|
||||
return
|
||||
else
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
end
|
||||
|
||||
local function counter(val)
|
||||
local count = 0
|
||||
|
||||
for n in pairs(val) do
|
||||
if count < n then
|
||||
count = n or count
|
||||
end
|
||||
end
|
||||
|
||||
return count
|
||||
end
|
||||
|
||||
local num = length or val.Count or counter(val)
|
||||
|
||||
if limit > 0 and limit < num then
|
||||
error("[RPC] WriteList '" .. name .. "' exceed count=" .. num .. " limit=" .. limit)
|
||||
end
|
||||
|
||||
writer:WriteInt32(num)
|
||||
|
||||
if val.get_Item then
|
||||
for i = 0, num - 1 do
|
||||
local item = val:get_Item(i)
|
||||
|
||||
if not item then
|
||||
itemWriter(writer, default)
|
||||
else
|
||||
itemWriter(writer, item)
|
||||
end
|
||||
end
|
||||
else
|
||||
for i = 1, num do
|
||||
local item = val[i]
|
||||
|
||||
if not item then
|
||||
itemWriter(writer, default)
|
||||
else
|
||||
itemWriter(writer, item)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteList7Bit(writer, val, itemWriter, default, name, nullable, limit, length)
|
||||
if not val then
|
||||
if nullable then
|
||||
writer:WriteByte(SerializeObjectMarkNull)
|
||||
else
|
||||
print_error("[RPC] WriteList '" .. name .. "' = nil")
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
writer:Write7BitEncodedInt(0)
|
||||
end
|
||||
|
||||
return
|
||||
else
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
end
|
||||
|
||||
local function counter(val)
|
||||
local count = 0
|
||||
|
||||
for n in pairs(val) do
|
||||
if count < n then
|
||||
count = n or count
|
||||
end
|
||||
end
|
||||
|
||||
return count
|
||||
end
|
||||
|
||||
local num = length or val.Count or counter(val)
|
||||
|
||||
if limit > 0 and limit < num then
|
||||
error("[RPC] WriteList '" .. name .. "' exceed count=" .. num .. " limit=" .. limit)
|
||||
end
|
||||
|
||||
writer:Write7BitEncodedInt(num)
|
||||
|
||||
if val.get_Item then
|
||||
for i = 0, num - 1 do
|
||||
local item = val:get_Item(i)
|
||||
|
||||
if not item then
|
||||
itemWriter(writer, default)
|
||||
else
|
||||
itemWriter(writer, item)
|
||||
end
|
||||
end
|
||||
else
|
||||
for i = 1, num do
|
||||
local item = val[i]
|
||||
|
||||
if not item then
|
||||
itemWriter(writer, default)
|
||||
else
|
||||
itemWriter(writer, item)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteDict(writer, val, keyWriter, itemWriter, default, name, nullable, limit)
|
||||
if not val then
|
||||
if nullable then
|
||||
writer:WriteByte(SerializeObjectMarkNull)
|
||||
else
|
||||
print_error("[RPC] WriteDict '" .. name .. "' = nil")
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
writer:WriteInt32(0)
|
||||
end
|
||||
|
||||
return
|
||||
else
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
end
|
||||
|
||||
local count = 0
|
||||
|
||||
for n in pairs(val) do
|
||||
count = count + 1
|
||||
end
|
||||
|
||||
if limit > 0 and limit < count then
|
||||
error("[RPC] WriteDict '" .. name .. "' exceed count=" .. count .. " limit=" .. limit)
|
||||
end
|
||||
|
||||
writer:WriteInt32(count)
|
||||
|
||||
for k, v in pairs(val) do
|
||||
keyWriter(writer, k)
|
||||
|
||||
if not v then
|
||||
itemWriter(writer, default)
|
||||
else
|
||||
itemWriter(writer, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.WriteDict7Bit(writer, val, keyWriter, itemWriter, default, name, nullable, limit)
|
||||
if not val then
|
||||
if nullable then
|
||||
writer:WriteByte(SerializeObjectMarkNull)
|
||||
else
|
||||
print_error("[RPC] WriteDict '" .. name .. "' = nil")
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
writer:Write7BitEncodedInt(0)
|
||||
end
|
||||
|
||||
return
|
||||
else
|
||||
writer:WriteByte(SerializeObjectMarkCommon)
|
||||
end
|
||||
|
||||
local count = 0
|
||||
|
||||
for n in pairs(val) do
|
||||
count = count + 1
|
||||
end
|
||||
|
||||
if limit > 0 and limit < count then
|
||||
error("[RPC] WriteDict '" .. name .. "' exceed count=" .. count .. " limit=" .. limit)
|
||||
end
|
||||
|
||||
writer:Write7BitEncodedInt(count)
|
||||
|
||||
for k, v in pairs(val) do
|
||||
keyWriter(writer, k)
|
||||
|
||||
if not v then
|
||||
itemWriter(writer, default)
|
||||
else
|
||||
itemWriter(writer, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Serializer.CheckEnum(value, typeName, defaultVal)
|
||||
local enumDef = EnumCheck[typeName]
|
||||
|
||||
for _, v in pairs(enumDef) do
|
||||
if v == value then
|
||||
return value
|
||||
end
|
||||
end
|
||||
|
||||
print_error("[RPC] enum out of range " .. enumDef .. "=" .. value)
|
||||
|
||||
return defaultVal
|
||||
end
|
||||
|
||||
return Serializer
|
||||
Reference in new issue
Block a user