Struct tokio::io::bsd::Aio

source · []
pub struct Aio<E> { /* private fields */ }
Available on FreeBSD and crate feature net only.
Expand description

Associates a POSIX AIO control block with the reactor that drives it.

Aio’s wrapped type must implement AioSource to be driven by the reactor.

The wrapped source may be accessed through the Aio via the Deref and DerefMut traits.

Clearing readiness

If Aio::poll_ready returns ready, but the consumer determines that the Source is not completely ready and must return to the Pending state, Aio::clear_ready may be used. This can be useful with lio_listio, which may generate a kevent when only a portion of the operations have completed.

Platforms

Only FreeBSD implements POSIX AIO with kqueue notification, so Aio is only available for that operating system.

Implementations

Creates a new Aio suitable for use with POSIX AIO functions.

It will be associated with the default reactor. The runtime is usually set implicitly when this function is called from a future driven by a Tokio runtime, otherwise runtime can be set explicitly with Runtime::enter function.

Creates a new Aio suitable for use with lio_listio.

It will be associated with the default reactor. The runtime is usually set implicitly when this function is called from a future driven by a Tokio runtime, otherwise runtime can be set explicitly with Runtime::enter function.

Indicates to Tokio that the source is no longer ready. The internal readiness flag will be cleared, and tokio will wait for the next edge-triggered readiness notification from the OS.

It is critical that this method not be called unless your code actually observes that the source is not ready. The OS must deliver a subsequent notification, or this source will block forever. It is equally critical that you do call this method if you resubmit the same structure to the kernel and poll it again.

This method is not very useful with AIO readiness, since each aiocb structure is typically only used once. It’s main use with lio_listio, which will sometimes send notification when only a portion of its elements are complete. In that case, the caller must call clear_ready before resubmitting it.

Destroy the Aio and return its inner source.

Polls for readiness. Either AIO or LIO counts.

This method returns:

  • Poll::Pending if the underlying operation is not complete, whether or not it completed successfully. This will be true if the OS is still processing it, or if it has not yet been submitted to the OS.
  • Poll::Ready(Ok(_)) if the underlying operation is complete.
  • Poll::Ready(Err(_)) if the reactor has been shutdown. This does not indicate that the underlying operation encountered an error.

When the method returns Poll::Pending, the Waker in the provided Context is scheduled to receive a wakeup when the underlying operation completes. Note that on multiple calls to poll_ready, only the Waker from the Context passed to the most recent call is scheduled to receive a wakeup.

Trait Implementations

Formats the value using the given formatter. Read more

The resulting type after dereferencing.

Dereferences the value.

Mutably dereferences the value.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more