|
Boost Users : |
Subject: [Boost-users] Using boost::asio::async_write to stream out data
From: Alex Black (alex_at_[hidden])
Date: 2009-07-17 13:13:16
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?
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?
Thanks!
- Alex
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net