I have defined a sequence of steps defining how to handle several async reads/writes. I am dealing with byte streams (TCP).
Could you guys take a look and point any mistakes i might have made, please?
Thanks in advance,

*Write
1. Get a message from a queue;
2. Request async write the message;
3. Write completes and callback handler is called;
4. go back to 1;

* Read (More than one async read have been requested)
1. Create buffer and assign it a sequence number;
2. Request async read passing the buffer;
3. Read completes and callback handler is called;
4. Request another async read;
5. Does the buffer number matches the next buffer number to be processed?
6. Numbers don't match, so put the buffer on a wait queue and exit;
7. Numbers match, so process the buffer;
8. Is there a buffer on the wait queue?
9. There's no buffer in queue, then exit;
10. There's a buffer on the queue, go back to 5;

--
Matheus Araújo Aguiar
Computer Scientist
matheus.pit@gmail.com