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
@@ -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