Эта функция используется для асинхронной записи определенного количества байт данных на устройство случайного доступа при заданном смещение. Звонок функции всегда возвращается немедленно. Асинхронная операция будет продолжаться до тех пор, пока не будет выполнено одно из следующих условий:
Эта операция реализована в терминах нуля или более вызовов функции async_write_some_at устройства и известна как составленная операция. Программа должна гарантировать, что устройство не выполняет операций записи , перекрывающих (таких как async_write_at, функция async_write_some_at устройства или любые другие составные операции, которые выполняют записи) до завершения этой операции. Операции перекрываются, если области, определенные их смещениями, и числа байтов для записи пересекаются.
Устройство, на которое должны быть записаны данные. Этот тип должен поддерживать концепцию AsyncRandomAccessWriteDevice.
offset
Смещение, при котором будут записаны данные.
b
basic_streambuf объект, с которого будут записаны данные. Владение Streambuf сохраняется за абонентом, который должен гарантировать, что он остается действительным до тех пор, пока не будет вызван обработчик.
completion_condition
Объект функции должен быть вызван, чтобы определить, завершена ли операция записи. Подпись объекта функции должна быть:
std::size_tcompletion_condition(// Result of latest async_write_some_at operation.constboost::system::error_code&error,// Number of bytes transferred so far.std::size_tbytes_transferred);
Возвратное значение 0 означает, что операция записи завершена. Ненулевое значение возврата указывает на максимальное количество байтов, которые будут записаны при следующем вызове функции async_write_some_at устройства.
handler
Обработчик должен быть вызван, когда операция записи завершится. Копии будут сделаны из обработчика по мере необходимости. Функциональная подпись обработчика должна быть:
voidhandler(// Result of operation.constboost::system::error_code&error,// Number of bytes written from the buffers. If an error// occurred, this will be less than the sum of the buffer sizes.std::size_tbytes_transferred);
Независимо от того, выполняется ли асинхронная операция немедленно или нет, обработчик не будет вызываться из этой функции. Вызов обработчика будет выполнен способом, эквивалентным использованию boost::asio::io_service::post().
Статья async_write_at (4 of 4 overloads) раздела Boost.Asio async_write_at может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.