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.232 by root, Thu Jul 9 01:08:22 2009 UTC vs.
Revision 1.241 by root, Fri Jul 17 18:08:35 2009 UTC

463 463
464If you are familiar with some event loops you will know that all of them 464If you are familiar with some event loops you will know that all of them
465require you to run some blocking "loop", "run" or similar function that 465require you to run some blocking "loop", "run" or similar function that
466will actively watch for new events and call your callbacks. 466will actively watch for new events and call your callbacks.
467 467
468AnyEvent is different, it expects somebody else to run the event loop and 468AnyEvent is slightly different: it expects somebody else to run the event
469will only block when necessary (usually when told by the user). 469loop and will only block when necessary (usually when told by the user).
470 470
471The instrument to do that is called a "condition variable", so called 471The instrument to do that is called a "condition variable", so called
472because they represent a condition that must become true. 472because they represent a condition that must become true.
473 473
474Now is probably a good time to look at the examples further below.
475
474Condition variables can be created by calling the C<< AnyEvent->condvar 476Condition variables can be created by calling the C<< AnyEvent->condvar
475>> method, usually without arguments. The only argument pair allowed is 477>> method, usually without arguments. The only argument pair allowed is
476
477C<cb>, which specifies a callback to be called when the condition variable 478C<cb>, which specifies a callback to be called when the condition variable
478becomes true, with the condition variable as the first argument (but not 479becomes true, with the condition variable as the first argument (but not
479the results). 480the results).
480 481
481After creation, the condition variable is "false" until it becomes "true" 482After creation, the condition variable is "false" until it becomes "true"
530 after => 1, 531 after => 1,
531 cb => sub { $result_ready->send }, 532 cb => sub { $result_ready->send },
532 ); 533 );
533 534
534 # this "blocks" (while handling events) till the callback 535 # this "blocks" (while handling events) till the callback
535 # calls send 536 # calls -<send
536 $result_ready->recv; 537 $result_ready->recv;
537 538
538Example: wait for a timer, but take advantage of the fact that 539Example: wait for a timer, but take advantage of the fact that condition
539condition variables are also code references. 540variables are also callable directly.
540 541
541 my $done = AnyEvent->condvar; 542 my $done = AnyEvent->condvar;
542 my $delay = AnyEvent->timer (after => 5, cb => $done); 543 my $delay = AnyEvent->timer (after => 5, cb => $done);
543 $done->recv; 544 $done->recv;
544 545
550 551
551 ... 552 ...
552 553
553 my @info = $couchdb->info->recv; 554 my @info = $couchdb->info->recv;
554 555
555And this is how you would just ste a callback to be called whenever the 556And this is how you would just set a callback to be called whenever the
556results are available: 557results are available:
557 558
558 $couchdb->info->cb (sub { 559 $couchdb->info->cb (sub {
559 my @info = $_[0]->recv; 560 my @info = $_[0]->recv;
560 }); 561 });
578immediately from within send. 579immediately from within send.
579 580
580Any arguments passed to the C<send> call will be returned by all 581Any arguments passed to the C<send> call will be returned by all
581future C<< ->recv >> calls. 582future C<< ->recv >> calls.
582 583
583Condition variables are overloaded so one can call them directly 584Condition variables are overloaded so one can call them directly (as if
584(as a code reference). Calling them directly is the same as calling 585they were a code reference). Calling them directly is the same as calling
585C<send>. Note, however, that many C-based event loops do not handle 586C<send>.
586overloading, so as tempting as it may be, passing a condition variable
587instead of a callback does not work. Both the pure perl and EV loops
588support overloading, however, as well as all functions that use perl to
589invoke a callback (as in L<AnyEvent::Socket> and L<AnyEvent::DNS> for
590example).
591 587
592=item $cv->croak ($error) 588=item $cv->croak ($error)
593 589
594Similar to send, but causes all call's to C<< ->recv >> to invoke 590Similar to send, but causes all call's to C<< ->recv >> to invoke
595C<Carp::croak> with the given error message/object/scalar. 591C<Carp::croak> with the given error message/object/scalar.
596 592
597This can be used to signal any errors to the condition variable 593This can be used to signal any errors to the condition variable
598user/consumer. 594user/consumer. Doing it this way instead of calling C<croak> directly
595delays the error detetcion, but has the overwhelmign advantage that it
596diagnoses the error at the place where the result is expected, and not
597deep in some event clalback without connection to the actual code causing
598the problem.
599 599
600=item $cv->begin ([group callback]) 600=item $cv->begin ([group callback])
601 601
602=item $cv->end 602=item $cv->end
603 603
699function will call C<croak>. 699function will call C<croak>.
700 700
701In list context, all parameters passed to C<send> will be returned, 701In list context, all parameters passed to C<send> will be returned,
702in scalar context only the first one will be returned. 702in scalar context only the first one will be returned.
703 703
704Note that doing a blocking wait in a callback is not supported by any
705event loop, that is, recursive invocation of a blocking C<< ->recv
706>> is not allowed, and the C<recv> call will C<croak> if such a
707condition is detected. This condition can be slightly loosened by using
708L<Coro::AnyEvent>, which allows you to do a blocking C<< ->recv >> from
709any thread that doesn't run the event loop itself.
710
704Not all event models support a blocking wait - some die in that case 711Not all event models support a blocking wait - some die in that case
705(programs might want to do that to stay interactive), so I<if you are 712(programs might want to do that to stay interactive), so I<if you are
706using this from a module, never require a blocking wait>, but let the 713using this from a module, never require a blocking wait>. Instead, let the
707caller decide whether the call will block or not (for example, by coupling 714caller decide whether the call will block or not (for example, by coupling
708condition variables with some kind of request results and supporting 715condition variables with some kind of request results and supporting
709callbacks so the caller knows that getting the result will not block, 716callbacks so the caller knows that getting the result will not block,
710while still supporting blocking waits if the caller so desires). 717while still supporting blocking waits if the caller so desires).
711
712Another reason I<never> to C<< ->recv >> in a module is that you cannot
713sensibly have two C<< ->recv >>'s in parallel, as that would require
714multiple interpreters or coroutines/threads, none of which C<AnyEvent>
715can supply.
716
717The L<Coro> module, however, I<can> and I<does> supply coroutines and, in
718fact, L<Coro::AnyEvent> replaces AnyEvent's condvars by coroutine-safe
719versions and also integrates coroutines into AnyEvent, making blocking
720C<< ->recv >> calls perfectly safe as long as they are done from another
721coroutine (one that doesn't run the event loop).
722 718
723You can ensure that C<< -recv >> never blocks by setting a callback and 719You can ensure that C<< -recv >> never blocks by setting a callback and
724only calling C<< ->recv >> from within that callback (or at a later 720only calling C<< ->recv >> from within that callback (or at a later
725time). This will work even when the event loop does not support blocking 721time). This will work even when the event loop does not support blocking
726waits otherwise. 722waits otherwise.
809 805
810=back 806=back
811 807
812=head1 GLOBAL VARIABLES AND FUNCTIONS 808=head1 GLOBAL VARIABLES AND FUNCTIONS
813 809
810These are not normally required to use AnyEvent, but can be useful to
811write AnyEvent extension modules.
812
814=over 4 813=over 4
815 814
816=item $AnyEvent::MODEL 815=item $AnyEvent::MODEL
817 816
818Contains C<undef> until the first watcher is being created. Then it 817Contains C<undef> until the first watcher is being created, before the
818backend has been autodetected.
819
819contains the event model that is being used, which is the name of the 820Afterwards it contains the event model that is being used, which is the
820Perl class implementing the model. This class is usually one of the 821name of the Perl class implementing the model. This class is usually one
821C<AnyEvent::Impl:xxx> modules, but can be any other class in the case 822of the C<AnyEvent::Impl:xxx> modules, but can be any other class in the
822AnyEvent has been extended at runtime (e.g. in I<rxvt-unicode>). 823case AnyEvent has been extended at runtime (e.g. in I<rxvt-unicode> it
824will be C<urxvt::anyevent>).
823 825
824=item AnyEvent::detect 826=item AnyEvent::detect
825 827
826Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model 828Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model
827if necessary. You should only call this function right before you would 829if necessary. You should only call this function right before you would
828have created an AnyEvent watcher anyway, that is, as late as possible at 830have created an AnyEvent watcher anyway, that is, as late as possible at
829runtime. 831runtime, and not e.g. while initialising of your module.
832
833If you need to do some initialisation before AnyEvent watchers are
834created, use C<post_detect>.
830 835
831=item $guard = AnyEvent::post_detect { BLOCK } 836=item $guard = AnyEvent::post_detect { BLOCK }
832 837
833Arranges for the code block to be executed as soon as the event model is 838Arranges for the code block to be executed as soon as the event model is
834autodetected (or immediately if this has already happened). 839autodetected (or immediately if this has already happened).
840
841The block will be executed I<after> the actual backend has been detected
842(C<$AnyEvent::MODEL> is set), but I<before> any watchers have been
843created, so it is possible to e.g. patch C<@AnyEvent::ISA> or do
844other initialisations - see the sources of L<AnyEvent::Strict> or
845L<AnyEvent::AIO> to see how this is used.
846
847The most common usage is to create some global watchers, without forcing
848event module detection too early, for example, L<AnyEvent::AIO> creates
849and installs the global L<IO::AIO> watcher in a C<post_detect> block to
850avoid autodetecting the event module at load time.
835 851
836If called in scalar or list context, then it creates and returns an object 852If called in scalar or list context, then it creates and returns an object
837that automatically removes the callback again when it is destroyed. See 853that automatically removes the callback again when it is destroyed. See
838L<Coro::BDB> for a case where this is useful. 854L<Coro::BDB> for a case where this is useful.
839 855
842If there are any code references in this array (you can C<push> to it 858If there are any code references in this array (you can C<push> to it
843before or after loading AnyEvent), then they will called directly after 859before or after loading AnyEvent), then they will called directly after
844the event loop has been chosen. 860the event loop has been chosen.
845 861
846You should check C<$AnyEvent::MODEL> before adding to this array, though: 862You should check C<$AnyEvent::MODEL> before adding to this array, though:
847if it contains a true value then the event loop has already been detected, 863if it is defined then the event loop has already been detected, and the
848and the array will be ignored. 864array will be ignored.
849 865
850Best use C<AnyEvent::post_detect { BLOCK }> instead. 866Best use C<AnyEvent::post_detect { BLOCK }> when your application allows
867it,as it takes care of these details.
868
869This variable is mainly useful for modules that can do something useful
870when AnyEvent is used and thus want to know when it is initialised, but do
871not need to even load it by default. This array provides the means to hook
872into AnyEvent passively, without loading it.
851 873
852=back 874=back
853 875
854=head1 WHAT TO DO IN A MODULE 876=head1 WHAT TO DO IN A MODULE
855 877
1005package AnyEvent; 1027package AnyEvent;
1006 1028
1007no warnings; 1029no warnings;
1008use strict qw(vars subs); 1030use strict qw(vars subs);
1009 1031
1010use Carp; 1032use Carp ();
1011 1033
1012our $VERSION = 4.801; 1034our $VERSION = 4.83;
1013our $MODEL; 1035our $MODEL;
1014 1036
1015our $AUTOLOAD; 1037our $AUTOLOAD;
1016our @ISA; 1038our @ISA;
1017 1039
1046 # as the pureperl backend should work everywhere 1068 # as the pureperl backend should work everywhere
1047 # and is usually faster 1069 # and is usually faster
1048 [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers 1070 [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers
1049 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy 1071 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy
1050 [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles 1072 [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles
1073 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program
1051 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza 1074 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza
1052 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program
1053 [Wx:: => AnyEvent::Impl::POE::], 1075 [Wx:: => AnyEvent::Impl::POE::],
1054 [Prima:: => AnyEvent::Impl::POE::], 1076 [Prima:: => AnyEvent::Impl::POE::],
1055 # IO::Async is just too broken - we would need workarounds for its 1077 # IO::Async is just too broken - we would need workarounds for its
1056 # byzantine signal and broken child handling, among others. 1078 # byzantine signal and broken child handling, among others.
1057 # IO::Async is rather hard to detect, as it doesn't have any 1079 # IO::Async is rather hard to detect, as it doesn't have any
1093 1115
1094 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z]+)$/) { 1116 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z]+)$/) {
1095 my $model = "AnyEvent::Impl::$1"; 1117 my $model = "AnyEvent::Impl::$1";
1096 if (eval "require $model") { 1118 if (eval "require $model") {
1097 $MODEL = $model; 1119 $MODEL = $model;
1098 warn "AnyEvent: loaded model '$model' (forced by \$PERL_ANYEVENT_MODEL), using it.\n" if $verbose > 1; 1120 warn "AnyEvent: loaded model '$model' (forced by \$ENV{PERL_ANYEVENT_MODEL}), using it.\n" if $verbose > 1;
1099 } else { 1121 } else {
1100 warn "AnyEvent: unable to load model '$model' (from \$PERL_ANYEVENT_MODEL):\n$@" if $verbose; 1122 warn "AnyEvent: unable to load model '$model' (from \$ENV{PERL_ANYEVENT_MODEL}):\n$@" if $verbose;
1101 } 1123 }
1102 } 1124 }
1103 1125
1104 # check for already loaded models 1126 # check for already loaded models
1105 unless ($MODEL) { 1127 unless ($MODEL) {
1147 1169
1148sub AUTOLOAD { 1170sub AUTOLOAD {
1149 (my $func = $AUTOLOAD) =~ s/.*://; 1171 (my $func = $AUTOLOAD) =~ s/.*://;
1150 1172
1151 $method{$func} 1173 $method{$func}
1152 or croak "$func: not a valid method for AnyEvent objects"; 1174 or Carp::croak "$func: not a valid method for AnyEvent objects";
1153 1175
1154 detect unless $MODEL; 1176 detect unless $MODEL;
1155 1177
1156 my $class = shift; 1178 my $class = shift;
1157 $class->$func (@_); 1179 $class->$func (@_);
1162# allow only one watcher per fd, so we dup it to get a different one). 1184# allow only one watcher per fd, so we dup it to get a different one).
1163sub _dupfh($$;$$) { 1185sub _dupfh($$;$$) {
1164 my ($poll, $fh, $r, $w) = @_; 1186 my ($poll, $fh, $r, $w) = @_;
1165 1187
1166 # cygwin requires the fh mode to be matching, unix doesn't 1188 # cygwin requires the fh mode to be matching, unix doesn't
1167 my ($rw, $mode) = $poll eq "r" ? ($r, "<") : ($w, ">"); 1189 my ($rw, $mode) = $poll eq "r" ? ($r, "<&") : ($w, ">&");
1168 1190
1169 open my $fh2, "$mode&", $fh 1191 open my $fh2, $mode, $fh
1170 or die "AnyEvent->io: cannot dup() filehandle in mode '$poll': $!,"; 1192 or die "AnyEvent->io: cannot dup() filehandle in mode '$poll': $!,";
1171 1193
1172 # we assume CLOEXEC is already set by perl in all important cases 1194 # we assume CLOEXEC is already set by perl in all important cases
1173 1195
1174 ($fh2, $rw) 1196 ($fh2, $rw)
1350 1372
1351use overload 1373use overload
1352 '&{}' => sub { my $self = shift; sub { $self->send (@_) } }, 1374 '&{}' => sub { my $self = shift; sub { $self->send (@_) } },
1353 fallback => 1; 1375 fallback => 1;
1354 1376
1377our $WAITING;
1378
1355sub _send { 1379sub _send {
1356 # nop 1380 # nop
1357} 1381}
1358 1382
1359sub send { 1383sub send {
1371sub ready { 1395sub ready {
1372 $_[0]{_ae_sent} 1396 $_[0]{_ae_sent}
1373} 1397}
1374 1398
1375sub _wait { 1399sub _wait {
1400 $WAITING
1401 and !$_[0]{_ae_sent}
1402 and Carp::croak "AnyEvent::CondVar: recursive blocking wait detected";
1403
1404 local $WAITING = 1;
1376 AnyEvent->one_event while !$_[0]{_ae_sent}; 1405 AnyEvent->one_event while !$_[0]{_ae_sent};
1377} 1406}
1378 1407
1379sub recv { 1408sub recv {
1380 $_[0]->_wait; 1409 $_[0]->_wait;
2074 2103
2075A handler for C<SIGCHLD> is installed by AnyEvent's child watcher 2104A handler for C<SIGCHLD> is installed by AnyEvent's child watcher
2076emulation for event loops that do not support them natively. Also, some 2105emulation for event loops that do not support them natively. Also, some
2077event loops install a similar handler. 2106event loops install a similar handler.
2078 2107
2079If, when AnyEvent is loaded, SIGCHLD is set to IGNORE, then AnyEvent will 2108Additionally, when AnyEvent is loaded and SIGCHLD is set to IGNORE, then
2080reset it to default, to avoid losing child exit statuses. 2109AnyEvent will reset it to default, to avoid losing child exit statuses.
2081 2110
2082=item SIGPIPE 2111=item SIGPIPE
2083 2112
2084A no-op handler is installed for C<SIGPIPE> when C<$SIG{PIPE}> is C<undef> 2113A no-op handler is installed for C<SIGPIPE> when C<$SIG{PIPE}> is C<undef>
2085when AnyEvent gets loaded. 2114when AnyEvent gets loaded.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines