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