[zeromq-dev] CZMQ and Server and Client Sockets

KIU Shueng Chuan nixchuan at gmail.com
Sun Aug 16 16:43:07 CEST 2015


Hello, the new definition for zmq_pollitem_t would break code like the
following:

zmq_pollitem_t pollitems [] = {
            { zsock, 0, ZMQ_POLLIN, 0 },
            { NULL, fd, ZMQ_POLLIN, 0 }
        };
On 16 Aug 2015 19:10, "Doron Somech" <somdoron at gmail.com> wrote:

> So I made a pull request which add polling on multiple sockets:
>
> https://github.com/zeromq/libzmq/pull/1525
>
> Polling on thread safe sockets is a little different then regular socket,
> take a look at the gist:
>
> https://gist.github.com/somdoron/902169bf115d3534bd24
>
> Next is making a pull request to CZMQ to use the new ability.
>
>
> On Sun, Aug 16, 2015 at 12:53 AM, Brian Knox <bknox at digitalocean.com>
> wrote:
>
>> Makes sense to me!  The API is close enough to the other poller
>> implementations that there's no surprises.
>>
>> Cheers!
>> Brian
>>
>> On Sat, Aug 15, 2015 at 5:21 PM, Doron Somech <somdoron at gmail.com> wrote:
>>
>>> Polling on multiple thread safe socket is a little bit different,
>>> because thread safe doesn't have a FD, so we need to create one for all
>>> thread safe sockets for each thread before calling the zmq_poll.
>>>
>>> So I want to make it very close to the current API, this what I have so
>>> far:
>>>
>>> https://gist.github.com/somdoron/902169bf115d3534bd24
>>>
>>> zmq_poller_t is actually a FD, when added to the thread safe socket the
>>> socket will signal it once a command is ready, multiple sockets can use the
>>> same poller. When signalled the zmq_poll will check all sockets for events.
>>>
>>> What do you think?
>>>
>>>
>>>
>>> On Sat, Aug 15, 2015 at 5:54 PM, Brian Knox <bknox at digitalocean.com>
>>> wrote:
>>>
>>>> Doron - as a heads up, being able to poll multiple sockets from zpoller
>>>> would be of great interest to me (I use zpoller in goczmq quite a bit).
>>>>
>>>> Cheers,
>>>> Brian
>>>>
>>>> On Sat, Aug 15, 2015 at 3:48 AM, Doron Somech <somdoron at gmail.com>
>>>> wrote:
>>>>
>>>>> Andrew are you using CZMQ? which class do you use for multiple
>>>>> polling, zloop or zpoller?
>>>>>
>>>>> On Fri, Aug 14, 2015 at 10:36 PM, Andrew Simpson <
>>>>> simpsonar77 at yahoo.com> wrote:
>>>>>
>>>>>> this sounds really excellent!  I am building an application that
>>>>>> would greatly benefit from this over a standard Router/Dealer setup.  The
>>>>>> only thing that will hold me back right now is the lack of polling on
>>>>>> multiple client/server sockets.  I definitely need that.
>>>>>>
>>>>>> Good stuff!
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Friday, August 14, 2015 9:09 AM, Doron Somech <somdoron at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> I added server and client sockets support to CZMQ, you can take a
>>>>>> look at the change at the following pull request:
>>>>>>
>>>>>> https://github.com/zeromq/czmq/pull/1059
>>>>>>
>>>>>> Server socket is like router socket except you don't have an identity
>>>>>> frame, each message also include routing id which is an int (vs byte
>>>>>> array). So each message coming from a server socket include a routing id
>>>>>> which can be retrieve by calling zframe_routing_id. When sending a message
>>>>>> you must set the routing id by calling zframe_set_routing_id. You can use
>>>>>> zframe_send_reply with both the destination frame and the source frame
>>>>>> (which include the routing id), the method copy the routing id from the
>>>>>> source frame to the destination frame and then send the message.
>>>>>>
>>>>>> Client socket is same as dealer socket. Client and Server can only
>>>>>> talk to each other.
>>>>>>
>>>>>> Following is a small example on how to use the new client and server
>>>>>> sockets:
>>>>>> https://gist.github.com/somdoron/542b74922f652d229566
>>>>>>
>>>>>> Client and server socket are thread safe (currently only support
>>>>>> single frame messages but that might change, I think) so if your protocol
>>>>>> is single frame you can use the server and client sockets from multiple
>>>>>> threads.
>>>>>>
>>>>>> Polling on multiple client or server sockets is not supported yet.
>>>>>>
>>>>>> In the coming week I plan to also add zproto support and complete the
>>>>>> polling on multiple sockets.
>>>>>>
>>>>>> Doron
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> zeromq-dev mailing list
>>>>>> zeromq-dev at lists.zeromq.org
>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> zeromq-dev mailing list
>>>>>> zeromq-dev at lists.zeromq.org
>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> zeromq-dev mailing list
>>>>> zeromq-dev at lists.zeromq.org
>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> zeromq-dev mailing list
>>>> zeromq-dev at lists.zeromq.org
>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>
>>>>
>>>
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev at lists.zeromq.org
>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>
>>>
>>
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20150816/f97375fb/attachment.htm>


More information about the zeromq-dev mailing list