Parallel task worker in Lua

--
-- Task worker
-- Connects PULL socket to tcp://localhost:5557
-- Collects workloads from ventilator via that socket
-- Connects PUSH socket to tcp://localhost:5558
-- Sends results to sink via that socket
--
-- Author: Robert G. Jakabosky <moc.mlaerderahs|ybbob#moc.mlaerderahs|ybbob>
--
require"zmq"
require"zhelpers"

local context = zmq.init(1)

-- Socket to receive messages on
local receiver = context:socket(zmq.PULL)
receiver:connect("tcp://localhost:5557")

-- Socket to send messages to
local sender = context:socket(zmq.PUSH)
sender:connect("tcp://localhost:5558")

-- Process tasks forever
while true do
local msg = receiver:recv()
-- Simple progress indicator for the viewer
io.stdout:flush()
printf("%s.", msg)

-- Do the work
s_sleep(tonumber(msg))

-- Send results to sink
sender:send("")
end
receiver:close()
sender:close()
context:term()