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.226 by root, Mon Jul 6 23:32:49 2009 UTC vs.
Revision 1.240 by root, Fri Jul 17 14:57:03 2009 UTC

176=head2 I/O WATCHERS 176=head2 I/O WATCHERS
177 177
178You can create an I/O watcher by calling the C<< AnyEvent->io >> method 178You can create an I/O watcher by calling the C<< AnyEvent->io >> method
179with the following mandatory key-value pairs as arguments: 179with the following mandatory key-value pairs as arguments:
180 180
181C<fh> is the Perl I<file handle> (I<not> file descriptor) to watch 181C<fh> is the Perl I<file handle> (or a naked file descriptor) to watch
182for events (AnyEvent might or might not keep a reference to this file 182for events (AnyEvent might or might not keep a reference to this file
183handle). Note that only file handles pointing to things for which 183handle). Note that only file handles pointing to things for which
184non-blocking operation makes sense are allowed. This includes sockets, 184non-blocking operation makes sense are allowed. This includes sockets,
185most character devices, pipes, fifos and so on, but not for example files 185most character devices, pipes, fifos and so on, but not for example files
186or block devices. 186or block devices.
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 718
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
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.
727 723
740variable itself. Calling C<recv> inside the callback or at any later time 736variable itself. Calling C<recv> inside the callback or at any later time
741is guaranteed not to block. 737is guaranteed not to block.
742 738
743=back 739=back
744 740
741=head1 SUPPORTED EVENT LOOPS/BACKENDS
742
743The available backend classes are (every class has its own manpage):
744
745=over 4
746
747=item Backends that are autoprobed when no other event loop can be found.
748
749EV is the preferred backend when no other event loop seems to be in
750use. If EV is not installed, then AnyEvent will try Event, and, failing
751that, will fall back to its own pure-perl implementation, which is
752available everywhere as it comes with AnyEvent itself.
753
754 AnyEvent::Impl::EV based on EV (interface to libev, best choice).
755 AnyEvent::Impl::Event based on Event, very stable, few glitches.
756 AnyEvent::Impl::Perl pure-perl implementation, fast and portable.
757
758=item Backends that are transparently being picked up when they are used.
759
760These will be used when they are currently loaded when the first watcher
761is created, in which case it is assumed that the application is using
762them. This means that AnyEvent will automatically pick the right backend
763when the main program loads an event module before anything starts to
764create watchers. Nothing special needs to be done by the main program.
765
766 AnyEvent::Impl::Glib based on Glib, slow but very stable.
767 AnyEvent::Impl::Tk based on Tk, very broken.
768 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
769 AnyEvent::Impl::POE based on POE, very slow, some limitations.
770
771=item Backends with special needs.
772
773Qt requires the Qt::Application to be instantiated first, but will
774otherwise be picked up automatically. As long as the main program
775instantiates the application before any AnyEvent watchers are created,
776everything should just work.
777
778 AnyEvent::Impl::Qt based on Qt.
779
780Support for IO::Async can only be partial, as it is too broken and
781architecturally limited to even support the AnyEvent API. It also
782is the only event loop that needs the loop to be set explicitly, so
783it can only be used by a main program knowing about AnyEvent. See
784L<AnyEvent::Impl::Async> for the gory details.
785
786 AnyEvent::Impl::IOAsync based on IO::Async, cannot be autoprobed.
787
788=item Event loops that are indirectly supported via other backends.
789
790Some event loops can be supported via other modules:
791
792There is no direct support for WxWidgets (L<Wx>) or L<Prima>.
793
794B<WxWidgets> has no support for watching file handles. However, you can
795use WxWidgets through the POE adaptor, as POE has a Wx backend that simply
796polls 20 times per second, which was considered to be too horrible to even
797consider for AnyEvent.
798
799B<Prima> is not supported as nobody seems to be using it, but it has a POE
800backend, so it can be supported through POE.
801
802AnyEvent knows about both L<Prima> and L<Wx>, however, and will try to
803load L<POE> when detecting them, in the hope that POE will pick them up,
804in which case everything will be automatic.
805
806=back
807
745=head1 GLOBAL VARIABLES AND FUNCTIONS 808=head1 GLOBAL VARIABLES AND FUNCTIONS
746 809
810These are not normally required to use AnyEvent, but can be useful to
811write AnyEvent extension modules.
812
747=over 4 813=over 4
748 814
749=item $AnyEvent::MODEL 815=item $AnyEvent::MODEL
750 816
751Contains 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
752contains 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
753Perl class implementing the model. This class is usually one of the 821name of the Perl class implementing the model. This class is usually one
754C<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
755AnyEvent 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
756 824will be C<urxvt::anyevent>).
757The known classes so far are:
758
759 AnyEvent::Impl::EV based on EV (an interface to libev, best choice).
760 AnyEvent::Impl::Event based on Event, second best choice.
761 AnyEvent::Impl::Perl pure-perl implementation, fast and portable.
762 AnyEvent::Impl::Glib based on Glib, third-best choice.
763 AnyEvent::Impl::Tk based on Tk, very bad choice.
764 AnyEvent::Impl::Qt based on Qt, cannot be autoprobed (see its docs).
765 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
766 AnyEvent::Impl::POE based on POE, not generic enough for full support.
767
768 # warning, support for IO::Async is only partial, as it is too broken
769 # and limited toe ven support the AnyEvent API. See AnyEvent::Impl::Async.
770 AnyEvent::Impl::IOAsync based on IO::Async, cannot be autoprobed (see its docs).
771
772There is no support for WxWidgets, as WxWidgets has no support for
773watching file handles. However, you can use WxWidgets through the
774POE Adaptor, as POE has a Wx backend that simply polls 20 times per
775second, which was considered to be too horrible to even consider for
776AnyEvent. Likewise, other POE backends can be used by AnyEvent by using
777it's adaptor.
778
779AnyEvent knows about L<Prima> and L<Wx> and will try to use L<POE> when
780autodetecting them.
781 825
782=item AnyEvent::detect 826=item AnyEvent::detect
783 827
784Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model 828Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model
785if necessary. You should only call this function right before you would 829if necessary. You should only call this function right before you would
786have 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
787runtime. 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>.
788 835
789=item $guard = AnyEvent::post_detect { BLOCK } 836=item $guard = AnyEvent::post_detect { BLOCK }
790 837
791Arranges 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
792autodetected (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.
793 851
794If 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
795that automatically removes the callback again when it is destroyed. See 853that automatically removes the callback again when it is destroyed. See
796L<Coro::BDB> for a case where this is useful. 854L<Coro::BDB> for a case where this is useful.
797 855
800If 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
801before or after loading AnyEvent), then they will called directly after 859before or after loading AnyEvent), then they will called directly after
802the event loop has been chosen. 860the event loop has been chosen.
803 861
804You should check C<$AnyEvent::MODEL> before adding to this array, though: 862You should check C<$AnyEvent::MODEL> before adding to this array, though:
805if 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
806and the array will be ignored. 864array will be ignored.
807 865
808Best 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.
809 873
810=back 874=back
811 875
812=head1 WHAT TO DO IN A MODULE 876=head1 WHAT TO DO IN A MODULE
813 877
868 932
869 933
870=head1 OTHER MODULES 934=head1 OTHER MODULES
871 935
872The following is a non-exhaustive list of additional modules that use 936The following is a non-exhaustive list of additional modules that use
873AnyEvent and can therefore be mixed easily with other AnyEvent modules 937AnyEvent as a client and can therefore be mixed easily with other AnyEvent
874in the same program. Some of the modules come with AnyEvent, some are 938modules and other event loops in the same program. Some of the modules
875available via CPAN. 939come with AnyEvent, most are available via CPAN.
876 940
877=over 4 941=over 4
878 942
879=item L<AnyEvent::Util> 943=item L<AnyEvent::Util>
880 944
889 953
890=item L<AnyEvent::Handle> 954=item L<AnyEvent::Handle>
891 955
892Provide read and write buffers, manages watchers for reads and writes, 956Provide read and write buffers, manages watchers for reads and writes,
893supports raw and formatted I/O, I/O queued and fully transparent and 957supports raw and formatted I/O, I/O queued and fully transparent and
894non-blocking SSL/TLS. 958non-blocking SSL/TLS (via L<AnyEvent::TLS>.
895 959
896=item L<AnyEvent::DNS> 960=item L<AnyEvent::DNS>
897 961
898Provides rich asynchronous DNS resolver capabilities. 962Provides rich asynchronous DNS resolver capabilities.
899 963
927 991
928=item L<AnyEvent::GPSD> 992=item L<AnyEvent::GPSD>
929 993
930A non-blocking interface to gpsd, a daemon delivering GPS information. 994A non-blocking interface to gpsd, a daemon delivering GPS information.
931 995
996=item L<AnyEvent::IRC>
997
998AnyEvent based IRC client module family (replacing the older Net::IRC3).
999
1000=item L<AnyEvent::XMPP>
1001
1002AnyEvent based XMPP (Jabber protocol) module family (replacing the older
1003Net::XMPP2>.
1004
932=item L<AnyEvent::IGS> 1005=item L<AnyEvent::IGS>
933 1006
934A non-blocking interface to the Internet Go Server protocol (used by 1007A non-blocking interface to the Internet Go Server protocol (used by
935L<App::IGS>). 1008L<App::IGS>).
936 1009
937=item L<AnyEvent::IRC>
938
939AnyEvent based IRC client module family (replacing the older Net::IRC3).
940
941=item L<Net::XMPP2>
942
943AnyEvent based XMPP (Jabber protocol) module family.
944
945=item L<Net::FCP> 1010=item L<Net::FCP>
946 1011
947AnyEvent-based implementation of the Freenet Client Protocol, birthplace 1012AnyEvent-based implementation of the Freenet Client Protocol, birthplace
948of AnyEvent. 1013of AnyEvent.
949 1014
953 1018
954=item L<Coro> 1019=item L<Coro>
955 1020
956Has special support for AnyEvent via L<Coro::AnyEvent>. 1021Has special support for AnyEvent via L<Coro::AnyEvent>.
957 1022
958=item L<IO::Lambda>
959
960The lambda approach to I/O - don't ask, look there. Can use AnyEvent.
961
962=back 1023=back
963 1024
964=cut 1025=cut
965 1026
966package AnyEvent; 1027package AnyEvent;
967 1028
968no warnings; 1029no warnings;
969use strict qw(vars subs); 1030use strict qw(vars subs);
970 1031
971use Carp; 1032use Carp ();
972 1033
973our $VERSION = 4.8; 1034our $VERSION = 4.83;
974our $MODEL; 1035our $MODEL;
975 1036
976our $AUTOLOAD; 1037our $AUTOLOAD;
977our @ISA; 1038our @ISA;
978 1039
1004 [Event:: => AnyEvent::Impl::Event::], 1065 [Event:: => AnyEvent::Impl::Event::],
1005 [AnyEvent::Impl::Perl:: => AnyEvent::Impl::Perl::], 1066 [AnyEvent::Impl::Perl:: => AnyEvent::Impl::Perl::],
1006 # everything below here will not be autoprobed 1067 # everything below here will not be autoprobed
1007 # as the pureperl backend should work everywhere 1068 # as the pureperl backend should work everywhere
1008 # and is usually faster 1069 # and is usually faster
1009 [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles
1010 [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers 1070 [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers
1011 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy 1071 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy
1072 [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles
1012 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program 1073 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program
1013 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza 1074 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza
1014 [Wx:: => AnyEvent::Impl::POE::], 1075 [Wx:: => AnyEvent::Impl::POE::],
1015 [Prima:: => AnyEvent::Impl::POE::], 1076 [Prima:: => AnyEvent::Impl::POE::],
1016 # IO::Async is just too broken - we would need workaorunds for its 1077 # IO::Async is just too broken - we would need workarounds for its
1017 # byzantine signal and broken child handling, among others. 1078 # byzantine signal and broken child handling, among others.
1018 # 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
1019 # obvious default class. 1080 # obvious default class.
1020# [IO::Async:: => AnyEvent::Impl::IOAsync::], # requires special main program 1081# [IO::Async:: => AnyEvent::Impl::IOAsync::], # requires special main program
1021# [IO::Async::Loop:: => AnyEvent::Impl::IOAsync::], # requires special main program 1082# [IO::Async::Loop:: => AnyEvent::Impl::IOAsync::], # requires special main program
1054 1115
1055 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z]+)$/) { 1116 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z]+)$/) {
1056 my $model = "AnyEvent::Impl::$1"; 1117 my $model = "AnyEvent::Impl::$1";
1057 if (eval "require $model") { 1118 if (eval "require $model") {
1058 $MODEL = $model; 1119 $MODEL = $model;
1059 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;
1060 } else { 1121 } else {
1061 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;
1062 } 1123 }
1063 } 1124 }
1064 1125
1065 # check for already loaded models 1126 # check for already loaded models
1066 unless ($MODEL) { 1127 unless ($MODEL) {
1108 1169
1109sub AUTOLOAD { 1170sub AUTOLOAD {
1110 (my $func = $AUTOLOAD) =~ s/.*://; 1171 (my $func = $AUTOLOAD) =~ s/.*://;
1111 1172
1112 $method{$func} 1173 $method{$func}
1113 or croak "$func: not a valid method for AnyEvent objects"; 1174 or Carp::croak "$func: not a valid method for AnyEvent objects";
1114 1175
1115 detect unless $MODEL; 1176 detect unless $MODEL;
1116 1177
1117 my $class = shift; 1178 my $class = shift;
1118 $class->$func (@_); 1179 $class->$func (@_);
1123# 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).
1124sub _dupfh($$;$$) { 1185sub _dupfh($$;$$) {
1125 my ($poll, $fh, $r, $w) = @_; 1186 my ($poll, $fh, $r, $w) = @_;
1126 1187
1127 # cygwin requires the fh mode to be matching, unix doesn't 1188 # cygwin requires the fh mode to be matching, unix doesn't
1128 my ($rw, $mode) = $poll eq "r" ? ($r, "<") 1189 my ($rw, $mode) = $poll eq "r" ? ($r, "<") : ($w, ">");
1129 : $poll eq "w" ? ($w, ">")
1130 : Carp::croak "AnyEvent->io requires poll set to either 'r' or 'w'";
1131 1190
1132 open my $fh2, "$mode&" . fileno $fh 1191 open my $fh2, "$mode&", $fh
1133 or die "cannot dup() filehandle: $!,"; 1192 or die "AnyEvent->io: cannot dup() filehandle in mode '$poll': $!,";
1134 1193
1135 # 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
1136 1195
1137 ($fh2, $rw) 1196 ($fh2, $rw)
1138} 1197}
1313 1372
1314use overload 1373use overload
1315 '&{}' => sub { my $self = shift; sub { $self->send (@_) } }, 1374 '&{}' => sub { my $self = shift; sub { $self->send (@_) } },
1316 fallback => 1; 1375 fallback => 1;
1317 1376
1377our $WAITING;
1378
1318sub _send { 1379sub _send {
1319 # nop 1380 # nop
1320} 1381}
1321 1382
1322sub send { 1383sub send {
1334sub ready { 1395sub ready {
1335 $_[0]{_ae_sent} 1396 $_[0]{_ae_sent}
1336} 1397}
1337 1398
1338sub _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;
1339 AnyEvent->one_event while !$_[0]{_ae_sent}; 1405 AnyEvent->one_event while !$_[0]{_ae_sent};
1340} 1406}
1341 1407
1342sub recv { 1408sub recv {
1343 $_[0]->_wait; 1409 $_[0]->_wait;
1482=item C<PERL_ANYEVENT_RESOLV_CONF> 1548=item C<PERL_ANYEVENT_RESOLV_CONF>
1483 1549
1484The file to use instead of F</etc/resolv.conf> (or OS-specific 1550The file to use instead of F</etc/resolv.conf> (or OS-specific
1485configuration) in the default resolver. When set to the empty string, no 1551configuration) in the default resolver. When set to the empty string, no
1486default config will be used. 1552default config will be used.
1553
1554=item C<PERL_ANYEVENT_CA_FILE>, C<PERL_ANYEVENT_CA_PATH>.
1555
1556When neither C<ca_file> nor C<ca_path> was specified during
1557L<AnyEvent::TLS> context creation, and either of these environment
1558variables exist, they will be used to specify CA certificate locations
1559instead of a system-dependent default.
1487 1560
1488=back 1561=back
1489 1562
1490=head1 SUPPLYING YOUR OWN EVENT MODEL INTERFACE 1563=head1 SUPPLYING YOUR OWN EVENT MODEL INTERFACE
1491 1564
2030 2103
2031A handler for C<SIGCHLD> is installed by AnyEvent's child watcher 2104A handler for C<SIGCHLD> is installed by AnyEvent's child watcher
2032emulation for event loops that do not support them natively. Also, some 2105emulation for event loops that do not support them natively. Also, some
2033event loops install a similar handler. 2106event loops install a similar handler.
2034 2107
2035If, when AnyEvent is loaded, SIGCHLD is set to IGNORE, then AnyEvent will 2108Additionally, when AnyEvent is loaded and SIGCHLD is set to IGNORE, then
2036reset it to default, to avoid losing child exit statuses. 2109AnyEvent will reset it to default, to avoid losing child exit statuses.
2037 2110
2038=item SIGPIPE 2111=item SIGPIPE
2039 2112
2040A 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>
2041when AnyEvent gets loaded. 2114when AnyEvent gets loaded.
2114L<Glib>, L<Tk>, L<Event::Lib>, L<Qt>, L<POE>. 2187L<Glib>, L<Tk>, L<Event::Lib>, L<Qt>, L<POE>.
2115 2188
2116Implementations: L<AnyEvent::Impl::EV>, L<AnyEvent::Impl::Event>, 2189Implementations: L<AnyEvent::Impl::EV>, L<AnyEvent::Impl::Event>,
2117L<AnyEvent::Impl::Glib>, L<AnyEvent::Impl::Tk>, L<AnyEvent::Impl::Perl>, 2190L<AnyEvent::Impl::Glib>, L<AnyEvent::Impl::Tk>, L<AnyEvent::Impl::Perl>,
2118L<AnyEvent::Impl::EventLib>, L<AnyEvent::Impl::Qt>, 2191L<AnyEvent::Impl::EventLib>, L<AnyEvent::Impl::Qt>,
2119L<AnyEvent::Impl::POE>. 2192L<AnyEvent::Impl::POE>, L<AnyEvent::Impl::IOAsync>.
2120 2193
2121Non-blocking file handles, sockets, TCP clients and 2194Non-blocking file handles, sockets, TCP clients and
2122servers: L<AnyEvent::Handle>, L<AnyEvent::Socket>. 2195servers: L<AnyEvent::Handle>, L<AnyEvent::Socket>, L<AnyEvent::TLS>.
2123 2196
2124Asynchronous DNS: L<AnyEvent::DNS>. 2197Asynchronous DNS: L<AnyEvent::DNS>.
2125 2198
2126Coroutine support: L<Coro>, L<Coro::AnyEvent>, L<Coro::EV>, L<Coro::Event>, 2199Coroutine support: L<Coro>, L<Coro::AnyEvent>, L<Coro::EV>,
2200L<Coro::Event>,
2127 2201
2128Nontrivial usage examples: L<Net::FCP>, L<Net::XMPP2>, L<AnyEvent::DNS>. 2202Nontrivial usage examples: L<AnyEvent::GPSD>, L<AnyEvent::XMPP>,
2203L<AnyEvent::HTTP>.
2129 2204
2130 2205
2131=head1 AUTHOR 2206=head1 AUTHOR
2132 2207
2133 Marc Lehmann <schmorp@schmorp.de> 2208 Marc Lehmann <schmorp@schmorp.de>

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines