Sha256: 80be2449705f1a7dc285b30a55935430921baaf7a440e7f79a0126a2879ea29a

Contents?: true

Size: 1.48 KB

Versions: 24

Compression:

Stored size: 1.48 KB

Contents

[/
 / Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
 /
 / Distributed under the Boost Software License, Version 1.0. (See accompanying
 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 /]

[section:reactor Reactor-Style Operations]

Sometimes a program must be integrated with a third-party library that wants to
perform the I/O operations itself. To facilitate this, Asio includes
synchronous and asynchronous operations that may be used to wait for a socket
to become ready to read, ready to write, or to have a pending error condition.

As an example, to perform a non-blocking read something like the following may
be used:

  ip::tcp::socket socket(my_io_context);
  ...
  socket.non_blocking(true);
  ...
  socket.async_wait(ip::tcp::socket::wait_read, read_handler);
  ...
  void read_handler(asio::error_code ec)
  {
    if (!ec)
    {
      std::vector<char> buf(socket.available());
      socket.read_some(buffer(buf));
    }
  }
  
These operations are supported for sockets on all platforms, and for the POSIX
stream-oriented descriptor classes.

[heading See Also]

[link asio.reference.basic_socket.wait basic_socket::wait()],
[link asio.reference.basic_socket.async_wait basic_socket::async_wait()],
[link asio.reference.basic_socket.non_blocking basic_socket::non_blocking()],
[link asio.reference.basic_socket.native_non_blocking basic_socket::native_non_blocking()],
[link asio.examples.cpp03_examples.nonblocking nonblocking example].

[endsect]

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
couchbase-3.0.0-universal-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.beta.1-universal-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.beta.1 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.5-x86_64-linux ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.5-universal-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.5-x86_64-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.5 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.4-x86_64-linux ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.4-x86_64-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.4-universal-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.4 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.3-x86_64-linux ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.3-x86_64-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.3-universal-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.3 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.2-x86_64-linux ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.2-x86_64-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.2-universal-darwin-19 ext/third_party/asio/asio/src/doc/overview/reactor.qbk
couchbase-3.0.0.alpha.2 ext/third_party/asio/asio/src/doc/overview/reactor.qbk