Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

async_write (1 of 4 overloads)

Boost , Boost.Asio , async_write

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Начните асинхронную операцию для записи всех предоставленных данных в поток.

template<
    typename AsyncWriteStream,
    typename ConstBufferSequence,
    typename WriteHandler>
void-or-deduced async_write(
    AsyncWriteStream & s,
    const ConstBufferSequence & buffers,
    WriteHandler handler);

Эта функция используется для асинхронного написания определенного количества байтов данных в поток. Функция вызова всегда возвращается немедленно. Асинхронная операция будет продолжаться до тех пор, пока одно из следующих условий не будет правдой:

  • Все данные в поставляемых буферах были написаны. То есть передаваемые байты равны сумме размеров буфера.
  • Произошла ошибка.

Эта операция реализована с точки зрения нулевых или более вызовов для функции async_write_some потока, и известна как компонированная операция. Программа должна гарантировать, что поток не выполняет никаких других операций записи (таких как async_write, функция async_write_some потока или любые другие сочиненные операции, которые выполняют записи) до завершения этой операции.

Parameters

s

Поток, на который должны быть написаны данные. Тип должен поддерживать концепцию AsyncWriteStream.

buffers

Один или несколько буферов, содержащих данные, подлежащие написанию. Хотя объект буферов может быть скопирован по мере необходимости, владение базовыми блоками памяти сохраняется звонящим, что должно гарантировать, что они остаются в силе до тех пор, пока обработчик не будет назван.

handler

Обработчик должен быть вызван, когда операция записи завершается. Копии будут сделаны из обработчика по мере необходимости. Функция подписи обработчика должна быть:

void handler(
  const boost::system::error_code& error, // Result of operation.
  std::size_t bytes_transferred           // Number of bytes written from the
                                          // buffers. If an error occurred,
                                          // this will be less than the sum
                                          // of the buffer sizes.
);

Независимо от того, завершает ли асинхронная операция немедленно или нет, обработчик не будет ссылаться в рамках этой функции. Призыв обработчика будет выполнен таким образом, как использование boost::asio::io_service::post().

Example

Для записи одного буфера данных используйте функцию buffer следующим образом:

boost::asio::async_write(s, boost::asio::buffer(data, size), handler);

См. buffer документацию для информации о написании нескольких буферов за один ход, и как использовать ее с массивами, увеличить::array или std::vector.


PrevUpHomeNext

Статья async_write (1 of 4 overloads) раздела Boost.Asio async_write может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: async_write ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:39:13/0.0055971145629883/1