use
AnyEvent (); BEGIN { AnyEvent::common_sense }
our
$VERSION
=
$AnyEvent::VERSION
;
our
$MODEL
=
"AnyEvent::IO::Perl"
;
sub
aio_load($$) {
my
(
$path
,
$cb
,
$fh
,
$data
) =
@_
;
$cb
->(
(
open
$fh
,
"<:raw:perlio"
,
$path
and
stat
$fh
and (-s _) ==
sysread
$fh
,
$data
, -s _)
?
$data
: ()
);
}
sub
aio_open($$$$) {
sysopen
my
$fh
,
$_
[0],
$_
[1],
$_
[2]
or
return
$_
[3]();
$_
[3](
$fh
)
}
sub
aio_close($$) {
$_
[1](
close
$_
[0]);
}
sub
aio_seek($$$$) {
my
$data
;
$_
[3](
sysseek
$_
[0],
$_
[1],
$_
[2] or ());
}
sub
aio_read($$$) {
my
$data
;
$_
[2]( (
defined
sysread
$_
[0],
$data
,
$_
[1]) ?
$data
: () );
}
sub
aio_write($$$) {
my
$res
=
syswrite
$_
[0],
$_
[1];
$_
[2](
defined
$res
?
$res
: ());
}
sub
aio_truncate($$$) {
$_
[2](
truncate
$_
[0],
$_
[1] or ());
}
sub
aio_utime($$$$) {
$_
[3](
utime
$_
[1],
$_
[2],
$_
[0] or ());
}
sub
aio_chown($$$$) {
$_
[3](
chown
defined
$_
[1] ?
$_
[1] : -1,
defined
$_
[2] ?
$_
[2] : -1,
$_
[0] or ());
}
sub
aio_chmod($$$) {
$_
[2](
chmod
$_
[1],
$_
[0] or ());
}
sub
aio_stat($$) {
$_
[1](
stat
$_
[0]);
}
sub
aio_lstat($$) {
$_
[1](
lstat
$_
[0]);
}
sub
aio_link($$$) {
$_
[2](
link
$_
[0],
$_
[1] or ());
}
sub
aio_symlink($$$) {
$_
[2](
symlink
$_
[0],
$_
[1] or ());
}
sub
aio_readlink($$) {
my
$res
=
readlink
$_
[0];
$_
[1](
defined
$res
?
$res
: ());
}
sub
aio_rename($$$) {
$_
[2](
rename
$_
[0],
$_
[1] or ());
}
sub
aio_unlink($$) {
$_
[1](
unlink
$_
[0] or ());
}
sub
aio_mkdir($$$) {
$_
[2](
mkdir
$_
[0],
$_
[1] or ());
}
sub
aio_rmdir($$) {
$_
[1](
rmdir
$_
[0] or ());
}
sub
aio_readdir($$) {
my
(
$fh
,
@res
);
opendir
$fh
,
$_
[0]
or
return
$_
[1]();
@res
=
grep
!/^\.\.?$/,
readdir
$fh
;
$_
[1]((
closedir
$fh
) ? \
@res
: ());
}
1