1 | =head1 NAME |
1 | =head1 NAME |
2 | |
2 | |
3 | AnyEvent::AIO - truly asynchronous file and directrory I/O |
3 | AnyEvent::AIO - truly asynchronous file and directory I/O |
4 | |
4 | |
5 | =head1 SYNOPSIS |
5 | =head1 SYNOPSIS |
6 | |
6 | |
7 | use AnyEvent::AIO; |
7 | use AnyEvent::AIO; |
8 | use IO::AIO; |
8 | use IO::AIO; |
… | |
… | |
26 | |
26 | |
27 | =cut |
27 | =cut |
28 | |
28 | |
29 | package AnyEvent::AIO; |
29 | package AnyEvent::AIO; |
30 | |
30 | |
31 | use strict; |
31 | use common::sense; |
32 | no warnings; |
|
|
33 | |
32 | |
34 | use AnyEvent (); |
33 | use AnyEvent (); |
35 | use IO::AIO (); |
34 | use IO::AIO (); |
36 | |
35 | |
37 | use base Exporter::; |
36 | use base Exporter::; |
38 | |
37 | |
39 | our $VERSION = '1.0'; |
38 | our $VERSION = '1.1'; |
40 | our $WATCHER; |
39 | our $WATCHER; |
41 | |
40 | |
42 | $WATCHER = AnyEvent::post_detect { |
41 | my $guard = AnyEvent::post_detect { |
43 | if ($AnyEvent::MODEL eq "AnyEvent::Impl::EV") { |
|
|
44 | $WATCHER = EV::io (IO::AIO::poll_fileno, &EV::READ, \&IO::AIO::poll_cb); |
42 | $WATCHER = AE::io IO::AIO::poll_fileno, 0, \&IO::AIO::poll_cb; |
45 | } else { |
|
|
46 | our $FH; open $FH, "<&=" . IO::AIO::poll_fileno; |
|
|
47 | $WATCHER = AnyEvent->io (fh => $FH, poll => 'r', cb => \&IO::AIO::poll_cb); |
|
|
48 | } |
|
|
49 | }; |
43 | }; |
|
|
44 | $WATCHER ||= $guard; |
50 | |
45 | |
51 | IO::AIO::_on_next_submit \&AnyEvent::detect; |
46 | IO::AIO::_on_next_submit \&AnyEvent::detect; |
52 | |
47 | |
53 | =head1 SEE ALSO |
48 | =head1 SEE ALSO |
54 | |
49 | |