diff --git a/modpol/orgs/orgs.lua b/modpol/orgs/orgs.lua index fb0170d..e320981 100644 --- a/modpol/orgs/orgs.lua +++ b/modpol/orgs/orgs.lua @@ -14,7 +14,6 @@ function temp_org() policies = {}, processes = {}, requests = {}, - request_count = 0, members = {}, parent = nil, children = {} @@ -288,7 +287,7 @@ end -- ================================ --- +-- creates a new process linked to a request id function modpol.orgs:create_process(request_id) local new_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 if empty_index then - self.processes[index] = new_process + self.processes[empty_index] = new_process else table.insert(self.processes, new_process) end @@ -369,4 +368,23 @@ function modpol.orgs:make_request(request) self.requests[self.request_count] = request 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 \ No newline at end of file