Files
opus-apps/milo/apis/taskRunner.lua
kepler155c@gmail.com 426c856dfb refactor parallel code
2019-04-05 17:32:22 -04:00

36 lines
598 B
Lua

local class = require('class')
local parallel = _G.parallel
local TaskRunner = class()
function TaskRunner:init(args)
self.tasks = { }
self.errorMsg = 'Task failed: '
for k,v in pairs(args or { }) do
self[k] = v
end
end
function TaskRunner:add(fn)
table.insert(self.tasks, function()
local s, m = pcall(fn)
if not s and m then
self:onError(m)
end
end)
end
function TaskRunner:run()
if #self.tasks > 0 then
parallel.waitForAll(table.unpack(self.tasks))
end
end
function TaskRunner:onError(msg)
_G._debug(msg.errorMsg .. msg)
end
return TaskRunner