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.109 by root, Sat May 10 00:45:18 2008 UTC vs.
Revision 1.110 by root, Sat May 10 00:57:31 2008 UTC

549Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model 549Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model
550if necessary. You should only call this function right before you would 550if necessary. You should only call this function right before you would
551have created an AnyEvent watcher anyway, that is, as late as possible at 551have created an AnyEvent watcher anyway, that is, as late as possible at
552runtime. 552runtime.
553 553
554=item AnyEvent::on_detect { BLOCK } 554=item $guard = AnyEvent::on_detect { BLOCK }
555 555
556Arranges for the code block to be executed as soon as the event model is 556Arranges for the code block to be executed as soon as the event model is
557autodetected (or immediately if this has already happened). 557autodetected (or immediately if this has already happened).
558
559If called in scalar or list context, then it creates and returns an object
560that automatically removes the callback again when it is destroyed.
558 561
559=item @AnyEvent::on_detect 562=item @AnyEvent::on_detect
560 563
561If there are any code references in this array (you can C<push> to it 564If there are any code references in this array (you can C<push> to it
562before or after loading AnyEvent), then they will called directly after 565before or after loading AnyEvent), then they will called directly after
719our %method = map +($_ => 1), qw(io timer signal child condvar one_event DESTROY); 722our %method = map +($_ => 1), qw(io timer signal child condvar one_event DESTROY);
720 723
721our @on_detect; 724our @on_detect;
722 725
723sub on_detect(&) { 726sub on_detect(&) {
727 my ($cb) = @_;
728
724 if ($MODEL) { 729 if ($MODEL) {
725 $_[0]->(); 730 $cb->();
731
732 1
726 } else { 733 } else {
727 push @on_detect, $_[0]; 734 push @on_detect, $cb;
735
736 defined wantarray
737 ? bless \$cb, "AnyEvent::Util::Guard"
738 : ()
728 } 739 }
740}
741
742sub AnyEvent::Util::Guard::DESTROY {
743 @on_detect = grep $_ != ${$_[0]}, @on_detect;
729} 744}
730 745
731sub detect() { 746sub detect() {
732 unless ($MODEL) { 747 unless ($MODEL) {
733 no strict 'refs'; 748 no strict 'refs';

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines