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

Comparing IO-AIO/README (file contents):
Revision 1.31 by root, Thu May 29 03:35:03 2008 UTC vs.
Revision 1.32 by root, Thu Oct 2 11:35:03 2008 UTC

175 All the "aio_*" calls are more or less thin wrappers around the syscall 175 All the "aio_*" calls are more or less thin wrappers around the syscall
176 with the same name (sans "aio_"). The arguments are similar or 176 with the same name (sans "aio_"). The arguments are similar or
177 identical, and they all accept an additional (and optional) $callback 177 identical, and they all accept an additional (and optional) $callback
178 argument which must be a code reference. This code reference will get 178 argument which must be a code reference. This code reference will get
179 called with the syscall return code (e.g. most syscalls return -1 on 179 called with the syscall return code (e.g. most syscalls return -1 on
180 error, unlike perl, which usually delivers "false") as it's sole 180 error, unlike perl, which usually delivers "false") as its sole argument
181 argument when the given syscall has been executed asynchronously. 181 after the given syscall has been executed asynchronously.
182 182
183 All functions expecting a filehandle keep a copy of the filehandle 183 All functions expecting a filehandle keep a copy of the filehandle
184 internally until the request has finished. 184 internally until the request has finished.
185 185
186 All functions return request objects of type IO::AIO::REQ that allow 186 All functions return request objects of type IO::AIO::REQ that allow
199 the user environment, d) use Glib::filename_from_unicode on unicode 199 the user environment, d) use Glib::filename_from_unicode on unicode
200 filenames or e) use something else to ensure your scalar has the correct 200 filenames or e) use something else to ensure your scalar has the correct
201 contents. 201 contents.
202 202
203 This works, btw. independent of the internal UTF-8 bit, which IO::AIO 203 This works, btw. independent of the internal UTF-8 bit, which IO::AIO
204 handles correctly wether it is set or not. 204 handles correctly whether it is set or not.
205 205
206 $prev_pri = aioreq_pri [$pri] 206 $prev_pri = aioreq_pri [$pri]
207 Returns the priority value that would be used for the next request 207 Returns the priority value that would be used for the next request
208 and, if $pri is given, sets the priority for the next aio request. 208 and, if $pri is given, sets the priority for the next aio request.
209 209
451 aio_copy $srcpath, $dstpath, $callback->($status) 451 aio_copy $srcpath, $dstpath, $callback->($status)
452 Try to copy the *file* (directories not supported as either source 452 Try to copy the *file* (directories not supported as either source
453 or destination) from $srcpath to $dstpath and call the callback with 453 or destination) from $srcpath to $dstpath and call the callback with
454 the 0 (error) or -1 ok. 454 the 0 (error) or -1 ok.
455 455
456 This is a composite request that it creates the destination file 456 This is a composite request that creates the destination file with
457 with mode 0200 and copies the contents of the source file into it 457 mode 0200 and copies the contents of the source file into it using
458 using "aio_sendfile", followed by restoring atime, mtime, access 458 "aio_sendfile", followed by restoring atime, mtime, access mode and
459 mode and uid/gid, in that order. 459 uid/gid, in that order.
460 460
461 If an error occurs, the partial destination file will be unlinked, 461 If an error occurs, the partial destination file will be unlinked,
462 if possible, except when setting atime, mtime, access mode and 462 if possible, except when setting atime, mtime, access mode and
463 uid/gid, where errors are being ignored. 463 uid/gid, where errors are being ignored.
464 464
544 If this call isn't available because your OS lacks it or it couldn't 544 If this call isn't available because your OS lacks it or it couldn't
545 be detected, it will be emulated by calling "fsync" instead. 545 be detected, it will be emulated by calling "fsync" instead.
546 546
547 aio_pathsync $path, $callback->($status) 547 aio_pathsync $path, $callback->($status)
548 This request tries to open, fsync and close the given path. This is 548 This request tries to open, fsync and close the given path. This is
549 a composite request intended tosync directories after directory 549 a composite request intended to sync directories after directory
550 operations (E.g. rename). This might not work on all operating 550 operations (E.g. rename). This might not work on all operating
551 systems or have any specific effect, but usually it makes sure that 551 systems or have any specific effect, but usually it makes sure that
552 directory changes get written to disc. It works for anything that 552 directory changes get written to disc. It works for anything that
553 can be opened for read-only, not just directories. 553 can be opened for read-only, not just directories.
554 554
658 Their lifetime, simplified, looks like this: when they are empty, they 658 Their lifetime, simplified, looks like this: when they are empty, they
659 will finish very quickly. If they contain only requests that are in the 659 will finish very quickly. If they contain only requests that are in the
660 "done" state, they will also finish. Otherwise they will continue to 660 "done" state, they will also finish. Otherwise they will continue to
661 exist. 661 exist.
662 662
663 That means after creating a group you have some time to add requests. 663 That means after creating a group you have some time to add requests
664 And in the callbacks of those requests, you can add further requests to 664 (precisely before the callback has been invoked, which is only done
665 the group. And only when all those requests have finished will the the 665 within the "poll_cb"). And in the callbacks of those requests, you can
666 group itself finish. 666 add further requests to the group. And only when all those requests have
667 finished will the the group itself finish.
667 668
668 add $grp ... 669 add $grp ...
669 $grp->add (...) 670 $grp->add (...)
670 Add one or more requests to the group. Any type of IO::AIO::REQ can 671 Add one or more requests to the group. Any type of IO::AIO::REQ can
671 be added, including other groups, as long as you do not create 672 be added, including other groups, as long as you do not create

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines