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.402 by root, Mon Apr 9 02:25:48 2012 UTC vs.
Revision 1.420 by root, Fri Sep 5 22:17:26 2014 UTC

1=head1 NAME 1=head1 NAME
2 2
3AnyEvent - the DBI of event loop programming 3AnyEvent - the DBI of event loop programming
4 4
5EV, Event, Glib, Tk, Perl, Event::Lib, Irssi, rxvt-unicode, IO::Async, Qt, 5EV, Event, Glib, Tk, UV, Perl, Event::Lib, Irssi, rxvt-unicode, IO::Async,
6FLTK and POE are various supported event loops/environments. 6Qt, FLTK and POE are various supported event loops/environments.
7 7
8=head1 SYNOPSIS 8=head1 SYNOPSIS
9 9
10 use AnyEvent; 10 use AnyEvent;
11 11
271 271
272Example 2: fire an event after 0.5 seconds, then roughly every second. 272Example 2: fire an event after 0.5 seconds, then roughly every second.
273 273
274 my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub { 274 my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub {
275 warn "timeout\n"; 275 warn "timeout\n";
276 }; 276 });
277 277
278=head3 TIMING ISSUES 278=head3 TIMING ISSUES
279 279
280There are two ways to handle timers: based on real time (relative, "fire 280There are two ways to handle timers: based on real time (relative, "fire
281in 10 seconds") and based on wallclock time (absolute, "fire at 12 281in 10 seconds") and based on wallclock time (absolute, "fire at 12
487 487
488Example: fork a process and wait for it 488Example: fork a process and wait for it
489 489
490 my $done = AnyEvent->condvar; 490 my $done = AnyEvent->condvar;
491 491
492 # this forks and immediately calls exit in the child. this
493 # normally has all sorts of bad consequences for your parent,
494 # so take this as an example only. always fork and exec,
495 # or call POSIX::_exit, in real code.
492 my $pid = fork or exit 5; 496 my $pid = fork or exit 5;
493 497
494 my $w = AnyEvent->child ( 498 my $w = AnyEvent->child (
495 pid => $pid, 499 pid => $pid,
496 cb => sub { 500 cb => sub {
745This works because for every event source (EOF on file handle), there is 749This works because for every event source (EOF on file handle), there is
746one call to C<begin>, so the condvar waits for all calls to C<end> before 750one call to C<begin>, so the condvar waits for all calls to C<end> before
747sending. 751sending.
748 752
749The ping example mentioned above is slightly more complicated, as the 753The ping example mentioned above is slightly more complicated, as the
750there are results to be passwd back, and the number of tasks that are 754there are results to be passed back, and the number of tasks that are
751begun can potentially be zero: 755begun can potentially be zero:
752 756
753 my $cv = AnyEvent->condvar; 757 my $cv = AnyEvent->condvar;
754 758
755 my %result; 759 my %result;
763 }; 767 };
764 } 768 }
765 769
766 $cv->end; 770 $cv->end;
767 771
772 ...
773
774 my $results = $cv->recv;
775
768This code fragment supposedly pings a number of hosts and calls 776This code fragment supposedly pings a number of hosts and calls
769C<send> after results for all then have have been gathered - in any 777C<send> after results for all then have have been gathered - in any
770order. To achieve this, the code issues a call to C<begin> when it starts 778order. To achieve this, the code issues a call to C<begin> when it starts
771each ping request and calls C<end> when it has received some result for 779each ping request and calls C<end> when it has received some result for
772it. Since C<begin> and C<end> only maintain a counter, the order in which 780it. Since C<begin> and C<end> only maintain a counter, the order in which
807 815
808In list context, all parameters passed to C<send> will be returned, 816In list context, all parameters passed to C<send> will be returned,
809in scalar context only the first one will be returned. 817in scalar context only the first one will be returned.
810 818
811Note that doing a blocking wait in a callback is not supported by any 819Note that doing a blocking wait in a callback is not supported by any
812event loop, that is, recursive invocation of a blocking C<< ->recv 820event loop, that is, recursive invocation of a blocking C<< ->recv >> is
813>> is not allowed, and the C<recv> call will C<croak> if such a 821not allowed and the C<recv> call will C<croak> if such a condition is
814condition is detected. This condition can be slightly loosened by using 822detected. This requirement can be dropped by relying on L<Coro::AnyEvent>
815L<Coro::AnyEvent>, which allows you to do a blocking C<< ->recv >> from 823, which allows you to do a blocking C<< ->recv >> from any thread
816any thread that doesn't run the event loop itself. 824that doesn't run the event loop itself. L<Coro::AnyEvent> is loaded
825automatically when L<Coro> is used with L<AnyEvent>, so code does not need
826to do anything special to take advantage of that: any code that would
827normally block your program because it calls C<recv>, be executed in an
828C<async> thread instead without blocking other threads.
817 829
818Not all event models support a blocking wait - some die in that case 830Not all event models support a blocking wait - some die in that case
819(programs might want to do that to stay interactive), so I<if you are 831(programs might want to do that to stay interactive), so I<if you are
820using this from a module, never require a blocking wait>. Instead, let the 832using this from a module, never require a blocking wait>. Instead, let the
821caller decide whether the call will block or not (for example, by coupling 833caller decide whether the call will block or not (for example, by coupling
871create watchers. Nothing special needs to be done by the main program. 883create watchers. Nothing special needs to be done by the main program.
872 884
873 AnyEvent::Impl::Event based on Event, very stable, few glitches. 885 AnyEvent::Impl::Event based on Event, very stable, few glitches.
874 AnyEvent::Impl::Glib based on Glib, slow but very stable. 886 AnyEvent::Impl::Glib based on Glib, slow but very stable.
875 AnyEvent::Impl::Tk based on Tk, very broken. 887 AnyEvent::Impl::Tk based on Tk, very broken.
888 AnyEvent::Impl::UV based on UV, innovated square wheels.
876 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse. 889 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
877 AnyEvent::Impl::POE based on POE, very slow, some limitations. 890 AnyEvent::Impl::POE based on POE, very slow, some limitations.
878 AnyEvent::Impl::Irssi used when running within irssi. 891 AnyEvent::Impl::Irssi used when running within irssi.
879 AnyEvent::Impl::IOAsync based on IO::Async. 892 AnyEvent::Impl::IOAsync based on IO::Async.
880 AnyEvent::Impl::Cocoa based on Cocoa::EventLoop. 893 AnyEvent::Impl::Cocoa based on Cocoa::EventLoop.
1021To understand the usefulness of this function, consider a function that 1034To understand the usefulness of this function, consider a function that
1022asynchronously does something for you and returns some transaction 1035asynchronously does something for you and returns some transaction
1023object or guard to let you cancel the operation. For example, 1036object or guard to let you cancel the operation. For example,
1024C<AnyEvent::Socket::tcp_connect>: 1037C<AnyEvent::Socket::tcp_connect>:
1025 1038
1026 # start a conenction attempt unless one is active 1039 # start a connection attempt unless one is active
1027 $self->{connect_guard} ||= AnyEvent::Socket::tcp_connect "www.example.net", 80, sub { 1040 $self->{connect_guard} ||= AnyEvent::Socket::tcp_connect "www.example.net", 80, sub {
1028 delete $self->{connect_guard}; 1041 delete $self->{connect_guard};
1029 ... 1042 ...
1030 }; 1043 };
1031 1044
1139a longer non-exhaustive list), and the list is heavily biased towards 1152a longer non-exhaustive list), and the list is heavily biased towards
1140modules of the AnyEvent author himself :) 1153modules of the AnyEvent author himself :)
1141 1154
1142=over 4 1155=over 4
1143 1156
1144=item L<AnyEvent::Util> 1157=item L<AnyEvent::Util> (part of the AnyEvent distribution)
1145 1158
1146Contains various utility functions that replace often-used blocking 1159Contains various utility functions that replace often-used blocking
1147functions such as C<inet_aton> with event/callback-based versions. 1160functions such as C<inet_aton> with event/callback-based versions.
1148 1161
1149=item L<AnyEvent::Socket> 1162=item L<AnyEvent::Socket> (part of the AnyEvent distribution)
1150 1163
1151Provides various utility functions for (internet protocol) sockets, 1164Provides various utility functions for (internet protocol) sockets,
1152addresses and name resolution. Also functions to create non-blocking tcp 1165addresses and name resolution. Also functions to create non-blocking tcp
1153connections or tcp servers, with IPv6 and SRV record support and more. 1166connections or tcp servers, with IPv6 and SRV record support and more.
1154 1167
1155=item L<AnyEvent::Handle> 1168=item L<AnyEvent::Handle> (part of the AnyEvent distribution)
1156 1169
1157Provide read and write buffers, manages watchers for reads and writes, 1170Provide read and write buffers, manages watchers for reads and writes,
1158supports raw and formatted I/O, I/O queued and fully transparent and 1171supports raw and formatted I/O, I/O queued and fully transparent and
1159non-blocking SSL/TLS (via L<AnyEvent::TLS>). 1172non-blocking SSL/TLS (via L<AnyEvent::TLS>).
1160 1173
1161=item L<AnyEvent::DNS> 1174=item L<AnyEvent::DNS> (part of the AnyEvent distribution)
1162 1175
1163Provides rich asynchronous DNS resolver capabilities. 1176Provides rich asynchronous DNS resolver capabilities.
1164 1177
1165=item L<AnyEvent::HTTP>, L<AnyEvent::IRC>, L<AnyEvent::XMPP>, L<AnyEvent::GPSD>, L<AnyEvent::IGS>, L<AnyEvent::FCP> 1178=item L<AnyEvent::HTTP>, L<AnyEvent::IRC>, L<AnyEvent::XMPP>, L<AnyEvent::GPSD>, L<AnyEvent::IGS>, L<AnyEvent::FCP>
1166 1179
1167Implement event-based interfaces to the protocols of the same name (for 1180Implement event-based interfaces to the protocols of the same name (for
1168the curious, IGS is the International Go Server and FCP is the Freenet 1181the curious, IGS is the International Go Server and FCP is the Freenet
1169Client Protocol). 1182Client Protocol).
1170 1183
1171=item L<AnyEvent::AIO> 1184=item L<AnyEvent::AIO> (part of the AnyEvent distribution)
1172 1185
1173Truly asynchronous (as opposed to non-blocking) I/O, should be in the 1186Truly asynchronous (as opposed to non-blocking) I/O, should be in the
1174toolbox of every event programmer. AnyEvent::AIO transparently fuses 1187toolbox of every event programmer. AnyEvent::AIO transparently fuses
1175L<IO::AIO> and AnyEvent together, giving AnyEvent access to event-based 1188L<IO::AIO> and AnyEvent together, giving AnyEvent access to event-based
1176file I/O, and much more. 1189file I/O, and much more.
1190
1191=item L<AnyEvent::Fork>, L<AnyEvent::Fork::RPC>, L<AnyEvent::Fork::Pool>, L<AnyEvent::Fork::Remote>
1192
1193These let you safely fork new subprocesses, either locally or
1194remotely (e.g.v ia ssh), using some RPC protocol or not, without
1195the limitations normally imposed by fork (AnyEvent works fine for
1196example). Dynamically-resized worker pools are obviously included as well.
1197
1198And they are quite tiny and fast as well - "abusing" L<AnyEvent::Fork>
1199just to exec external programs can easily beat using C<fork> and C<exec>
1200(or even C<system>) in most programs.
1177 1201
1178=item L<AnyEvent::Filesys::Notify> 1202=item L<AnyEvent::Filesys::Notify>
1179 1203
1180AnyEvent is good for non-blocking stuff, but it can't detect file or 1204AnyEvent is good for non-blocking stuff, but it can't detect file or
1181path changes (e.g. "watch this directory for new files", "watch this 1205path changes (e.g. "watch this directory for new files", "watch this
1183do just that in a portbale fashion, supporting inotify on GNU/Linux and 1207do just that in a portbale fashion, supporting inotify on GNU/Linux and
1184some weird, without doubt broken, stuff on OS X to monitor files. It can 1208some weird, without doubt broken, stuff on OS X to monitor files. It can
1185fall back to blocking scans at regular intervals transparently on other 1209fall back to blocking scans at regular intervals transparently on other
1186platforms, so it's about as portable as it gets. 1210platforms, so it's about as portable as it gets.
1187 1211
1188(I haven't used it myself, but I haven't heard anybody complaining about 1212(I haven't used it myself, but it seems the biggest problem with it is
1189it yet). 1213it quite bad performance).
1190 1214
1191=item L<AnyEvent::DBI> 1215=item L<AnyEvent::DBI>
1192 1216
1193Executes L<DBI> requests asynchronously in a proxy process for you, 1217Executes L<DBI> requests asynchronously in a proxy process for you,
1194notifying you in an event-based way when the operation is finished. 1218notifying you in an event-based way when the operation is finished.
1195
1196=item L<AnyEvent::HTTPD>
1197
1198A simple embedded webserver.
1199 1219
1200=item L<AnyEvent::FastPing> 1220=item L<AnyEvent::FastPing>
1201 1221
1202The fastest ping in the west. 1222The fastest ping in the west.
1203 1223
1221 1241
1222=cut 1242=cut
1223 1243
1224package AnyEvent; 1244package AnyEvent;
1225 1245
1226# basically a tuned-down version of common::sense 1246BEGIN {
1227sub common_sense { 1247 require "AnyEvent/constants.pl";
1228 # from common:.sense 3.5 1248 &AnyEvent::common_sense;
1229 local $^W;
1230 ${^WARNING_BITS} ^= ${^WARNING_BITS} ^ "\x3c\x3f\x33\x00\x0f\xf0\x0f\xc0\xf0\xfc\x33\x00";
1231 # use strict vars subs - NO UTF-8, as Util.pm doesn't like this atm. (uts46data.pl)
1232 $^H |= 0x00000600;
1233} 1249}
1234
1235BEGIN { AnyEvent::common_sense }
1236 1250
1237use Carp (); 1251use Carp ();
1238 1252
1239our $VERSION = '6.14'; 1253our $VERSION = '7.07';
1240our $MODEL; 1254our $MODEL;
1241our @ISA; 1255our @ISA;
1242our @REGISTRY; 1256our @REGISTRY;
1243our $VERBOSE; 1257our $VERBOSE;
1244our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred 1258our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred
1245our $MAX_SIGNAL_LATENCY = $ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY} || 10; # executes after the BEGIN block below (tainting!) 1259our $MAX_SIGNAL_LATENCY = $ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY} || 10; # executes after the BEGIN block below (tainting!)
1246 1260
1247BEGIN { 1261BEGIN {
1248 require "AnyEvent/constants.pl";
1249
1250 eval "sub TAINT (){" . (${^TAINT}*1) . "}"; 1262 eval "sub TAINT (){" . (${^TAINT}*1) . "}";
1251 1263
1252 delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} 1264 delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV}
1253 if ${^TAINT}; 1265 if ${^TAINT};
1254 1266
1355 [Event:: => AnyEvent::Impl::Event::], # slow, stable 1367 [Event:: => AnyEvent::Impl::Event::], # slow, stable
1356 [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers 1368 [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers
1357 # everything below here should not be autoloaded 1369 # everything below here should not be autoloaded
1358 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy 1370 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy
1359 [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles 1371 [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles
1372 [UV:: => AnyEvent::Impl::UV::], # switched from libev, added back all bugs imaginable
1360 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program 1373 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program
1361 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza 1374 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza
1362 [Wx:: => AnyEvent::Impl::POE::], 1375 [Wx:: => AnyEvent::Impl::POE::],
1363 [Prima:: => AnyEvent::Impl::POE::], 1376 [Prima:: => AnyEvent::Impl::POE::],
1364 [IO::Async::Loop:: => AnyEvent::Impl::IOAsync::], # a bitch to autodetect 1377 [IO::Async::Loop:: => AnyEvent::Impl::IOAsync::], # a bitch to autodetect
1553package AE; 1566package AE;
1554 1567
1555our $VERSION = $AnyEvent::VERSION; 1568our $VERSION = $AnyEvent::VERSION;
1556 1569
1557sub _reset() { 1570sub _reset() {
1558 eval q{ 1571 eval q{
1559 # fall back to the main API by default - backends and AnyEvent::Base 1572 # fall back to the main API by default - backends and AnyEvent::Base
1560 # implementations can overwrite these. 1573 # implementations can overwrite these.
1561 1574
1562 sub io($$$) { 1575 sub io($$$) {
1563 AnyEvent->io (fh => $_[0], poll => $_[1] ? "w" : "r", cb => $_[2]) 1576 AnyEvent->io (fh => $_[0], poll => $_[1] ? "w" : "r", cb => $_[2])
2199used, and preference will be given to protocols mentioned earlier in the 2212used, and preference will be given to protocols mentioned earlier in the
2200list. 2213list.
2201 2214
2202This variable can effectively be used for denial-of-service attacks 2215This variable can effectively be used for denial-of-service attacks
2203against local programs (e.g. when setuid), although the impact is likely 2216against local programs (e.g. when setuid), although the impact is likely
2204small, as the program has to handle conenction and other failures anyways. 2217small, as the program has to handle connection and other failures anyways.
2205 2218
2206Examples: C<PERL_ANYEVENT_PROTOCOLS=ipv4,ipv6> - prefer IPv4 over IPv6, 2219Examples: C<PERL_ANYEVENT_PROTOCOLS=ipv4,ipv6> - prefer IPv4 over IPv6,
2207but support both and try to use both. C<PERL_ANYEVENT_PROTOCOLS=ipv4> 2220but support both and try to use both. C<PERL_ANYEVENT_PROTOCOLS=ipv4>
2208- only support IPv4, never try to resolve or contact IPv6 2221- only support IPv4, never try to resolve or contact IPv6
2209addresses. C<PERL_ANYEVENT_PROTOCOLS=ipv6,ipv4> support either IPv4 or 2222addresses. C<PERL_ANYEVENT_PROTOCOLS=ipv6,ipv4> support either IPv4 or
2921This module is part of perl since release 5.008. It will be used when the 2934This module is part of perl since release 5.008. It will be used when the
2922chosen event library does not come with a timing source of its own. The 2935chosen event library does not come with a timing source of its own. The
2923pure-perl event loop (L<AnyEvent::Loop>) will additionally load it to 2936pure-perl event loop (L<AnyEvent::Loop>) will additionally load it to
2924try to use a monotonic clock for timing stability. 2937try to use a monotonic clock for timing stability.
2925 2938
2939=item L<AnyEvent::AIO> (and L<IO::AIO>)
2940
2941The default implementation of L<AnyEvent::IO> is to do I/O synchronously,
2942stopping programs while they access the disk, which is fine for a lot of
2943programs.
2944
2945Installing AnyEvent::AIO (and its IO::AIO dependency) makes it switch to
2946a true asynchronous implementation, so event processing can continue even
2947while waiting for disk I/O.
2948
2926=back 2949=back
2927 2950
2928 2951
2929=head1 FORK 2952=head1 FORK
2930 2953
2941usually happens when the first AnyEvent watcher is created, or the library 2964usually happens when the first AnyEvent watcher is created, or the library
2942is loaded). 2965is loaded).
2943 2966
2944If you have to fork, you must either do so I<before> creating your first 2967If you have to fork, you must either do so I<before> creating your first
2945watcher OR you must not use AnyEvent at all in the child OR you must do 2968watcher OR you must not use AnyEvent at all in the child OR you must do
2946something completely out of the scope of AnyEvent. 2969something completely out of the scope of AnyEvent (see below).
2947 2970
2948The problem of doing event processing in the parent I<and> the child 2971The problem of doing event processing in the parent I<and> the child
2949is much more complicated: even for backends that I<are> fork-aware or 2972is much more complicated: even for backends that I<are> fork-aware or
2950fork-safe, their behaviour is not usually what you want: fork clones all 2973fork-safe, their behaviour is not usually what you want: fork clones all
2951watchers, that means all timers, I/O watchers etc. are active in both 2974watchers, that means all timers, I/O watchers etc. are active in both
2952parent and child, which is almost never what you want. USing C<exec> 2975parent and child, which is almost never what you want. Using C<exec>
2953to start worker children from some kind of manage rprocess is usually 2976to start worker children from some kind of manage prrocess is usually
2954preferred, because it is much easier and cleaner, at the expense of having 2977preferred, because it is much easier and cleaner, at the expense of having
2955to have another binary. 2978to have another binary.
2979
2980In addition to logical problems with fork, there are also implementation
2981problems. For example, on POSIX systems, you cannot fork at all in Perl
2982code if a thread (I am talking of pthreads here) was ever created in the
2983process, and this is just the tip of the iceberg. In general, using fork
2984from Perl is difficult, and attempting to use fork without an exec to
2985implement some kind of parallel processing is almost certainly doomed.
2986
2987To safely fork and exec, you should use a module such as
2988L<Proc::FastSpawn> that let's you safely fork and exec new processes.
2989
2990If you want to do multiprocessing using processes, you can
2991look at the L<AnyEvent::Fork> module (and some related modules
2992such as L<AnyEvent::Fork::RPC>, L<AnyEvent::Fork::Pool> and
2993L<AnyEvent::Fork::Remote>). This module allows you to safely create
2994subprocesses without any limitations - you can use X11 toolkits or
2995AnyEvent in the children created by L<AnyEvent::Fork> safely and without
2996any special precautions.
2956 2997
2957 2998
2958=head1 SECURITY CONSIDERATIONS 2999=head1 SECURITY CONSIDERATIONS
2959 3000
2960AnyEvent can be forced to load any event model via 3001AnyEvent can be forced to load any event model via

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines