Boost logo

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