[zeromq-dev] zmq_poll: timeout issue
matt_weinstein at yahoo.com
Wed Aug 11 13:43:59 CEST 2010
Even C++ needs wrappers (libs, STL, Boost, etc.) :-)
What's interesting about ØMQ is how quickly you can implement a stable
solution at the endpoints using REQ-REP, PUB-SUB, etc., then do
plumbing transparently in the middle without changing the endpoint API
Also, I haven't focused on patterns for the endpoints yet, there are
some evolving in my work.
On Aug 11, 2010, at 4:30 AM, Ilja Golshtein wrote:
> thank you.
> Learning zmq_reactor and your suggestions.
> It is slightly disappointing elegant and crystal 0mq interface is
> unusable in
> production and requires wrappers and complications ... not a low
> hanging fruit.
> 10.08.2010, 21:35, "Matt Weinstein" <matt_weinstein at yahoo.com>:
>> Basically -- reverse the normal "server" paradigm, and use an XREP
>> socket on the device side, then have each server send a single
>> when it wakes up on its REQ socket. This message identifies the
>> server to the device side by UUID. The server will be back to
>> alternative recv-send cycles (just offset by one).
>> [[ clients ]] -- [REQ] = [XREP] --- DEVICE --- [XREP] = [REQ] --
>> [[ servers ]]
>> The server UUIDs go into a "server free list", which can then be used
>> to schedule clients.
>> When you read the client packet stream (UUID,NULLPACKET,data) to
>> service a client, you need to keep the <serverUUID, clientUUID> pair
>> in a(n unordered) map, so when the server finishes the client
>> can be transmitted, and the server pushed back to the freelist.
>> If there is no server when you receive a client request
>> ( server_free_list.empty() ) you can then respond back immediately
>> with a failure message.
>> Alternatively, if you don't want to dequeue requests until a server
>> free, just poll ONLY the server list while server_free_list.empty().
>> If you need to handle a timeout scenario, either pull the client
>> requests out of the XREP, put them into unrolled lists of zmq_msg_t
>> equivalent, and build a small timer chain to return an error and kill
>> a set (or unordered_map) with the requests.
>> (The zmq_reactor library should help a bit here, that's what I'm
>> for all this...)
> Best regards
> Ilja Golshtein
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
More information about the zeromq-dev