Giriş
MutableBuffer ve MutableBufferSequence kavramlarını bilmek gerekir.
MutableBuffer Nedir
Açıklaması şöyle
Mutable Buffer Sequence sadece char tipi ile çalışır. boost::asio::buffers_iterator ile dolaşılabilir.
Tanımlama
Şöyle yaparız.
Bu yapıyı boost::asio::buffer_copy() ile tek bir dizi gibi kullanabiliriz. Elimizde şöyle bir kod olsun.
MutableBuffer ve MutableBufferSequence kavramlarını bilmek gerekir.
MutableBuffer Nedir
Açıklaması şöyle
MutableBuffer is a reference to a fixed-length area of mutable memory. Note that it does not in itself contain the memory.MutableBufferSequence Nedir
Mutable Buffer Sequence sadece char tipi ile çalışır. boost::asio::buffers_iterator ile dolaşılabilir.
Tanımlama
Şöyle yaparız.
std::array<char, 512> block1{}, block2{};
std::vector<ba::mutable_buffers_1> blocks { boost::asio::buffer(block1),
boost::asio::buffer(block2) };
ÖrnekBu yapıyı boost::asio::buffer_copy() ile tek bir dizi gibi kullanabiliriz. Elimizde şöyle bir kod olsun.
template <class MutableBufferSequence, class ReadHandler>
void my_read_some(MutableBufferSequence buf, ReadHandler handler) {
char tmp[1024] = {};
std::cin.read(tmp, sizeof(tmp));
std::streamsize num = std::cin.gcount();
if(std::cin || num) {
boost::asio::buffer_copy(buf, ba::buffer(tmp, num));
handler({}, num);
} else {
handler(ba::error::eof, num);
}
}
boost::asio::buffers() ile tek bir dizi gibi kullanabilir.z Kullanmak için şöyle yaparız.auto handler = [&blocks](boost::system::error_code ec, size_t transferred) {
if (ec)
std::cout << "Error " << ec.message() << "\n";
else {
std::cout << "Received " << transferred << " bytes\n-------\n";
std::copy_n(boost::asio::buffers_begin(blocks), transferred,
std::ostreambuf_iterator<char>(std::cout));
std::cout << "\n-------\n";
}
};
my_read_some(blocks, handler);
Hiç yorum yok:
Yorum Gönder