Le 4/2/14 10:32 AM, Aidan Diffey a écrit : > Hello. > > I am attempting to do the following: > > 1. Receive a message from a device that informs me that data is available > for pulling. > 2. Send a message to the deivce (on the incomming connection) to request > the data. > 3. Receive the data > 4. Send a message deleteing the data and requesting more. (The delete needs > to arrive at the device before the request message does). > > How can I ensure that the delete request will arrive at the devices before > the data request? If I understand correctly, you want to be sure that your client will receive the delete message, and then the request for more data ?
I don't see the problem here. If you send a delete message, it will be pushed into the socket before the message that request some more data, so you client will *always* receive the delete message *before* the sendMore request... There is no magic here. Ech message pushed using session.write() will be sent in the exact same order : session.write() is pushing each of those messages into a queue, and this queue will be read sequencially by the thread in charge of sending the data to your client. There is one case where you can have trouble though, this is if you have added an ExecutorFilter in your chain, and if you have multiple threads writing in the same session (ie, you haven't used the orderedThrezadPoolExecutor). -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com
