我有具有接受一個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
謝謝,這很可能是相關的。 –