Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

async_read_at (2 of 4 overloads)

Boost , Boost.Asio , async_read_at

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Запуск асинхронной операции для считывания определенного количества данных при указанном смещении.

template<
    typename AsyncRandomAccessReadDevice,
    typename MutableBufferSequence,
    typename CompletionCondition,
    typename ReadHandler>
void-or-deduced async_read_at(
    AsyncRandomAccessReadDevice & d,
    uint64_t offset,
    const MutableBufferSequence & buffers,
    CompletionCondition completion_condition,
    ReadHandler handler);

Эта функция используется для асинхронного считывания определенного количества байтов данных с устройства случайного доступа при указанном смещении. Звонок функции всегда возвращается немедленно. Асинхронная операция будет продолжаться до тех пор, пока не будет выполнено одно из следующих условий:

  • Поставляемые буферы заполнены. То есть переданные байты равны сумме буферных размеров.
  • Объект функции завершения_условия возвращает 0.
Parameters

d

Устройство, с которого следует считывать данные. Этот тип должен поддерживать концепцию AsyncRandomAccessReadDevice.

offset

Смещение, при котором будут считаны данные.

buffers

Один или несколько буферов, в которые будут считываться данные. Сумма размеров буфера указывает на максимальное количество байт для чтения с устройства. Хотя объект буферов может быть скопирован по мере необходимости, право собственности на базовые блоки памяти сохраняется абонентом, который должен гарантировать, что они остаются действительными до тех пор, пока обработчик не будет вызван.

completion_condition

Объект функции должен быть вызван, чтобы определить, завершена ли операция чтения. Подпись объекта функции должна быть:

std::size_t completion_condition(
  // Result of latest async_read_some_at operation.
  const boost::system::error_code& error,
  // Number of bytes transferred so far.
  std::size_t bytes_transferred
);

Обратное значение 0 означает, что операция чтения завершена. Ненулевое значение возврата указывает на максимальное количество байтов, которые будут считаны при следующем вызове функции async_read_some_at устройства.

handler

Обработчик должен быть вызван, когда операция чтения завершится. Копии будут сделаны из обработчика по мере необходимости. Функциональная подпись обработчика должна быть:

void handler(
  // Result of operation.
  const boost::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_t bytes_transferred
);

Независимо от того, выполняется ли асинхронная операция немедленно или нет, обработчик не будет вызываться из этой функции. Применительно к нему следует использовать<boost::asio::io_service::post()>.

Example

Для считывания в единый буфер данных используют функцию<buffer>:

boost::asio::async_read_at(d, 42,
    boost::asio::buffer(data, size),
    boost::asio::transfer_at_least(32),
    handler);

См. документацию<buffer>для информации о считывании в несколько буферов за один раз, и как использовать ее с массивами, нарастить::array или std::vector.


PrevUpHomeNext

Статья async_read_at (2 of 4 overloads) раздела Boost.Asio async_read_at может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: async_read_at ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 05:24:18/0.0038189888000488/0