I have made a pull request to the 40/XRAP protocol to add a sequence number to 
the requests.
Note that I have made this an incompatible change. Open to suggestions on 
whether it should attempt to maintain compatibility by, for example, changing 
the signature of the messages.
I also propose removing the restriction that response messages to pipelined 
requests should be returned in order, or rather added a clarification that they 
CAN be returned out of order. For a multithreaded server it is unnecessarily 
complicated to make the server preserve the order.

Thanks.

>From the commit message:
Consider the following scenario.
You have an interactive client that is using XRAP to communicate with a server. 
Say an interactive music streamer, using the resource schema defined in the 
XRAP RFC.
Client is using a DEALER socket, server a ROUTER.
Server is NOT running.
Client makes a GET request for a resource.
Request times out, friendly message given to user.
Request message is in clients output queues.
Server starts up.
Request is then delivered to server, server responds.
Client then makes a GET request for a DIFFERENT resource.
Client receives response from the FIRST request. Wrong music plays. User 
unhappy.

I've tried this, and it works (does what I thought it would, i.e fail).

Consider also writing a multithreaded server. If clients are allowed to 
pipeline, then there's no practical way of maintaining the order of replies, 
without there being a client generated sequence number in the request. Again, 
this is information borne of experience.
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to