44 lines
1.2 KiB
Plaintext
44 lines
1.2 KiB
Plaintext
ProtobufPool = {}
|
|
local ArrayPopBack = TableUtility.ArrayPopBack
|
|
local ArrayPushBack = TableUtility.ArrayPushBack
|
|
local pool = {}
|
|
local poolNum = 100
|
|
|
|
function ProtobufPool.Get(pb_class)
|
|
local dataPool = pool[pb_class]
|
|
if(dataPool~=nil) then
|
|
local data = ArrayPopBack(dataPool)
|
|
if(data~=nil) then
|
|
-- LogUtility.InfoFormat("ProtobufPool.Get {0}",tostring(pb_class.name))
|
|
return data
|
|
end
|
|
end
|
|
-- LogUtility.InfoFormat("ProtobufPool.Get create {0}",tostring(pb_class.name))
|
|
return pb_class()
|
|
end
|
|
|
|
function ProtobufPool.GetArray(arrayIndex)
|
|
local dataPool = pool[arrayIndex]
|
|
if(dataPool~=nil) then
|
|
local data = ArrayPopBack(dataPool)
|
|
if(data~=nil) then
|
|
return data
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
function ProtobufPool.Add(pb_class,data,num)
|
|
num = num or poolNum
|
|
-- LogUtility.InfoFormat("ProtobufPool.Add {0}",tostring(pb_class.name))
|
|
local dataPool = pool[pb_class]
|
|
if(dataPool==nil)then
|
|
dataPool = {}
|
|
pool[pb_class] = dataPool
|
|
else
|
|
if(#dataPool>=num) then
|
|
return
|
|
end
|
|
end
|
|
ArrayPushBack(dataPool,data)
|
|
end |