Giriş
Bu sınıf asio::async_read_until ile kolayca kullanılır.
Eğer tcp kullanıyorsak bu sınıf yerine tcp::iostream tercih edilmeli.
Constructor - default
Şöyle yaparız.
Açıklaması şöyle
asio streambuf'a Direkt Yazma yazısına taşıdım.
consume metodu
asio streambuf'tan Direkt Okuma yazısına taşıdım.
data metodu
Döndürdüğü tip şöyledir.
boost::asio::streambuf buffer (512);
std::ostream os (&buffer);
in_avail metodu
Şöyle yaparız.
Sınıf mutable_buffer haline prepare() metoduyla getirilir.Belirtilen büyüklük kadar bellek ayrılır.Bu bellek yazma işlemi için kullanılır.
Şöyle yaparız.
Şöyle yaparız.
InputStream Haline Getirme
asio streambuf'ı InputStream Haline Getirme yazısına taşıdım.
OutputStream Haline Getirme
asio streambuf'ı OutputStream Haline Getirme yazısına taşıdım.
buffers_begin metodu
Bu sınıf asio::async_read_until ile kolayca kullanılır.
std::string until = ...;
asio::async_read_until(socket,streambu, until, readHandler);
NotEğer tcp kullanıyorsak bu sınıf yerine tcp::iostream tercih edilmeli.
Constructor - default
Şöyle yaparız.
boost::asio::streambuf buf
;
Constructor - sizeAçıklaması şöyle
Şöyle yaparız.The constructor for basic_streambuf accepts a size_t argument specifying the maximum of the sum of the sizes of the input sequence and output sequence. During the lifetime of the basic_streambuf object, the following invariant holds:size() <= max_size()Any member function that would, if successful, cause the invariant to be violated shall throw an exception of class std::length_error.
boost::asio::streambuf buf
(1024);
Şöyle yaparız.boost::asio::streambuf buf (100 * 1024); //Limit memory for headers
commit metoduasio streambuf'a Direkt Yazma yazısına taşıdım.
consume metodu
asio streambuf'tan Direkt Okuma yazısına taşıdım.
data metodu
Döndürdüğü tip şöyledir.
boost::asio::streambuf::const_buffers_type bufs = buf.data();
Sınıfın içindeki veri şöyle pointer haline getirilir.const char* pData = asio::buffer_cast<const char*>(buf
.data());
Şöyle yaparız.//buf is a streambuf
const char *pData = boost::asio::buffer_cast<const char *> (buf.data() );
auto sz = buf.size();
Verinin bir kısmını string'e kopyalamak için şöyle yaparız.// Copy 10 bytes from the input sequence.
auto data = buf.data();
std::string str(boost::asio::buffers_begin(data),
boost::asio::buffers_begin(data) + 10);
Verinin tamamını string'e kopyalamak için şöyle yaparız.boost::asio::streambuf buf;...
std::string target{
buffers_begin (buf.data()),
buffers_end (buf.data())
};
Verinin tamamını string'e kopyalamak için şöyle yaparız.const auto bufferIterator = boost::asio::buffers_begin(buf.data());
const std::string message (bufferIterator, bufferIterator + bytes_transferred);
buf.consume (bytes_transferred);
Verinin tamamını vector'e kopyalamak için şöyle yaparız.boost::asio::streambuf buf;
...
std::vector<char> target (buf.size());
buffer_copy (boost::asio::buffer(target), buf.data());
Veriyi socket'ten göndermek için şöyle yaparız.
// Write to server.
streambuf buf;std::ostream output(&buf);output << "mystring";
write (socket, buf
.data());
Bir projede HTTP cevabını göndermek için şöyle yaptım.boost::asio::streambuf buffer (512);
std::ostream os (&buffer);
os << "HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n";
socket.send (buffer.data ());
socket.send (buffer.data ());
in_avail metodu
Şöyle yaparız.
std::streamsize sa = buf
.in_avail();
prepare metoduSınıf mutable_buffer haline prepare() metoduyla getirilir.Belirtilen büyüklük kadar bellek ayrılır.Bu bellek yazma işlemi için kullanılır.
Şöyle yaparız.
boost::asio::streambuf streambuf;
boost::asio::streambuf::mutable_buffers_type mutableBuffer = streambuf.prepare(5);
Şöyle yaparız.
// Prepare 1024 bytes for the output sequence.
boost::asio::streambuf streambuf;
streambuf.prepare(1024);
Şöyle yaparız.buf.prepare(buf.max_size())
Şöyle yaparız.boost::asio::streambuf streamBuffer;
boost::asio::streambuf::mutable_buffers_type mutableBuffer =
streamBuffer.prepare(max_length);
socket_.async_read_some(boost::asio::buffer(mutableBuffer),...);
size metoduŞöyle yaparız.
auto bytes = buf.size();
Diğer NotlarInputStream Haline Getirme
asio streambuf'ı InputStream Haline Getirme yazısına taşıdım.
OutputStream Haline Getirme
asio streambuf'ı OutputStream Haline Getirme yazısına taşıdım.
buffers_begin metodu
Şöyle yaparız.
asio::streambuf buf;
std::ostream(&buf) << "123, 4, 5; 78, 8, 9;\n888, 8, 8;";
auto itBegin = a::buffers_begin(input.data()),
itEnd = a::buffers_end(input.data());
Hiç yorum yok:
Yorum Gönder