[zeromq-dev] Can zmq_pollitem_t contain an item with a NULL socket ?
Laurent Alebarde
l.alebarde at free.fr
Thu Jan 30 14:22:38 CET 2014
Forget it. I won't make such change. It would be too much work for a
risky result. The benefit would have been to be able "/to build
zmq_pollitem_t arrays with more ease, when they are built by the
application itself, and not hardwritten in the code./"
Le 30/01/2014 13:29, Lindley French a écrit :
> No particular objection to the union idea (although it should be
> carefully profiled for speed against the existing code!) but I am
> curious, what possible benefit there could be to have NULL sockets in
> the poller? This seems contrary to "expected" workings in C-like
> languages.
>
> On Jan 30, 2014, at 5:20 AM, Laurent Alebarde <l.alebarde at free.fr
> <mailto:l.alebarde at free.fr>> wrote:
>
>> IMHO, it is a bad design of zmq_pollitem_t. It should not have one
>> attribute for socket and another one for file-descriptor with this
>> unrobust behaviour to use the second one when the first one is NULL,
>> but one for the type (socket or fd), and a union containing one or
>> the other.
>>
>> Implemented:
>> typedef struct
>> {
>> void *socket;
>> #if defined _WIN32
>> SOCKET fd;
>> #else
>> int fd;
>> #endif
>> short events;
>> short revents;
>> } zmq_pollitem_t;
>>
>> Should be:
>>
>> typedef struct
>> {
>> int type; // ZMQ_SOCKET | ZMQ_FD
>> union {
>> void *socket;
>> #if defined _WIN32
>> SOCKET fd;
>> #else
>> int fd;
>> #endif
>> } dev;
>> short events;
>> short revents;
>> } zmq_pollitem_t;
>>
>> But it would break the ABI to change it, isn't it ?
>>
>>
>> Le 30/01/2014 10:56, Laurent Alebarde a écrit :
>>> In fact, it is in src/zmq.cpp / "int zmq_poll (zmq_pollitem_t
>>> *items_, int nitems_, long timeout_)"
>>>
>>> When the socket is NULL, zmq_poll takes the second attribute of the
>>> zmq_pollitem_t structure which is a file descriptor. So, I cannot do
>>> anything here, as "socket == NULL and fd == 0" is legitimate.
>>>
>>> Conclusion: I have to deal myself with the complexity of not having
>>> NULL sockets in my zmq_pollitem_t array.
>>>
>>> Le 30/01/2014 09:23, Laurent Alebarde a écrit :
>>>> Thanks Pieter.
>>>>
>>>> Personnaly, I would prefer "ignore", in order to build
>>>> zmq_pollitem_t arrays with more ease, when they are built by the
>>>> application itself, and not hardwritten in the code.
>>>>
>>>> Any objection ?
>>>>
>>>> Le 29/01/2014 20:20, Pieter Hintjens a écrit :
>>>>> Undefined, by the man page. It should probably assert in such a case.
>>>>>
>>>>> On Wed, Jan 29, 2014 at 12:07 PM, Laurent Alebarde<l.alebarde at free.fr> wrote:
>>>>>> Hi Devs,
>>>>>>
>>>>>> What is the zmq_poll behaviour when the zmq_pollitem_t array contains an
>>>>>> item with a NULL socket ? ignored, undefined, error ?
>>>>>>
>>>>>> If it is in src/poll.cpp / "void zmq::poll_t::loop ()" / "for
>>>>>> (pollset_t::size_type i = 0; i != pollset.size (); i++)", it seems there is
>>>>>> no NULL test with a continue.
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>>
>>>>>> Laurent
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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 <mailto: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/20140130/1da86167/attachment.htm>
More information about the zeromq-dev
mailing list