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

async_read (2 of 4 overloads)

Boost , Boost.Asio , async_read

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 AsyncReadStream,
    typename MutableBufferSequence,
    typename CompletionCondition,
    typename ReadHandler>
void-or-deduced async_read(
    AsyncReadStream & s,
    const MutableBufferSequence & buffers,
    CompletionCondition completion_condition,
    ReadHandler handler);

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

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

s

Поток, из которого следует читать данные. Тип должен поддерживать концепцию AsyncReadStream.

buffers

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

completion_condition

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

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

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

handler

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

void handler(
  const boost::system::error_code& error, // Result of operation.
  std::size_t bytes_transferred           // Number of bytes copied into the
                                          // buffers. If an error occurred,
                                          // this will be the  number of
                                          // bytes successfully transferred
                                          // prior to the error.
);

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

Example

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

boost::asio::async_read(s,
    boost::asio::buffer(data, size),
    boost::asio::transfer_at_least(32),
    handler);

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


PrevUpHomeNext

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




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



:: Главная :: async_read ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 06:12:25/0.008063793182373/1