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

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext

Iterator connect token requirements

An iterator connect token is a completion token for completion signature void(error_code, Iterator), where the type Iterator is used in the corresponding async_connect() function.

Examples

A free function as an iterator connect token:

void connect_handler(
    const boost::system::error_code& ec,
    boost::asio::ip::tcp::resolver::iterator iterator)
{
  ...
}

An iterator connect token function object:

struct connect_handler
{
  ...
  template <typename Iterator>
  void operator()(
      const boost::system::error_code& ec,
      Iterator iterator)
  {
    ...
  }
  ...
};

A lambda as an iterator connect token:

boost::asio::async_connect(...,
    [](const boost::system::error_code& ec,
      boost::asio::ip::tcp::resolver::iterator iterator)
    {
      ...
    });

A non-static class member function adapted to an iterator connect token using std::bind():

void my_class::connect_handler(
    const boost::system::error_code& ec,
    boost::asio::ip::tcp::resolver::iterator iterator)
{
  ...
}
...
boost::asio::async_connect(...,
    std::bind(&my_class::connect_handler,
      this, std::placeholders::_1,
      std::placeholders::_2));

A non-static class member function adapted to an iterator connect token using boost::bind():

void my_class::connect_handler(
    const boost::system::error_code& ec,
    boost::asio::ip::tcp::resolver::iterator iterator)
{
  ...
}
...
boost::asio::async_connect(...,
    boost::bind(&my_class::connect_handler,
      this, boost::asio::placeholders::error,
      boost::asio::placeholders::iterator));

Using use_future as an iterator connect token:

std::future<boost::asio::ip::tcp::resolver::iterator> f =
  boost::asio::async_connect(..., boost::asio::use_future);
...
try
{
  boost::asio::ip::tcp::resolver::iterator i = f.get();
  ...
}
catch (const system_error& e)
{
  ...
}

Using use_awaitable as an iterator connect token:

boost::asio::awaitable<void> my_coroutine()
{
  try
  {
    ...
    boost::asio::ip::tcp::resolver::iterator i =
      co_await boost::asio::async_connect(
          ..., boost::asio::use_awaitable);
    ...
  }
  catch (const system_error& e)
  {
    ...
  }
}

PrevUpHomeNext