14 Kasım 2017 Salı

asio const_buffer Sınıfı

Giriş
Scatter/Gather IO için kullanılır. Normalde arka arkaya iki tane asenkron işlem yapamayız.
boost::asio::async_write(*serialPort, boost::asio::buffer(*something),handler);
boost::asio::async_write(*serialPort, boost::asio::buffer(*something2),handler);
İlk işlem bittikten sonra ikinci işlemi başlatabiliriz. Bundan kurtulmak için kullanılır.

Örnek
Şöyle yaparız.
#include <iostream>
#include <string>
#include <boost/asio.hpp>
#include <boost/asio/serial_port.hpp>

void handler(boost::system::error_code ec, size_t) {
    std::cout << __PRETTY_FUNCTION__ << ": " << ec.message() << "\n";
}

int main() {
    boost::asio::io_service svc;

    auto serialPort = std::make_shared<boost::asio::serial_port>(svc);

    auto something = std::make_shared<std::string>("hello world\n");
    auto something2 = std::make_shared<std::string>("bye world\n");

    std::vector<boost::asio::const_buffer> buffers { 
        boost::asio::buffer(*something), 
        boost::asio::buffer(*something2) 
    };

    boost::asio::async_write(*serialPort, buffers, handler);
}

Hiç yorum yok:

Yorum Gönder