Эта функция используется для асинхронной записи определенного количества байтов данных в поток. Звонок функции всегда возвращается немедленно. Асинхронная операция будет продолжаться до тех пор, пока не будет выполнено одно из следующих условий:
Эта операция реализована в терминах нулевого или большего количества вызовов к функции async_write_some потока и известна как операция.. Программа должна гарантировать, что поток не выполняет никаких других операций записи (таких как async_write, функция async_write_some потока или любые другие составные операции, которые выполняют записи) до завершения этой операции.
Поток, к которому должны быть записаны данные. Этот тип должен поддерживать концепцию AsyncWriteStream.
b
<basic_streambuf>объект, из которого будут записаны данные. Владение Streambuf сохраняется за абонентом, который должен гарантировать, что он остается действительным до тех пор, пока не будет вызван обработчик.
completion_condition
Объект функции должен быть вызван, чтобы определить, завершена ли операция записи. Подпись объекта функции должна быть:
std::size_tcompletion_condition(// Result of latest async_write_some operation.constboost::system::error_code&error,// Number of bytes transferred so far.std::size_tbytes_transferred);
Возвратное значение 0 означает, что операция записи завершена. Ненулевое значение возврата указывает на максимальное количество байтов, которые будут записаны на следующем вызове функции async_write_some потока.
handler
Обработчик должен быть вызван, когда операция записи завершится. Копии будут сделаны из обработчика по мере необходимости. Функциональная подпись обработчика должна быть:
voidhandler(constboost::system::error_code&error,// Result of operation.std::size_tbytes_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()>.
Статья async_write (4 of 4 overloads) раздела Boost.Asio async_write может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.