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.189 by root, Sun Mar 27 10:26:08 2011 UTC vs.
Revision 1.194 by root, Fri May 27 00:44:49 2011 UTC

168use common::sense; 168use common::sense;
169 169
170use base 'Exporter'; 170use base 'Exporter';
171 171
172BEGIN { 172BEGIN {
173 our $VERSION = '3.8'; 173 our $VERSION = '3.9';
174 174
175 our @AIO_REQ = qw(aio_sendfile aio_read aio_write aio_open aio_close 175 our @AIO_REQ = qw(aio_sendfile aio_read aio_write aio_open aio_close
176 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx 176 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx
177 aio_scandir aio_symlink aio_readlink aio_sync aio_fsync 177 aio_scandir aio_symlink aio_readlink aio_sync aio_fsync
178 aio_fdatasync aio_sync_file_range aio_pathsync aio_readahead 178 aio_fdatasync aio_sync_file_range aio_pathsync aio_readahead
368 } else { 368 } else {
369 die "open failed: $!\n"; 369 die "open failed: $!\n";
370 } 370 }
371 }; 371 };
372 372
373In addition to all the common open modes/flags (C<O_RDONLY>, C<O_WRONLY>,
374C<O_RDWR>, C<O_CREAT>, C<O_TRUNC>, C<O_EXCL> and C<O_APPEND>), the
375following POSIX and non-POSIX constants are available (missing ones on
376your system are, as usual, C<0>):
377
378C<O_ASYNC>, C<O_DIRECT>, C<O_NOATIME>, C<O_CLOEXEC>, C<O_NOCTTY>, C<O_NOFOLLOW>,
379C<O_NONBLOCK>, C<O_EXEC>, C<O_SEARCH>, C<O_DIRECTORY>, C<O_DSYNC>,
380C<O_RSYNC>, C<O_SYNC> and C<O_TTY_INIT>.
381
373 382
374=item aio_close $fh, $callback->($status) 383=item aio_close $fh, $callback->($status)
375 384
376Asynchronously close a file and call the callback with the result 385Asynchronously close a file and call the callback with the result
377code. 386code.
668 677
669=over 4 678=over 4
670 679
671=item IO::AIO::READDIR_DENTS 680=item IO::AIO::READDIR_DENTS
672 681
673When this flag is off, then the callback gets an arrayref with of names 682When this flag is off, then the callback gets an arrayref consisting of
674only (as with C<aio_readdir>), otherwise it gets an arrayref with 683names only (as with C<aio_readdir>), otherwise it gets an arrayref with
675C<[$name, $type, $inode]> arrayrefs, each describing a single directory 684C<[$name, $type, $inode]> arrayrefs, each describing a single directory
676entry in more detail. 685entry in more detail.
677 686
678C<$name> is the name of the entry. 687C<$name> is the name of the entry.
679 688
692systems that do not deliver the inode information. 701systems that do not deliver the inode information.
693 702
694=item IO::AIO::READDIR_DIRS_FIRST 703=item IO::AIO::READDIR_DIRS_FIRST
695 704
696When this flag is set, then the names will be returned in an order where 705When this flag is set, then the names will be returned in an order where
697likely directories come first. This is useful when you need to quickly 706likely directories come first, in optimal stat order. This is useful when
698find directories, or you want to find all directories while avoiding to 707you need to quickly find directories, or you want to find all directories
699stat() each entry. 708while avoiding to stat() each entry.
700 709
701If the system returns type information in readdir, then this is used 710If the system returns type information in readdir, then this is used
702to find directories directly. Otherwise, likely directories are files 711to find directories directly. Otherwise, likely directories are names
703beginning with ".", or otherwise files with no dots, of which files with 712beginning with ".", or otherwise names with no dots, of which names with
704short names are tried first. 713short names are tried first.
705 714
706=item IO::AIO::READDIR_STAT_ORDER 715=item IO::AIO::READDIR_STAT_ORDER
707 716
708When this flag is set, then the names will be returned in an order 717When this flag is set, then the names will be returned in an order
1406 1415
1407See C<poll_cb> for an example. 1416See C<poll_cb> for an example.
1408 1417
1409=item IO::AIO::poll_cb 1418=item IO::AIO::poll_cb
1410 1419
1411Process some outstanding events on the result pipe. You have to call this 1420Process some outstanding events on the result pipe. You have to call
1412regularly. Returns C<0> if all events could be processed, or C<-1> if it 1421this regularly. Returns C<0> if all events could be processed (or there
1413returned earlier for whatever reason. Returns immediately when no events 1422were no events to process), or C<-1> if it returned earlier for whatever
1414are outstanding. The amount of events processed depends on the settings of 1423reason. Returns immediately when no events are outstanding. The amount of
1415C<IO::AIO::max_poll_req> and C<IO::AIO::max_poll_time>. 1424events processed depends on the settings of C<IO::AIO::max_poll_req> and
1425C<IO::AIO::max_poll_time>.
1416 1426
1417If not all requests were processed for whatever reason, the filehandle 1427If not all requests were processed for whatever reason, the filehandle
1418will still be ready when C<poll_cb> returns, so normally you don't have to 1428will still be ready when C<poll_cb> returns, so normally you don't have to
1419do anything special to have it called later. 1429do anything special to have it called later.
1430
1431Apart from calling C<IO::AIO::poll_cb> when the event filehandle becomes
1432ready, it can be beneficial to call this function from loops which submit
1433a lot of requests, to make sure the results get processed when they become
1434available and not just when the loop is finished and the event loop takes
1435over again. This function returns very fast when there are no outstanding
1436requests.
1420 1437
1421Example: Install an Event watcher that automatically calls 1438Example: Install an Event watcher that automatically calls
1422IO::AIO::poll_cb with high priority (more examples can be found in the 1439IO::AIO::poll_cb with high priority (more examples can be found in the
1423SYNOPSIS section, at the top of this document): 1440SYNOPSIS section, at the top of this document):
1424 1441

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines