[zeromq-dev] CZMQ and Server and Client Sockets

Doron Somech somdoron at gmail.com
Mon Aug 17 08:16:59 CEST 2015


A little nasty but will work, I already have the zmq_poller_get_fd method
(right now it is not public).
I will make the change.

What disadvantage do you see to the change of the structure?

On Mon, Aug 17, 2015 at 6:11 AM, KIU Shueng Chuan <nixchuan at gmail.com>
wrote:

> Do you think it would be worthwhile to preserve ABI compatibility of the
> zmq_pollitem_t structure?
>
> Perhaps for threadsafe sockets, the user could extract the fd of the
> poller object and populate the pollitem fd field himself?
>
> e.g.
> socket!=NULL && fd!=0 ==> threadsafe zmq socket
> socket!=NULL && fd==0 ==> regular zmq socket
> socket==NULL ==> regular TCP socket (or any fd on unix)
>
>
> On Sun, Aug 16, 2015 at 11:06 PM, Doron Somech <somdoron at gmail.com> wrote:
>
>> so, I made a pull request to fix the issue, moving field to the end of
>> struct:
>>
>> https://github.com/zeromq/libzmq/pull/1526
>>
>> On Sun, Aug 16, 2015 at 5:54 PM, Doron Somech <somdoron at gmail.com> wrote:
>>
>>> I will try to fix that...
>>>
>>> On Sun, Aug 16, 2015 at 5:43 PM, KIU Shueng Chuan <nixchuan at gmail.com>
>>> wrote:
>>>
>>>> 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
>>>>>
>>>>>
>>>> _______________________________________________
>>>> 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/20150817/ea8dfe63/attachment.htm>


More information about the zeromq-dev mailing list