ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent.pm (file contents):
Revision 1.20 by root, Mon Dec 11 01:16:09 2006 UTC vs.
Revision 1.23 by root, Wed Mar 7 17:37:24 2007 UTC

161 161
162=head2 SIGNAL WATCHERS 162=head2 SIGNAL WATCHERS
163 163
164You can listen for signals using a signal watcher, C<signal> is the signal 164You can listen for signals using a signal watcher, C<signal> is the signal
165I<name> without any C<SIG> prefix. Multiple signals events can be clumped 165I<name> without any C<SIG> prefix. Multiple signals events can be clumped
166together into one callback invocation, and callbakc invocation might or 166together into one callback invocation, and callback invocation might or
167might not be asynchronous. 167might not be asynchronous.
168 168
169These watchers might use C<%SIG>, so programs overwriting those signals 169These watchers might use C<%SIG>, so programs overwriting those signals
170directly will likely not work correctly. 170directly will likely not work correctly.
171 171
247 247
248no warnings; 248no warnings;
249use strict; 249use strict;
250use Carp; 250use Carp;
251 251
252our $VERSION = '2.5'; 252our $VERSION = '2.52';
253our $MODEL; 253our $MODEL;
254 254
255our $AUTOLOAD; 255our $AUTOLOAD;
256our @ISA; 256our @ISA;
257 257
288 unless ($MODEL) { 288 unless ($MODEL) {
289 # try to load a model 289 # try to load a model
290 290
291 for (@REGISTRY, @models) { 291 for (@REGISTRY, @models) {
292 my ($package, $model) = @$_; 292 my ($package, $model) = @$_;
293 if (eval "require $package"
294 and ${"$package\::VERSION"} > 0
293 if (eval "require $model") { 295 and eval "require $model") {
294 $MODEL = $model; 296 $MODEL = $model;
295 warn "AnyEvent: autoprobed and loaded model '$model', using it.\n" if $verbose > 1; 297 warn "AnyEvent: autoprobed and loaded model '$model', using it.\n" if $verbose > 1;
296 last; 298 last;
297 } 299 }
298 } 300 }
384 or Carp::croak "required option 'pid' is missing"; 386 or Carp::croak "required option 'pid' is missing";
385 387
386 $PID_CB{$pid}{$arg{cb}} = $arg{cb}; 388 $PID_CB{$pid}{$arg{cb}} = $arg{cb};
387 389
388 unless ($WNOHANG) { 390 unless ($WNOHANG) {
389 $CHLD_W = AnyEvent->signal (signal => 'CHLD', cb => \&_child_wait);
390 $WNOHANG = eval { require POSIX; &POSIX::WNOHANG } || 1; 391 $WNOHANG = eval { require POSIX; &POSIX::WNOHANG } || 1;
391 } 392 }
392 393
394 unless ($CHLD_W) {
395 $CHLD_W = AnyEvent->signal (signal => 'CHLD', cb => \&_child_wait);
393 # child could be a zombie already 396 # child could be a zombie already
394 $PID_IDLE ||= AnyEvent->timer (after => 0, cb => \&_child_wait); 397 $PID_IDLE ||= AnyEvent->timer (after => 0, cb => \&_child_wait);
398 }
395 399
396 bless [$pid, $arg{cb}], "AnyEvent::Base::Child" 400 bless [$pid, $arg{cb}], "AnyEvent::Base::Child"
397} 401}
398 402
399sub AnyEvent::Base::Child::DESTROY { 403sub AnyEvent::Base::Child::DESTROY {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines