2013-01-19 6 views
2

하나의 요소만으로 버퍼 시퀀스를 생성하는 boost::asio::buffer이 있습니다. 여러 버퍼에서 버퍼 시퀀스를 만들 수있는 래퍼가 있습니까?버퍼 시퀀스 생성 방법

답변

13

이 래퍼가 없다, 그러나 당신은 std::vector, std::list, 또는 boost::arrayMutableBufferSequenceConstBufferSequence 개념의 요구 사항을 충족하는 컨테이너에 여러 버퍼를 제공 할 수 있습니다. 대부분의 함수는 BufferSequence 개념으로 구현되며 boost::asio::buffer은 단일 버퍼를 요구 사항을 충족하는 형식으로 래핑하는 데 편리한 방법을 제공합니다. 이 documentation에는 간단히 언급되어 있습니다. buffers 컬렉션 Boost.Asio가 필요 복사본을 만들 수 있습니다 documentation 상태로, 범위에 남아 필요가 없다는

// 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 직렬화 example에서 조각입니다. 그러나 기본 메모리 인 outbound_header_outbound_data_은 핸들러가 호출 될 때까지 유효해야합니다.

+0

감사합니다. 도움이되었습니다. asio 문서는 약간 드물다. –