No problem, I also agree as I think we need minimal change.

I made the change:
https://github.com/somdoron/libzmq/commit/5bae6911afba90de42b9fd21315f6d702e1bb2c6

I will wait with the PR until other will weigh in.

Also I think the poller name is not great, I prefer another but didn't come
up with a good one, few alternatives:
* signaler - it is the internal name in libzmq
* efd - for event fd
* polling_fd
* poll_fd
* pollfd

What do you think?





On Mon, Aug 17, 2015 at 10:29 AM, KIU Shueng Chuan <[email protected]>
wrote:

> The structure of zmq_pollitem_t is part of the public api and abi. All
> existing programs would require a recompile.
>
> Perhaps others would like to weigh in on this?
> On 17 Aug 2015 14:17, "Doron Somech" <[email protected]> wrote:
>
>> 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 <[email protected]>
>> 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 <[email protected]>
>>> 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 <[email protected]>
>>>> wrote:
>>>>
>>>>> I will try to fix that...
>>>>>
>>>>> On Sun, Aug 16, 2015 at 5:43 PM, KIU Shueng Chuan <[email protected]>
>>>>> 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" <[email protected]> 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 <[email protected]
>>>>>>> > 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 <[email protected]>
>>>>>>>> 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 <
>>>>>>>>> [email protected]> 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 <[email protected]
>>>>>>>>>> > 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 <
>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>> [email protected]> 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
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> zeromq-dev mailing list
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> zeromq-dev mailing list
>>>>>>>>>>> [email protected]
>>>>>>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> zeromq-dev mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> zeromq-dev mailing list
>>>>>>>>> [email protected]
>>>>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> zeromq-dev mailing list
>>>>>>>> [email protected]
>>>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> zeromq-dev mailing list
>>>>>>> [email protected]
>>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> zeromq-dev mailing list
>>>>>> [email protected]
>>>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> zeromq-dev mailing list
>>>> [email protected]
>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>
>>>>
>>>
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> [email protected]
>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>
>>>
>>
>> _______________________________________________
>> zeromq-dev mailing list
>> [email protected]
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>>
> _______________________________________________
> zeromq-dev mailing list
> [email protected]
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to