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.