Boost logo

Boost Users :

Subject: Re: [Boost-users] [asio] serial_port::async_read_some() and scalablebuffers
From: Casimiro, Daniel C CIV NUWC NWPT (daniel.casimiro_at_[hidden])
Date: 2009-08-27 15:48:37


> -----Original Message-----
> I have a std::vector of bytes that I am passing into
> boost::asio::buffer(). The vector originally is of size 0.
> Basically, I want the vector to be resized by asio depending
> on how much data is read in. I don't want to choose an
> arbitrary upper-limit for the buffer. Is this possible?
>
> Below is an example of what I am doing:
>
> std::vector<boost::uint8_t> stream;
> m_port.async_read_some(
> boost::asio::buffer( stream ),
> boost::bind( &SerialClient::ReadCompleted, this, stream,
> error, bytes_transferred )
> );
>
> However, the above code will never read any data because my
> vector is 0 and it expects it to have a size.

You could use a boost::asio::streambuf object with the free function async_read. Something like:

async_read(m_port, streambuf, completion_condition, handler);

You could probably make a completion condition that always returns true to get notified whenever there is data available. However, I've never tried that.

~Dan




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