ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/AIO.pm
(Generate patch)

Comparing IO-AIO/AIO.pm (file contents):
Revision 1.240 by root, Mon Dec 17 06:18:39 2012 UTC vs.
Revision 1.243 by root, Sat Sep 7 23:18:23 2013 UTC

68=head2 EXAMPLE 68=head2 EXAMPLE
69 69
70This is a simple example that uses the EV module and loads 70This is a simple example that uses the EV module and loads
71F</etc/passwd> asynchronously: 71F</etc/passwd> asynchronously:
72 72
73 use Fcntl;
74 use EV; 73 use EV;
75 use IO::AIO; 74 use IO::AIO;
76 75
77 # register the IO::AIO callback with EV 76 # register the IO::AIO callback with EV
78 my $aio_w = EV::io IO::AIO::poll_fileno, EV::READ, \&IO::AIO::poll_cb; 77 my $aio_w = EV::io IO::AIO::poll_fileno, EV::READ, \&IO::AIO::poll_cb;
168use common::sense; 167use common::sense;
169 168
170use base 'Exporter'; 169use base 'Exporter';
171 170
172BEGIN { 171BEGIN {
173 our $VERSION = '4.18'; 172 our $VERSION = '4.19';
174 173
175 our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close 174 our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close
176 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx 175 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx
177 aio_scandir aio_symlink aio_readlink aio_realpath aio_sync 176 aio_scandir aio_symlink aio_readlink aio_realpath aio_sync
178 aio_fsync aio_syncfs aio_fdatasync aio_sync_file_range aio_allocate 177 aio_fsync aio_syncfs aio_fdatasync aio_sync_file_range aio_allocate
795=item aio_rename $srcpath, $dstpath, $callback->($status) 794=item aio_rename $srcpath, $dstpath, $callback->($status)
796 795
797Asynchronously rename the object at C<$srcpath> to C<$dstpath>, just as 796Asynchronously rename the object at C<$srcpath> to C<$dstpath>, just as
798rename(2) and call the callback with the result code. 797rename(2) and call the callback with the result code.
799 798
799On systems that support the AIO::WD working directory abstraction
800natively, the case C<[$wd, "."]> as C<$srcpath> is specialcased - instead
801of failing, C<rename> is called on the absolute path of C<$wd>.
802
800 803
801=item aio_mkdir $pathname, $mode, $callback->($status) 804=item aio_mkdir $pathname, $mode, $callback->($status)
802 805
803Asynchronously mkdir (create) a directory and call the callback with 806Asynchronously mkdir (create) a directory and call the callback with
804the result code. C<$mode> will be modified by the umask at the time the 807the result code. C<$mode> will be modified by the umask at the time the
807 810
808=item aio_rmdir $pathname, $callback->($status) 811=item aio_rmdir $pathname, $callback->($status)
809 812
810Asynchronously rmdir (delete) a directory and call the callback with the 813Asynchronously rmdir (delete) a directory and call the callback with the
811result code. 814result code.
815
816On systems that support the AIO::WD working directory abstraction
817natively, the case C<[$wd, "."]> is specialcased - instead of failing,
818C<rmdir> is called on the absolute path of C<$wd>.
812 819
813 820
814=item aio_readdir $pathname, $callback->($entries) 821=item aio_readdir $pathname, $callback->($entries)
815 822
816Unlike the POSIX call of the same name, C<aio_readdir> reads an entire 823Unlike the POSIX call of the same name, C<aio_readdir> reads an entire
1572 1579
1573 aio_realpath $wd, sub { 1580 aio_realpath $wd, sub {
1574 warn "path is $_[0]\n"; 1581 warn "path is $_[0]\n";
1575 }; 1582 };
1576 1583
1584Currently, C<aio_statvfs> always, and C<aio_rename> and C<aio_rmdir>
1585sometimes, fall back to using an absolue path.
1577 1586
1578=head2 IO::AIO::REQ CLASS 1587=head2 IO::AIO::REQ CLASS
1579 1588
1580All non-aggregate C<aio_*> functions return an object of this class when 1589All non-aggregate C<aio_*> functions return an object of this class when
1581called in non-void context. 1590called in non-void context.
2107=item IO::AIO::tee $r_fh, $w_fh, $length, $flags 2116=item IO::AIO::tee $r_fh, $w_fh, $length, $flags
2108 2117
2109Calls the GNU/Linux C<tee(2)> syscall, see it's manpage and the 2118Calls the GNU/Linux C<tee(2)> syscall, see it's manpage and the
2110description for C<IO::AIO::splice> above for details. 2119description for C<IO::AIO::splice> above for details.
2111 2120
2121=item $actual_size = IO::AIO::pipesize $r_fh[, $new_size]
2122
2123Attempts to query or change the pipe buffer size. Obviously works only
2124on pipes, and currently works only on GNU/Linux systems, and fails with
2125C<-1>/C<ENOSYS> everywhere else. If anybody knows how to influence pipe buffer
2126size on other systems, drop me a note.
2127
2112=back 2128=back
2113 2129
2114=cut 2130=cut
2115 2131
2116min_parallel 8; 2132min_parallel 8;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines