added lazy deletion for requests, bug fix for processes
This commit is contained in:
parent
201fb98229
commit
37c7f337a7
@ -14,7 +14,6 @@ function temp_org()
|
|||||||
policies = {},
|
policies = {},
|
||||||
processes = {},
|
processes = {},
|
||||||
requests = {},
|
requests = {},
|
||||||
request_count = 0,
|
|
||||||
members = {},
|
members = {},
|
||||||
parent = nil,
|
parent = nil,
|
||||||
children = {}
|
children = {}
|
||||||
@ -288,7 +287,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-- ================================
|
-- ================================
|
||||||
--
|
-- creates a new process linked to a request id
|
||||||
function modpol.orgs:create_process(request_id)
|
function modpol.orgs:create_process(request_id)
|
||||||
local new_process = {
|
local new_process = {
|
||||||
object = "I am a process",
|
object = "I am a process",
|
||||||
@ -305,7 +304,7 @@ function modpol.orgs:create_process(request_id)
|
|||||||
|
|
||||||
-- attempts to fill empty spots in list, otherwise appends to end
|
-- attempts to fill empty spots in list, otherwise appends to end
|
||||||
if empty_index then
|
if empty_index then
|
||||||
self.processes[index] = new_process
|
self.processes[empty_index] = new_process
|
||||||
else
|
else
|
||||||
table.insert(self.processes, new_process)
|
table.insert(self.processes, new_process)
|
||||||
end
|
end
|
||||||
@ -369,4 +368,23 @@ function modpol.orgs:make_request(request)
|
|||||||
self.requests[self.request_count] = request
|
self.requests[self.request_count] = request
|
||||||
return self.request_count
|
return self.request_count
|
||||||
|
|
||||||
|
-- linear search for empty process slots (lazy deletion)
|
||||||
|
for k, v in ipairs(self.requests) do
|
||||||
|
if v == 'deleted' then
|
||||||
|
local empty_index = k
|
||||||
|
break
|
||||||
|
do
|
||||||
|
end
|
||||||
|
|
||||||
|
-- attempts to fill empty spots in list, otherwise appends to end
|
||||||
|
if empty_index then
|
||||||
|
self.requests[empty_index] = request
|
||||||
|
return empty_index
|
||||||
|
else
|
||||||
|
table.insert(self.requests, request)
|
||||||
|
-- finds end of list to return current request's id
|
||||||
|
local count = 0
|
||||||
|
for k, v in ipairs(t) do count = count + 1 end
|
||||||
|
return count
|
||||||
|
end
|
||||||
end
|
end
|
Loading…
x
Reference in New Issue
Block a user