From b043c7631fb8ae199a4351a7f89e10b28b9f8bf1 Mon Sep 17 00:00:00 2001 From: "Robert G. Jakabosky" Date: Fri, 1 Jun 2012 13:06:07 -0700 Subject: [PATCH] Try Forwarding multiple messages per IO event notification. --- examples/forward_poll.lua | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/examples/forward_poll.lua b/examples/forward_poll.lua index e151d27..25e1e4f 100644 --- a/examples/forward_poll.lua +++ b/examples/forward_poll.lua @@ -11,14 +11,25 @@ xreq:bind('tcp://127.0.0.1:13333') local xrep = poll_zsock(c:socket(zmq.XREP)) xrep:bind('tcp://127.0.0.1:13334') +local max_recv = 10 + local function forward_io(src,dst) - src.on_data = function() - repeat - local data = assert(src:recv(zmq.NOBLOCK)) - local more = src:getopt(zmq.RCVMORE) > 0 - dst:send(data,more and zmq.SNDMORE or 0) - until not more - end + src.on_data = function() + for i=1,max_recv do + repeat + local data, err = src:recv(zmq.NOBLOCK) + if not data then + if err == 'timeout' then + return + else + error("socket recv error:" .. err) + end + end + local more = src:getopt(zmq.RCVMORE) > 0 + dst:send(data,more and zmq.SNDMORE or 0) + until not more + end + end end forward_io(xrep,xreq)