私はstd::streambufAPI の読み取り半分 (すなわちunderflow()とxsgetn()) を libcurl の周りに実装しました。これにより、通常のistreamユーザーがこのようなstreambufプラグインをプラグインして、HTTP または FTP サーバーからコンテンツを取得できるようになります。それはうまくいきます。
ここで、ファイルを FTP サーバーにアップロードして次のようなことを行うために、API の半分の書き込み (つまり、overflow()および)を実装したいと思います。xsputn()
ostream os( my_curl_streambuf );
curl_easy_setopt( my_curl_handle, CURLOPT_UPLOAD, 1L );
os << is->rdbuf(); // copy entire contents of istream "is" to ostream "os"
CURLOPT_READFUNCTION問題は、上記の最後のコード行がそれを行う「プッシュ」方法であるのに対し、libcurl は read-callback 関数セットを介して「プル」API を使用することです。
これを機能させることはできますか?つまり、読み取りと書き込みの両方で libcurl をstreambufAPIでラップしますか?