我有具有接受一个AsyncWriteStream的功能的API这里定义:可以使用asio basic_stream_socket(或存在等价物)写入文件吗?
http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/reference/AsyncWriteStream.html
这是当前使用的(和作品)使用流数据到TCP套接字,:
http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio/reference/basic_stream_socket.html
我的问题是,这个接口是否也可以用于流式传输到磁盘上的文件。我怀疑答案是肯定的,但我想知道需要多少努力,特别是如果现有的实现支持接口。
所以,重申一下。该API函数如下:
template <class AsyncWriteStream>
void stream_read(AsyncWriteStream &stream, completion_callback CB) { ...
内部的API将数据写入AsyncWriteStream使用boost::asio::async_write
来。我希望AsyncWriteStream能够流到tcp和文件套接字。也许我的问题也可以表述为“能创建一个流向磁盘而不是tcp的basic_stream_socket?”
我需要这个工作在Windows和Linux上。
尽管这应该起作用,但请注意Linux上的文件访问主要是同步/阻塞。这意味着你这个流上的'read_async'和'write_async'将表现得像一个阻塞的读写(只有异步回调)。如果你不确定,你可能需要将实际工作推迟到某种文件工作者线程或线程池。这是例如node.js/libuv如何处理异步文件访问。 – Matthias247
谢谢,这很可能是相关的。 –