--- cvsroot/EV/EV.pm 2007/12/22 16:48:33 1.80 +++ cvsroot/EV/EV.pm 2008/04/16 18:49:49 1.89 @@ -37,7 +37,7 @@ # CHILD/PID STATUS CHANGES - my $w = EV::child 666, sub { + my $w = EV::child 666, 0, sub { my ($w, $revents) = @_; my $status = $w->rstatus; }; @@ -70,7 +70,7 @@ use strict; BEGIN { - our $VERSION = '2.0'; + our $VERSION = '3.31'; use XSLoader; XSLoader::load "EV", $VERSION; } @@ -86,6 +86,7 @@ @EV::Check::ISA = @EV::Embed::ISA = @EV::Fork::ISA = +@EV::Async::ISA = "EV::Watcher"; @EV::Loop::Default::ISA = "EV::Loop"; @@ -535,7 +536,7 @@ at January 1st 2011 then it will run when the system time reaches or surpasses this time. -=item * non-repeating interval timer ($interval > 0, $reschedule_cb = 0) +=item * repeating interval timer ($interval > 0, $reschedule_cb = 0) In this mode the watcher will always be scheduled to time out at the next C<$at + N * $interval> time (for some integer N) and then repeat, @@ -646,16 +647,18 @@ =over 4 -=item $w = EV::child $pid, $callback +=item $w = EV::child $pid, $trace, $callback -=item $w = EV::child_ns $pid, $callback +=item $w = EV::child_ns $pid, $trace, $callback -=item $w = $loop->child ($pid, $callback) +=item $w = $loop->child ($pid, $trace, $callback) -=item $w = $loop->child_ns ($pid, $callback) +=item $w = $loop->child_ns ($pid, $trace, $callback) -Call the callback when a status change for pid C<$pid> (or any pid if -C<$pid> is 0) has been received. More precisely: when the process receives +Call the callback when a status change for pid C<$pid> (or any pid +if C<$pid> is 0) has been received (a status change happens when the +process terminates or is killed, or, when trace is true, additionally when +it is stopped or continued). More precisely: when the process receives a C, EV will fetch the outstanding exit/wait status for all changed/zombie children and call the callback. @@ -672,15 +675,13 @@ The C variant doesn't start (activate) the newly created watcher. -=item $w->set ($pid) +=item $w->set ($pid, $trace) Reconfigures the watcher, see the constructor above for details. Can be called at any time. =item $current_pid = $w->pid -=item $old_pid = $w->pid ($new_pid) - Returns the previously set process id and optionally set a new one. =item $exit_status = $w->rstatus @@ -970,6 +971,28 @@ =back +=head3 ASYNC WATCHERS - how to wake up another event loop + +Async watchers are provided by EV, but have little use in perl directly, as perl +neither supports threads nor direct access to signal handlers or other +contexts where they could be of value. + +It is, however, possible to use them from the XS level. + +Please see the libev documentation for further details. + +=over 4 + +=item $w = EV::async $callback + +=item $w = EV::async_ns $callback + +=item $w->send + +=item $bool = $w->async_pending + +=back + =head1 PERL SIGNALS