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.160 by root, Wed Jul 1 08:12:18 2009 UTC vs.
Revision 1.166 by root, Thu Nov 12 00:01:52 2009 UTC

186 186
187package IO::AIO; 187package IO::AIO;
188 188
189use Carp (); 189use Carp ();
190 190
191no warnings; 191use common::sense;
192use strict 'vars';
193 192
194use base 'Exporter'; 193use base 'Exporter';
195 194
196BEGIN { 195BEGIN {
197 our $VERSION = '3.261'; 196 our $VERSION = '3.3';
198 197
199 our @AIO_REQ = qw(aio_sendfile aio_read aio_write aio_open aio_close 198 our @AIO_REQ = qw(aio_sendfile aio_read aio_write aio_open aio_close
200 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx 199 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx
201 aio_scandir aio_symlink aio_readlink aio_sync aio_fsync 200 aio_scandir aio_symlink aio_readlink aio_sync aio_fsync
202 aio_fdatasync aio_sync_file_range aio_pathsync aio_readahead 201 aio_fdatasync aio_sync_file_range aio_pathsync aio_readahead
635 634
636=item aio_copy $srcpath, $dstpath, $callback->($status) 635=item aio_copy $srcpath, $dstpath, $callback->($status)
637 636
638Try to copy the I<file> (directories not supported as either source or 637Try to copy the I<file> (directories not supported as either source or
639destination) from C<$srcpath> to C<$dstpath> and call the callback with 638destination) from C<$srcpath> to C<$dstpath> and call the callback with
640the C<0> (error) or C<-1> ok. 639a status of C<0> (ok) or C<-1> (error, see C<$!>).
641 640
642This is a composite request that creates the destination file with 641This is a composite request that creates the destination file with
643mode 0200 and copies the contents of the source file into it using 642mode 0200 and copies the contents of the source file into it using
644C<aio_sendfile>, followed by restoring atime, mtime, access mode and 643C<aio_sendfile>, followed by restoring atime, mtime, access mode and
645uid/gid, in that order. 644uid/gid, in that order.
657 my $grp = aio_group $cb; 656 my $grp = aio_group $cb;
658 657
659 aioreq_pri $pri; 658 aioreq_pri $pri;
660 add $grp aio_open $src, O_RDONLY, 0, sub { 659 add $grp aio_open $src, O_RDONLY, 0, sub {
661 if (my $src_fh = $_[0]) { 660 if (my $src_fh = $_[0]) {
662 my @stat = stat $src_fh; # hmm, might bock over nfs? 661 my @stat = stat $src_fh; # hmm, might block over nfs?
663 662
664 aioreq_pri $pri; 663 aioreq_pri $pri;
665 add $grp aio_open $dst, O_CREAT | O_WRONLY | O_TRUNC, 0200, sub { 664 add $grp aio_open $dst, O_CREAT | O_WRONLY | O_TRUNC, 0200, sub {
666 if (my $dst_fh = $_[0]) { 665 if (my $dst_fh = $_[0]) {
667 aioreq_pri $pri; 666 aioreq_pri $pri;
714 713
715=item aio_move $srcpath, $dstpath, $callback->($status) 714=item aio_move $srcpath, $dstpath, $callback->($status)
716 715
717Try to move the I<file> (directories not supported as either source or 716Try to move the I<file> (directories not supported as either source or
718destination) from C<$srcpath> to C<$dstpath> and call the callback with 717destination) from C<$srcpath> to C<$dstpath> and call the callback with
719the C<0> (error) or C<-1> ok. 718a status of C<0> (ok) or C<-1> (error, see C<$!>).
720 719
721This is a composite request that tries to rename(2) the file first; if 720This is a composite request that tries to rename(2) the file first; if
722rename fails with C<EXDEV>, it copies the file with C<aio_copy> and, if 721rename fails with C<EXDEV>, it copies the file with C<aio_copy> and, if
723that is successful, unlinks the C<$srcpath>. 722that is successful, unlinks the C<$srcpath>.
724 723
958(E.g. rename). This might not work on all operating systems or have any 957(E.g. rename). This might not work on all operating systems or have any
959specific effect, but usually it makes sure that directory changes get 958specific effect, but usually it makes sure that directory changes get
960written to disc. It works for anything that can be opened for read-only, 959written to disc. It works for anything that can be opened for read-only,
961not just directories. 960not just directories.
962 961
962Future versions of this function might fall back to other methods when
963C<fsync> on the directory fails (such as calling C<sync>).
964
963Passes C<0> when everything went ok, and C<-1> on error. 965Passes C<0> when everything went ok, and C<-1> on error.
964 966
965=cut 967=cut
966 968
967sub aio_pathsync($;$) { 969sub aio_pathsync($;$) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines