diff options
Diffstat (limited to 'nopsyncd/qlistener.lua')
-rwxr-xr-x | nopsyncd/qlistener.lua | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/nopsyncd/qlistener.lua b/nopsyncd/qlistener.lua index b7c74d8..e5cd4ab 100755 --- a/nopsyncd/qlistener.lua +++ b/nopsyncd/qlistener.lua @@ -25,6 +25,28 @@ mq = require "luamq" tempstorage = require "tempstorage" rddb = require "rddb" +function handle_now(timestamp, nowcart, nowlen) + local results, err = rddb:getCartInfo(nowcart); + if results == nil then + io.stderr:write("can't fetch cart info: " .. err .. "\n") + else + -- TODO: insert into tempstorage + print(timestamp .. " Info: '" .. results.TITLE .. "' von '" .. results.ARTIST .. "' aus '" .. results.ALBUM .. "'") + pipe.signal() + end +end + +function handle_message(msg) + local timestamp, nowcart, nowlen, nextcart, nextlen = string.match(msg, "^(%d+) (%d+) (%d+) (%d+) (%d+)$"); + if not timestamp or not nowcart or not nowlen or not nextcart or not nextlen then + io.stderr:write("ignoring malformed message\n") + else + -- TODO sanity checks: is now info new or just next? + handle_now(timestamp, nowcart, nowlen) + -- TODO handle next info + end +end + function main_loop() local q, err = mq.create(queue_name, "ro") if q == nil then @@ -53,19 +75,6 @@ function main_loop() tempstorage:close() os.exit(2) end - - local timestamp, nowcart, nowlen, nextcart, nextlen = string.match(msg, "^(%d+) (%d+) (%d+) (%d+) (%d+)$"); - if not timestamp or not nowcart or not nowlen or not nextcart or not nextlen then - io.stderr:write("ignoring malformed message\n") - else - local results, err = rddb:getCartInfo(nowcart); - if results == nil then - io.stderr:write("can't fetch cart info: " .. err .. "\n") - else - -- TODO: insert into tempstorage - print(timestamp .. " Info: '" .. results.TITLE .. "' von '" .. results.ARTIST .. "' aus '" .. results.ALBUM .. "'") - pipe.signal() - end - end + handle_message(msg) end end
\ No newline at end of file |