Эта функция используется для асинхронного считывания определенного количества байтов данных с устройства случайного доступа при указанном смещении. Звонок функции всегда возвращается немедленно. Асинхронная операция будет продолжаться до тех пор, пока не будет выполнено одно из следующих условий:
Произошла ошибка.
Эта операция реализована с точки зрения нуля или более вызовов функции async_read_some_at устройства.
Устройство, с которого следует считывать данные. Этот тип должен поддерживать концепцию AsyncRandomAccessReadDevice.
offset
Смещение, при котором будут считаны данные.
b
<basic_streambuf>Объект, в который будут считаны данные. Владение Streambuf сохраняется за абонентом, который должен гарантировать, что он остается действительным до тех пор, пока не будет вызван обработчик.
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 (3 of 4 overloads) раздела Boost.Asio async_read_at может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.