Hello,
On Fri, Jul 17, 2009 at 2:13 PM, Alex Black
My app writes out a large amount of data to a socket, in a loop, in pieces, say 8kb at a time.
I'd like to switch from using Socket::send to use asio::async_write. At a high level, what do I need to do? From my reading, I think I need to:
1. Call async_write instead of send
2. Ensure that my buffers have the correct lifetime - today since my writes are synchronous I re-use the same buffer over and over again - so instead, should I make a new buffer for each write? Whats a good way to ensure the buffer has the correct lifetime, e.g. how do I delete it once its been written out?
Yes, you should have a new buffer (at least a buffer that's not being used and will not be used untill the completion of the operation). You delete the buffer (or set it for reuse, if it is the case), at the write callback which is invoked when the async_write completes.
3. I understand I can't call async_write again before the first one has been completed (since I don't want my 8kb chunks interleaved), so should I maintain a queue of buffers waiting to go out?
Then in my handle_write method should I check the queue, if at least one buffer is in the queue then I should start a new async_write?
Well, i don't know how to answer this one, and maybe that's the problem i'm having right now with my tcp async write code, then i'm so confused as you.
Thanks!
- Alex
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Matheus Araújo Aguiar Computer Scientist matheus.pit@gmail.com