On Sat, Feb 18, 2012 at 8:59 AM, Schmurfy <schmu...@gmail.com> wrote: > I have a strange problem related to using the file descriptor with an event > loop which led me to do some testing with it in C but there is still > something I cannot figure out. > > I created a simple client and server, the client (req.c) sends a request and > wait for an answer while the server just sends back what was received, my > problem is that the client (req.c) always timeout while doing a select on > the file descriptor and I cannot figure out what is wrong in my code. > > Another thing that bother me is that the file descriptor is edge-triggered > as specified in the documentation but what happens if I "miss" the change ? > I am not sure if this is possible but let's say I was doing something else > when the data was receiving, if I do a select after will it block forever ? > > Here is my code (I used czmq to make the code easier to write and read, I > used zeromq 3.1 for this test): https://gist.github.com/1859646 > > Thanks for any answer I hate when I don't understand something ^^ >
I've run into this exact issue Julien. The advice I've gotten is to always call recv after send prior to calling select. I find it counterintuitive, but that's the way the devs have said it should be done. I don't think it's possible to miss a change, as long as you've called recv the exact right number of times. (don't call recv again after successfully recv'ing a message, unless you're looking to get a EFSM, no matter what people on the list might say) The edge triggering will remain valid as long as you don't select on it. _______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev