=head1 NAME AnyEvent::IO::IOAIO - AnyEvent::IO backend based on IO::AIO =head1 SYNOPSIS use AnyEvent::IO; =head1 DESCRIPTION This is the L-based backend of L (via L). All I/O operations it implements are done asynchronously. =head1 FUNCTIONS =over 4 =cut package AnyEvent::IO::IOAIO; use AnyEvent (); BEGIN { AnyEvent::common_sense } our $VERSION = $AnyEvent::VERSION; package AnyEvent::IO; use IO::AIO 4.13 (); use AnyEvent::AIO (); our $MODEL = "AnyEvent::IO::IOAIO"; sub aio_load($$) { my ($cb, $data) = $_[1]; IO::AIO::aio_load $_[0], $data, sub { $cb->($_[0] >= 0 ? $data : ()) }; } sub aio_open($$$$) { my $cb = $_[3]; IO::AIO::aio_open $_[0], $_[1], $_[2], sub { $cb->($_[0] or ()) }; } sub aio_close($$) { my $cb = $_[1]; IO::AIO::aio_close $_[0], sub { $cb->($_[0] >= 0 ? 1 : ()) }; } sub aio_seek($$$$) { my ($cb) = $_[3]; IO::AIO::aio_seek $_[0], $_[1], $_[2], sub { $cb->($_[0] >= 0 ? $_[0] : ()) }; } sub aio_read($$$) { my ($cb, $data) = $_[2]; IO::AIO::aio_read $_[0], undef, $_[1], $data, 0, sub { $cb->($_[0] >= 0 ? $data : ()) }; } sub aio_write($$$) { my $cb = $_[2]; IO::AIO::aio_write $_[0], undef, (length $_[1]), $_[1], 0, sub { $cb->($_[0] >= 0 ? $_[0] : ()) }; } sub aio_truncate($$$) { my $cb = $_[2]; IO::AIO::aio_truncate $_[0], $_[1], sub { $cb->($_[0] ? () : 1) }; } sub aio_utime($$$$) { my $cb = $_[3]; IO::AIO::aio_utime $_[0], $_[1], $_[2], sub { $cb->($_[0] ? () : 1) }; } sub aio_chown($$$$) { my $cb = $_[3]; IO::AIO::aio_chown $_[0], $_[1], $_[2], sub { $cb->($_[0] ? () : 1) }; } sub aio_chmod($$$) { my $cb = $_[2]; IO::AIO::aio_chmod $_[0], $_[1], sub { $cb->($_[0] ? () : 1) }; } sub aio_stat($$) { my $cb = $_[1]; IO::AIO::aio_stat $_[0], sub { $cb->($_[0] ? () : 1) }; } sub aio_lstat($$) { my $cb = $_[1]; IO::AIO::aio_lstat $_[0], sub { $cb->($_[0] ? () : 1) } } sub aio_link($$$) { my $cb = $_[2]; IO::AIO::aio_link $_[0], $_[1], sub { $cb->($_[0] ? () : 1) }; } sub aio_symlink($$$) { my $cb = $_[2]; IO::AIO::aio_symlink $_[0], $_[1], sub { $cb->($_[0] ? () : 1) }; } sub aio_readlink($$) { my $cb = $_[1]; IO::AIO::aio_readlink $_[0], sub { $cb->(defined $_[0] ? $_[0] : ()) }; } sub aio_rename($$$) { my $cb = $_[2]; IO::AIO::aio_rename $_[0], $_[1], sub { $cb->($_[0] ? () : 1) }; } sub aio_unlink($$) { my $cb = $_[1]; IO::AIO::aio_unlink $_[0], sub { $cb->($_[0] ? () : 1) }; } sub aio_mkdir($$$) { my $cb = $_[2]; IO::AIO::aio_mkdir $_[0], $_[1], sub { $cb->($_[0] ? () : 1) }; } sub aio_rmdir($$) { my $cb = $_[1]; IO::AIO::aio_rmdir $_[0], sub { $cb->($_[0] ? () : 1) }; } sub aio_readdir($$) { my $cb = $_[1]; IO::AIO::aio_readdirx $_[0], IO::AIO::READDIR_DIRS_FIRST | IO::AIO::READDIR_STAT_ORDER, sub { $cb->($_[0] or ()); }; } =back =head1 SEE ALSO L, L. =head1 AUTHOR Marc Lehmann http://anyevent.schmorp.de =cut 1