[zeromq-dev] ZMQ_FD and inproc:// socket
Max Kozlovsky
max at portworx.com
Thu Nov 17 03:22:55 CET 2016
Are you sure there is really a problem? We are using inproc sockets with
custom epoll based event loop and it seems to be working fine.
On the other hand I imagine there would be difficulties with trying to
integrate with some existing event processing library because the behavior
differs from what is expected from real sockets.
On Wed, Nov 16, 2016 at 6:17 PM, Justin Karneges <justin at affinix.com> wrote:
> What Max says is true, BUT there is actually a specific bug with inproc
> sockets not working with ZMQ_FD.
>
> (I'm the one that filed the original issue)
>
> On Wed, Nov 16, 2016, at 05:59 PM, Max Kozlovsky wrote:
>
> Hi,
>
> It is kind of tricky.
>
> The availability of data on the file descriptor returned with ZMQ_FD
> signals that there is a zmq socket state change, i.e. the receive queue
> goes from empty to non-empty. Any operation on the socket
> (send/receive/getsockopt with ZMQ_EVENTS) may clear the notification. No
> further notifications will be received until there is another state change.
> This means the application has to continue sending/receiving data until
> getsockopt with ZMQ_EVENTS says further operations are not possible. The
> application should not access the file descriptor directly beyond using it
> as poll/epoll file descriptor.
>
> I am not familiar with boost::aio, but you'll need to do at least the
> following:
> 1) define your own read handler which is called when the file descriptor
> signals data availability, which will call zmq_msg_recv() on corresponding
> zmq socket.
> 2) either exhaust the incoming data completely each time read handler is
> called, or somehow mark the file descriptor as having the data available so
> your read handler is called again when the control is returned to the
> library.
>
> Max
>
>
>
> On Tue, Nov 15, 2016 at 5:06 AM, Arnaud Kapp <kapp.arno at gmail.com> wrote:
>
> Hello,
>
> I'm using zmqpp in my project, and I have a special case where I need to
> integrate
> with boost::asio (this is what azmq does, but for now I just need it once,
> so I don't want
> to switch libraries).
>
> The idea was to rely on ZMQ_FD and add the corresponding FD to ASIO's
> event loop.
> However, I've found that async_read_some() wasn't triggered. It turns out
> it's likely an issue
> in libzmq: https://github.com/zeromq/libzmq/issues/1434
>
> After taking a quick look at AZQM it seems it's also using ZMQ_FD.
> Can anyone tell me what's the trick to get them to work?
> Thanks,
>
>
> --
> Kapp Arnaud - Xaqq
>
>
> _______________________________________________
> 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/20161116/86f27838/attachment.htm>
More information about the zeromq-dev
mailing list