summaryrefslogtreecommitdiff
path: root/script/task.lua
diff options
context:
space:
mode:
Diffstat (limited to 'script/task.lua')
-rw-r--r--script/task.lua64
1 files changed, 0 insertions, 64 deletions
diff --git a/script/task.lua b/script/task.lua
deleted file mode 100644
index bb1a7922..00000000
--- a/script/task.lua
+++ /dev/null
@@ -1,64 +0,0 @@
-local mt = {}
-mt.__index = mt
-mt.type = 'task'
-
-function mt:remove()
- if self._removed then
- return
- end
- self._removed = true
- coroutine.close(self.task)
-end
-
-function mt:isRemoved()
- return self._removed
-end
-
-function mt:step()
- if self._removed then
- return
- end
- local suc, res = coroutine.resume(self.task)
- if not suc then
- self:remove()
- log.error(debug.traceback(self.task, res))
- return
- end
- if coroutine.status(self.task) == 'dead' then
- self:remove()
- end
- return res
-end
-
-function mt:fastForward()
- if self._removed then
- return
- end
- while true do
- local suc = coroutine.resume(self.task)
- if not suc then
- self:remove()
- break
- end
- if coroutine.status(self.task) == 'dead' then
- self:remove()
- break
- end
- end
-end
-
-function mt:set(key, value)
- self.data[key] = value
-end
-
-function mt:get(key)
- return self.data[key]
-end
-
-return function (callback)
- local self = setmetatable({
- data = {},
- task = coroutine.create(callback),
- }, mt)
- return self
-end