aboutsummaryrefslogtreecommitdiffstats
path: root/util/smqueue.lua
diff options
context:
space:
mode:
Diffstat (limited to 'util/smqueue.lua')
-rw-r--r--util/smqueue.lua13
1 files changed, 4 insertions, 9 deletions
diff --git a/util/smqueue.lua b/util/smqueue.lua
index d24c35ae..6d8348d4 100644
--- a/util/smqueue.lua
+++ b/util/smqueue.lua
@@ -38,17 +38,12 @@ function smqueue:resume() return self._queue:items() end
function smqueue:consume() return self._queue:consume() end
-local compat_mt = {}
-
-function compat_mt:__index(i)
- if i < self._queue._tail then return nil end
- return self._queue._queue._items[(i + self._queue._tail) % self._queue._queue.size]
+function smqueue:table()
+ local t = {};
+ for i, v in self:resume() do t[i] = v; end
+ return t
end
-function compat_mt:__len() return self._queue:count_unacked() end
-
-function smqueue:table() return setmetatable({ _queue = self }, compat_mt) end
-
local function freeze(q) return { head = q._head; tail = q._tail } end
local queue_mt = { __name = "smqueue"; __index = smqueue; __len = smqueue.count_unacked; __freeze = freeze }