diff options
author | Kim Alvefur <zash@zash.se> | 2015-11-09 22:56:32 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2015-11-09 22:56:32 +0100 |
commit | 094164e5f0bf835e4fd1dcefa57f3bb4add8325d (patch) | |
tree | 3e6fc617741dec52b661ba121b7949d6b284399d /util | |
parent | 1173ee03d3daede409447b6eb049c1ca06145f50 (diff) | |
parent | 57fe905a8c3eeffb507a0967512a4caccb0e882b (diff) | |
download | prosody-094164e5f0bf835e4fd1dcefa57f3bb4add8325d.tar.gz prosody-094164e5f0bf835e4fd1dcefa57f3bb4add8325d.zip |
Merge 0.10->trunk
Diffstat (limited to 'util')
-rw-r--r-- | util/queue.lua | 16 |
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 |