On Sun, Feb 28, 2010 at 11:48 AM, Paul Dugas <paul@dugas.cc> wrote:
On Sun, Feb 28, 2010 at 9:44 AM, Igor R <boost.lists@gmail.com> wrote:
>> I'm new to asio but it looks like what I may need given that I have to
>> support device connections via serial ports and sockets but I also need to retain the ability to read from files.  I'm wondering if anyone could suggest an approach to support all three comm schemes with the same packet reception logic.
>
> You can take a look at windows::random_access_handle reference and example:
> http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/reference/windows__random_access_handle.html
> http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/example/windows/transmit_file.cpp

Sorry, should have mentioned I'm not on Windows; Linux is the target.
The posix::stream_descriptor looked promising until I read the "but
not  regular files" bit.
 

This is a serious limitation of asio, and has been for a long time.  It's possible there will be an equivalent of windows::random_access_handle for posix sometime in the near future, but that's about all I can say right now.  

You can "fake it" without too much complicated work by copying the interface of windows_random_access_handle and filling out the routines with logic to send requests to a thread pool (also managed in asio) and executing synchronous i/o operations inside the thread pool and then invoking the callbacks on the main thread.