NAME `IO::Async::Loop::Ppoll' - use `IO::Async' with `ppoll(2)' SYNOPSIS use IO::Async::Loop::Ppoll; my $loop = IO::Async::Loop::Ppoll->new(); $loop->add( ... ); $loop->add( IO::Async::Signal->new( name =< 'HUP', on_receipt => sub { ... }, ) ); $loop->loop_forever(); DESCRIPTION This subclass of `IO::Async::Loop::Poll' uses an `IO::Ppoll' object instead of a `IO::Poll' to perform read-ready and write-ready tests so that they can be mixed with signal handling. The `ppoll()' system call atomically switches the process's signal mask, performs a wait exactly as `poll()' would, then switches it back. This allows a process to block the signals it cares about, but switch in an empty signal mask during the poll, allowing it to handle file IO and signals concurrently. CONSTRUCTOR $loop = IO::Async::Loop::Ppoll->new( %args ) This function returns a new instance of a `IO::Async::Loop::Ppoll' object. It takes the following named arguments: `poll' The `IO::Ppoll' object to use for notification. Optional; if a value is not given, a new `IO::Ppoll' object will be constructed. METHODS As this is a subclass of IO::Async::Loop::Poll, all of its methods are inherited. Expect where noted below, all of the class's methods behave identically to `IO::Async::Loop::Poll'. $count = $loop->loop_once( $timeout ) This method calls the `poll()' method on the stored `IO::Ppoll' object, passing in the value of `$timeout', and processes the results of that call. It returns the total number of `IO::Async::Notifier' callbacks invoked, or `undef' if the underlying `poll()' method returned an error. If the `poll()' was interrupted by a signal, then 0 is returned instead. SEE ALSO * IO::Ppoll - Object interface to Linux's `ppoll()' call * IO::Async::Loop::Poll - a set using an `IO::Poll' object AUTHOR Paul Evans