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

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

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

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

Эта операция реализована в терминах нуля или более вызовов функции async_read_some потока и известна как.. Программа должна гарантировать, что поток не выполняет никаких других операций чтения (таких как async_read, функция async_read_some потока или любые другие составные операции, которые выполняют чтения) до завершения этой операции.

Parameters

s

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

buffers

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

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), handler);

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

Remarks

Эта перегрузка эквивалентна вызову:

boost::asio::async_read(
    s, buffers,
    boost::asio::transfer_all(),
    handler);

PrevUpHomeNext

Статья async_read (1 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:01:26/0.0061838626861572/0