File Coverage

blib/lib/AnyEvent/IO/IOAIO.pm
Criterion Covered Total %
statement 5 7 71.4
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 8 10 80.0


line stmt bran cond sub pod time code
1             =head1 NAME
2              
3             AnyEvent::IO::IOAIO - AnyEvent::IO backend based on IO::AIO
4              
5             =head1 SYNOPSIS
6              
7             use AnyEvent::IO;
8              
9             =head1 DESCRIPTION
10              
11             This is the L-based backend of L (via
12             L). All I/O operations it implements are done
13             asynchronously.
14              
15             =head1 FUNCTIONS
16              
17             =over 4
18              
19             =cut
20              
21             package AnyEvent::IO::IOAIO;
22              
23 1     1   1363 use AnyEvent (); BEGIN { AnyEvent::common_sense }
  1     1   20  
  1         26  
  1         4  
24             our $VERSION = $AnyEvent::VERSION;
25              
26             package AnyEvent::IO;
27              
28 1     1   196 use IO::AIO 4.13 ();
  0            
  0            
29             use AnyEvent::AIO ();
30              
31             our $MODEL = "AnyEvent::IO::IOAIO";
32              
33             sub aio_load($$) {
34             my ($cb, $data) = $_[1];
35             IO::AIO::aio_load $_[0], $data, sub { $cb->($_[0] >= 0 ? $data : ()) };
36             }
37              
38             sub aio_open($$$$) {
39             my $cb = $_[3];
40             IO::AIO::aio_open $_[0], $_[1], $_[2], sub { $cb->($_[0] or ()) };
41             }
42              
43             sub aio_close($$) {
44             my $cb = $_[1];
45             IO::AIO::aio_close $_[0], sub { $cb->($_[0] >= 0 ? 1 : ()) };
46             }
47              
48             sub aio_seek($$$$) {
49             my ($cb) = $_[3];
50             IO::AIO::aio_seek $_[0], $_[1], $_[2], sub { $cb->($_[0] >= 0 ? $_[0] : ()) };
51             }
52              
53             sub aio_read($$$) {
54             my ($cb, $data) = $_[2];
55             IO::AIO::aio_read $_[0], undef, $_[1], $data, 0, sub { $cb->($_[0] >= 0 ? $data : ()) };
56             }
57              
58             sub aio_write($$$) {
59             my $cb = $_[2];
60             IO::AIO::aio_write $_[0], undef, (length $_[1]), $_[1], 0,
61             sub { $cb->($_[0] >= 0 ? $_[0] : ()) };
62             }
63              
64             sub aio_truncate($$$) {
65             my $cb = $_[2];
66             IO::AIO::aio_truncate $_[0], $_[1], sub { $cb->($_[0] ? () : 1) };
67             }
68              
69             sub aio_utime($$$$) {
70             my $cb = $_[3];
71             IO::AIO::aio_utime $_[0], $_[1], $_[2], sub { $cb->($_[0] ? () : 1) };
72             }
73              
74             sub aio_chown($$$$) {
75             my $cb = $_[3];
76             IO::AIO::aio_chown $_[0], $_[1], $_[2], sub { $cb->($_[0] ? () : 1) };
77             }
78              
79             sub aio_chmod($$$) {
80             my $cb = $_[2];
81             IO::AIO::aio_chmod $_[0], $_[1], sub { $cb->($_[0] ? () : 1) };
82             }
83              
84             sub aio_stat($$) {
85             my $cb = $_[1];
86             IO::AIO::aio_stat $_[0], sub { $cb->($_[0] ? () : 1) };
87             }
88              
89             sub aio_lstat($$) {
90             my $cb = $_[1];
91             IO::AIO::aio_lstat $_[0], sub { $cb->($_[0] ? () : 1) }
92             }
93              
94             sub aio_link($$$) {
95             my $cb = $_[2];
96             IO::AIO::aio_link $_[0], $_[1], sub { $cb->($_[0] ? () : 1) };
97             }
98              
99             sub aio_symlink($$$) {
100             my $cb = $_[2];
101             IO::AIO::aio_symlink $_[0], $_[1], sub { $cb->($_[0] ? () : 1) };
102             }
103              
104             sub aio_readlink($$) {
105             my $cb = $_[1];
106             IO::AIO::aio_readlink $_[0], sub { $cb->(defined $_[0] ? $_[0] : ()) };
107             }
108              
109             sub aio_rename($$$) {
110             my $cb = $_[2];
111             IO::AIO::aio_rename $_[0], $_[1], sub { $cb->($_[0] ? () : 1) };
112             }
113              
114             sub aio_unlink($$) {
115             my $cb = $_[1];
116             IO::AIO::aio_unlink $_[0], sub { $cb->($_[0] ? () : 1) };
117             }
118              
119             sub aio_mkdir($$$) {
120             my $cb = $_[2];
121             IO::AIO::aio_mkdir $_[0], $_[1], sub { $cb->($_[0] ? () : 1) };
122             }
123              
124             sub aio_rmdir($$) {
125             my $cb = $_[1];
126             IO::AIO::aio_rmdir $_[0], sub { $cb->($_[0] ? () : 1) };
127             }
128              
129             sub aio_readdir($$) {
130             my $cb = $_[1];
131              
132             IO::AIO::aio_readdirx $_[0], IO::AIO::READDIR_DIRS_FIRST | IO::AIO::READDIR_STAT_ORDER,
133             sub { $cb->($_[0] or ()); };
134             }
135              
136             =back
137              
138             =head1 SEE ALSO
139              
140             L, L.
141              
142             =head1 AUTHOR
143              
144             Marc Lehmann
145             http://anyevent.schmorp.de
146              
147             =cut
148              
149             1
150