NAME
Linux::Event::Watcher - Mutable watcher handle for Linux::Event::Loop
SYNOPSIS
use v5.36;
use Linux::Event;
my $loop = Linux::Event->new;
my $conn = My::Conn->new(...);
my $w = $loop->watch($fh,
read => \&My::Conn::on_read,
write => \&My::Conn::on_write,
error => \&My::Conn::on_error, # optional
data => $conn, # optional
);
$w->disable_write;
# later...
$w->enable_write;
# stop watching (does not close the fh)
$w->cancel;
DESCRIPTION
A watcher is a lightweight mutable handle owned by the loop. It stores callbacks, enable/disable state, and optional user data. The loop manages backend polling and dispatch.
Watchers do not own the underlying filehandle; user code is responsible for closing resources. Recommended teardown order is $w->cancel; close $fh;.
METHODS
loop / fh / fd
Accessors for the owning loop, the watched filehandle, and its file descriptor.
data
Get/set the user data slot:
my $data = $w->data;
$w->data($new);
on_read / on_write / on_error
Install or replace handlers. Passing undef removes the handler and disables it.
enable_read / disable_read =head2 enable_write / disable_write =head2 enable_error / disable_error
Toggle dispatch. Interest masks are inferred from installed handlers and enable state. Note: epoll reports errors regardless of interest; enable/disable only controls dispatch of error.
edge_triggered / oneshot
Advanced epoll behaviors. These update the backend registration immediately.
cancel
Remove the watcher from the loop/backend. This operation is idempotent.
CALLBACK SIGNATURES
Handlers are invoked as:
read => sub ($loop, $fh, $watcher) { ... }
write => sub ($loop, $fh, $watcher) { ... }
error => sub ($loop, $fh, $watcher) { ... }
DISPATCH SEMANTICS
On EPOLLERR, the loop calls error first (if installed+enabled) and returns. If no error handler is installed, EPOLLERR behaves like both readable and writable.
On EPOLLHUP, read readiness is triggered (EOF detection via read() returning 0).
VERSION
This document describes Linux::Event::Watcher version 0.006.
AUTHOR
Joshua S. Day
LICENSE
Same terms as Perl itself.