added lazy deletion for requests, bug fix for processes

This commit is contained in:
Luke Miller 2021-04-26 16:35:42 -04:00
parent 201fb98229
commit 37c7f337a7

View File

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