NAME

Linux::Event::Proactor::Backend::Uring - io_uring backend for Linux::Event::Proactor

SYNOPSIS

# Usually constructed internally by Linux::Event::Proactor.
my $loop = Linux::Event::Loop->new(
  model   => 'proactor',
  backend => 'uring',
);

DESCRIPTION

Linux::Event::Proactor::Backend::Uring is the real completion backend for Linux::Event::Proactor. It submits reads, writes, socket operations, timers, and cancellation requests through IO::Uring.

The backend preserves the core proactor invariants by leaving user callback execution to the engine. It records pending operations by backend token and hands normalized success or failure information back to the owning loop.

CONSTRUCTOR OPTIONS

The backend is normally constructed internally. Recognized options include:

  • submit_batch_size

    Optional submission batching threshold. When non-zero, the backend flushes the ring after this many queued submissions.

  • cqe_entries

    Optional IO::Uring completion queue size tuning.

  • sqpoll

    Optional IO::Uring SQPOLL mode toggle.

SUPPORTED OPERATIONS

This backend currently implements:

  • read

  • write

  • recv

  • send

  • accept

  • connect

  • shutdown

  • close

  • timeout

  • cancel

ERROR HANDLING

io_uring completion results use negative errno values for failures. This backend normalizes those into positive errno values and uses Linux::Event::Error objects through the owning proactor.

PERFORMANCE NOTES

Submission batching is intentionally optional. The default favors simplicity and predictable semantics. When enabled, batching can improve throughput under heavy operation loads by reducing ring submissions.

SEE ALSO

Linux::Event::Proactor, Linux::Event::Proactor::Backend, IO::Uring