aboutsummaryrefslogtreecommitdiffstats
path: root/util/queue.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2015-11-09 22:56:32 +0100
committerKim Alvefur <zash@zash.se>2015-11-09 22:56:32 +0100
commitdd417c0f4a850be9280c2589f0a582aa0d7d566d (patch)
tree3e6fc617741dec52b661ba121b7949d6b284399d /util/queue.lua
parent1407c9f7a72c9e27efb9983554e7579d157aecc6 (diff)
parent5d077a0c17dbe89c2481cdebd18f4051dd2d10ae (diff)
downloadprosody-dd417c0f4a850be9280c2589f0a582aa0d7d566d.tar.gz
prosody-dd417c0f4a850be9280c2589f0a582aa0d7d566d.zip
Merge 0.10->trunk
Diffstat (limited to 'util/queue.lua')
-rw-r--r--util/queue.lua16
1 files changed, 15 insertions, 1 deletions
diff --git a/util/queue.lua b/util/queue.lua
index 203da0e3..728e905f 100644
--- a/util/queue.lua
+++ b/util/queue.lua
@@ -16,8 +16,9 @@ local function new(size, allow_wrapping)
local head, tail = 1, 1;
local items = 0; -- Number of stored items
local t = have_utable and utable.create(size, 0) or {}; -- Table to hold items
-
+ --luacheck: ignore 212/self
return {
+ _items = t;
size = size;
count = function (self) return items; end;
push = function (self, item)
@@ -50,6 +51,19 @@ local function new(size, allow_wrapping)
end
return t[tail];
end;
+ items = function (self)
+ --luacheck: ignore 431/t
+ return function (t, pos)
+ if pos >= t:count() then
+ return nil;
+ end
+ local read_pos = tail + pos;
+ if read_pos > t.size then
+ read_pos = (read_pos%size);
+ end
+ return pos+1, t._items[read_pos];
+ end, self, 0;
+ end;
};
end