IO::Async::Loop::IO::Async - use IO::Async with IO::Async


 use IO::Async::Loop::IO::Async;

 my $loop = IO::Async::Loop::IO::Async->new();

 $loop->add( ... );

 $loop->add( IO::Async::Signal->new(
       name => 'HUP',
       on_receipt => sub { ... },
 ) );



This subclass of IO::Async::Loop uses another instance of an IO::Async::Loop object as its underlying implementation. While this at first appears to be pointless, this module distribution is not primarily intended to serve a useful purpose for end-users. Rather, it stands as a real code example, for authors of other modules to use for reference.

For IO::Async::Loop::* Authors

Authors of other subclasses to implement IO::Async::Loop subclasses may find this distribution useful as a template. By copying the code and replacing the contents of the various watch_* and unwatch_* methods, a Loop implementation can be built making use of some other event system or underlying kernel blocking primative.

For Authors of Other Event Systems

Authors of implementations in other event systems wishing to support running their event system on top of IO::Async may find this distribution useful to read a way to implement the various underlying behaviours, such as watching filehandles and timers. Examples in each of the watch_* and unwatch_* methods may be useful to demonstrate the sort of code that might be required to attach some other event system on top of IO::Async.


$loop = IO::Async::Loop::IO::Async->new()

This function returns a new instance of a IO::Async::Loop::IO::Async object.


$loop->parent_loop( $parent )

$parent = $loop->parent_loop

Accessor for the underlying IO::Async::Loop that this loop will use. If one is not provided by the time that loop_once is first invoked, one will be constructed using the normal IO::Async::Loop->new constructor. This method may be used to access it after that.


Paul Evans <>