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.273 by root, Fri Jun 23 22:33:06 2017 UTC vs.
Revision 1.276 by root, Fri Sep 22 05:24:41 2017 UTC

277 IO::AIO::idle_timeout $seconds 277 IO::AIO::idle_timeout $seconds
278 IO::AIO::max_outstanding $maxreqs 278 IO::AIO::max_outstanding $maxreqs
279 IO::AIO::nreqs 279 IO::AIO::nreqs
280 IO::AIO::nready 280 IO::AIO::nready
281 IO::AIO::npending 281 IO::AIO::npending
282 IO::AIO::min_fdlimit $nfd;
282 283
283 IO::AIO::sendfile $ofh, $ifh, $offset, $count 284 IO::AIO::sendfile $ofh, $ifh, $offset, $count
284 IO::AIO::fadvise $fh, $offset, $len, $advice 285 IO::AIO::fadvise $fh, $offset, $len, $advice
285 IO::AIO::mmap $scalar, $length, $prot, $flags[, $fh[, $offset]] 286 IO::AIO::mmap $scalar, $length, $prot, $flags[, $fh[, $offset]]
286 IO::AIO::munmap $scalar 287 IO::AIO::munmap $scalar
958 959
959Try to copy the I<file> (directories not supported as either source or 960Try to copy the I<file> (directories not supported as either source or
960destination) from C<$srcpath> to C<$dstpath> and call the callback with 961destination) from C<$srcpath> to C<$dstpath> and call the callback with
961a status of C<0> (ok) or C<-1> (error, see C<$!>). 962a status of C<0> (ok) or C<-1> (error, see C<$!>).
962 963
964Existing destination files will be truncated.
965
963This is a composite request that creates the destination file with 966This is a composite request that creates the destination file with
964mode 0200 and copies the contents of the source file into it using 967mode 0200 and copies the contents of the source file into it using
965C<aio_sendfile>, followed by restoring atime, mtime, access mode and 968C<aio_sendfile>, followed by restoring atime, mtime, access mode and
966uid/gid, in that order. 969uid/gid, in that order.
967 970
2008This is a very bad function to use in interactive programs because it 2011This is a very bad function to use in interactive programs because it
2009blocks, and a bad way to reduce concurrency because it is inexact: Better 2012blocks, and a bad way to reduce concurrency because it is inexact: Better
2010use an C<aio_group> together with a feed callback. 2013use an C<aio_group> together with a feed callback.
2011 2014
2012Its main use is in scripts without an event loop - when you want to stat 2015Its main use is in scripts without an event loop - when you want to stat
2013a lot of files, you can write somehting like this: 2016a lot of files, you can write something like this:
2014 2017
2015 IO::AIO::max_outstanding 32; 2018 IO::AIO::max_outstanding 32;
2016 2019
2017 for my $path (...) { 2020 for my $path (...) {
2018 aio_stat $path , ...; 2021 aio_stat $path , ...;
2063some "Advanced I/O" function not available to in Perl, without going the 2066some "Advanced I/O" function not available to in Perl, without going the
2064"Asynchronous I/O" route. Many of these have an asynchronous C<aio_*> 2067"Asynchronous I/O" route. Many of these have an asynchronous C<aio_*>
2065counterpart. 2068counterpart.
2066 2069
2067=over 4 2070=over 4
2071
2072=item $numfd = IO::AIO::get_fdlimit
2073
2074Tries to find the current file descriptor limit and returns it, or
2075C<undef> and sets C<$!> in case of an error. The limit is one larger than
2076the highest valid file descriptor number.
2077
2078=item IO::AIO::min_fdlimit [$numfd]
2079
2080Try to increase the current file descriptor limit(s) to at least C<$numfd>
2081by changing the soft or hard file descriptor resource limit. If C<$numfd>
2082is missing, it will try to set a very high limit, although this is not
2083recommended when you know the actual minimum that you require.
2084
2085If the limit cannot be raised enough, the function makes a best-effort
2086attempt to increase the limit as much as possible, using various
2087tricks, while still failing. You can query the resulting limit using
2088C<IO::AIO::get_fdlimit>.
2089
2090If an error occurs, returns C<undef> and sets C<$!>, otherwise returns
2091true.
2068 2092
2069=item IO::AIO::sendfile $ofh, $ifh, $offset, $count 2093=item IO::AIO::sendfile $ofh, $ifh, $offset, $count
2070 2094
2071Calls the C<eio_sendfile_sync> function, which is like C<aio_sendfile>, 2095Calls the C<eio_sendfile_sync> function, which is like C<aio_sendfile>,
2072but is blocking (this makes most sense if you know the input data is 2096but is blocking (this makes most sense if you know the input data is

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines