2

boost::asio::buffer1つの要素だけでバッファシーケンスを作成することがあります。複数のバッファーからバッファーシーケンスを作成できるラッパーはありますか?

4

1 に答える 1

14

ラッパーはありませんが、、、、などのMutableBufferSequenceおよびConstBufferSequenceの概念要件を満たす任意のコンテナーに複数のバッファー提供できます。ほとんどの関数は、BufferSequenceの概念の観点から実装されており、単一のバッファーを要件を満たすタイプにラップするための便利な方法を提供します。このドキュメントでは簡単に説明しています。std::vectorstd::listboost::arrayboost::asio::buffer

Boost.Asioシリアル化ののスニペットを次に示します。

// Write the serialized data to the socket. We use "gather-write" to send
// both the header and the data in a single write operation.
std::vector<boost::asio::const_buffer> buffers;
buffers.push_back(boost::asio::buffer(outbound_header_));
buffers.push_back(boost::asio::buffer(outbound_data_));
boost::asio::async_write(socket_, buffers, handler);

ドキュメントにはBoost.Asioが必要に応じてコピーを作成する可能性があると記載buffersされているため、コレクションをスコープ内に残す必要はないことに注意してください。ただし、基になるメモリとは、ハンドラが呼び出されるまで有効である必要があります。outbound_header_outbound_data_

于 2013-01-19T13:47:21.100 に答える