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

async_write (2 of 4 overloads)

Boost , Boost.Asio , async_write

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 AsyncWriteStream,
    typename ConstBufferSequence,
    typename CompletionCondition,
    typename WriteHandler>
void-or-deduced async_write(
    AsyncWriteStream & s,
    const ConstBufferSequence & buffers,
    CompletionCondition completion_condition,
    WriteHandler handler);

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

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

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

Parameters

s

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

buffers

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

completion_condition

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

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

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

handler

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

void handler(
  const boost::system::error_code& error, // Result of operation.
  std::size_t bytes_transferred           // Number of bytes written from the
                                          // buffers. If an error occurred,
                                          // this will be less than the sum
                                          // of the buffer sizes.
);

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

Example

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

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

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


PrevUpHomeNext

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




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



:: Главная :: async_write ::


реклама


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

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