Попробуйте прочитать определенное количество данных в указанном смещение перед возвращением.
template<
typename SyncRandomAccessReadDevice,
typename Allocator,
typename CompletionCondition>
std::size_t read_at(
SyncRandomAccessReadDevice & d,
uint64_t offset,
basic_streambuf< Allocator > & b,
CompletionCondition completion_condition);
Эта функция используется для считывания определенного количества байтов данных с устройства случайного доступа в указанном смещение. Звонок будет блокироваться до тех пор, пока не будет выполнено одно из следующих условий:
- Объект функции завершения_условия возвращает 0.
Эта операция реализована с точки зрения нуля или более вызовов функции read_some_at устройства.
- d
Устройство, с которого следует считывать данные. Тип должен поддерживать концепцию SyncRandomAccessReadDevice.
- offset
Смещение, при котором будут считаны данные.
- b
basic_streambuf
объект, в который будут считываться данные.
- completion_condition
-
Объект функции должен быть вызван, чтобы определить, завершена ли операция чтения. Подпись объекта функции должна быть:
std::size_t completion_condition(
const boost::system::error_code& error,
std::size_t bytes_transferred
);
Обратное значение 0 означает, что операция чтения завершена. Ненулевое значение возврата указывает на максимальное количество байтов, которые будут считаны при следующем вызове функции read_some_at устройства.
Количество переданных байтов.
- boost::system::system_error
Выброшен на провал.