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.382 by root, Thu Sep 1 23:46:26 2011 UTC vs.
Revision 1.416 by root, Tue Dec 17 16:43:15 2013 UTC

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
415not restart syscalls (that includes L<Async::Interrupt> and AnyEvent's 415not restart syscalls (that includes L<Async::Interrupt> and AnyEvent's
416pure perl implementation). 416pure perl implementation).
417 417
418=head3 Safe/Unsafe Signals 418=head3 Safe/Unsafe Signals
419 419
420Perl signals can be either "safe" (synchronous to opcode handling) or 420Perl signals can be either "safe" (synchronous to opcode handling)
421"unsafe" (asynchronous) - the former might get delayed indefinitely, the 421or "unsafe" (asynchronous) - the former might delay signal delivery
422latter might corrupt your memory. 422indefinitely, the latter might corrupt your memory.
423 423
424AnyEvent signal handlers are, in addition, synchronous to the event loop, 424AnyEvent signal handlers are, in addition, synchronous to the event loop,
425i.e. they will not interrupt your running perl program but will only be 425i.e. they will not interrupt your running perl program but will only be
426called as part of the normal event handling (just like timer, I/O etc. 426called as part of the normal event handling (just like timer, I/O etc.
427callbacks, too). 427callbacks, too).
428 428
429=head3 Signal Races, Delays and Workarounds 429=head3 Signal Races, Delays and Workarounds
430 430
431Many event loops (e.g. Glib, Tk, Qt, IO::Async) do not support attaching 431Many event loops (e.g. Glib, Tk, Qt, IO::Async) do not support
432callbacks to signals in a generic way, which is a pity, as you cannot 432attaching callbacks to signals in a generic way, which is a pity,
433do race-free signal handling in perl, requiring C libraries for 433as you cannot do race-free signal handling in perl, requiring
434this. AnyEvent will try to do its best, which means in some cases, 434C libraries for this. AnyEvent will try to do its best, which
435signals will be delayed. The maximum time a signal might be delayed is 435means in some cases, signals will be delayed. The maximum time
436specified in C<$AnyEvent::MAX_SIGNAL_LATENCY> (default: 10 seconds). This 436a signal might be delayed is 10 seconds by default, but can
437variable can be changed only before the first signal watcher is created, 437be overriden via C<$ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY}> or
438and should be left alone otherwise. This variable determines how often 438C<$AnyEvent::MAX_SIGNAL_LATENCY> - see the L<ENVIRONMENT VARIABLES>
439AnyEvent polls for signals (in case a wake-up was missed). Higher values 439section for details.
440will cause fewer spurious wake-ups, which is better for power and CPU
441saving.
442 440
443All these problems can be avoided by installing the optional 441All these problems can be avoided by installing the optional
444L<Async::Interrupt> module, which works with most event loops. It will not 442L<Async::Interrupt> module, which works with most event loops. It will not
445work with inherently broken event loops such as L<Event> or L<Event::Lib> 443work with inherently broken event loops such as L<Event> or L<Event::Lib>
446(and not with L<POE> currently, as POE does its own workaround with 444(and not with L<POE> currently). For those, you just have to suffer the
447one-second latency). For those, you just have to suffer the delays. 445delays.
448 446
449=head2 CHILD PROCESS WATCHERS 447=head2 CHILD PROCESS WATCHERS
450 448
451 $w = AnyEvent->child (pid => <process id>, cb => <callback>); 449 $w = AnyEvent->child (pid => <process id>, cb => <callback>);
452 450
489 487
490Example: fork a process and wait for it 488Example: fork a process and wait for it
491 489
492 my $done = AnyEvent->condvar; 490 my $done = AnyEvent->condvar;
493 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.
494 my $pid = fork or exit 5; 496 my $pid = fork or exit 5;
495 497
496 my $w = AnyEvent->child ( 498 my $w = AnyEvent->child (
497 pid => $pid, 499 pid => $pid,
498 cb => sub { 500 cb => sub {
747This 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
748one 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
749sending. 751sending.
750 752
751The ping example mentioned above is slightly more complicated, as the 753The ping example mentioned above is slightly more complicated, as the
752there 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
753begun can potentially be zero: 755begun can potentially be zero:
754 756
755 my $cv = AnyEvent->condvar; 757 my $cv = AnyEvent->condvar;
756 758
757 my %result; 759 my %result;
765 }; 767 };
766 } 768 }
767 769
768 $cv->end; 770 $cv->end;
769 771
772 ...
773
774 my $results = $cv->recv;
775
770This code fragment supposedly pings a number of hosts and calls 776This code fragment supposedly pings a number of hosts and calls
771C<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
772order. 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
773each 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
774it. 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
809 815
810In list context, all parameters passed to C<send> will be returned, 816In list context, all parameters passed to C<send> will be returned,
811in scalar context only the first one will be returned. 817in scalar context only the first one will be returned.
812 818
813Note 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
814event loop, that is, recursive invocation of a blocking C<< ->recv 820event loop, that is, recursive invocation of a blocking C<< ->recv >> is
815>> 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
816condition is detected. This condition can be slightly loosened by using 822detected. This requirement can be dropped by relying on L<Coro::AnyEvent>
817L<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
818any 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.
819 829
820Not 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
821(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
822using 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
823caller 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
1141a longer non-exhaustive list), and the list is heavily biased towards 1151a longer non-exhaustive list), and the list is heavily biased towards
1142modules of the AnyEvent author himself :) 1152modules of the AnyEvent author himself :)
1143 1153
1144=over 4 1154=over 4
1145 1155
1146=item L<AnyEvent::Util> 1156=item L<AnyEvent::Util> (part of the AnyEvent distribution)
1147 1157
1148Contains various utility functions that replace often-used blocking 1158Contains various utility functions that replace often-used blocking
1149functions such as C<inet_aton> with event/callback-based versions. 1159functions such as C<inet_aton> with event/callback-based versions.
1150 1160
1151=item L<AnyEvent::Socket> 1161=item L<AnyEvent::Socket> (part of the AnyEvent distribution)
1152 1162
1153Provides various utility functions for (internet protocol) sockets, 1163Provides various utility functions for (internet protocol) sockets,
1154addresses and name resolution. Also functions to create non-blocking tcp 1164addresses and name resolution. Also functions to create non-blocking tcp
1155connections or tcp servers, with IPv6 and SRV record support and more. 1165connections or tcp servers, with IPv6 and SRV record support and more.
1156 1166
1157=item L<AnyEvent::Handle> 1167=item L<AnyEvent::Handle> (part of the AnyEvent distribution)
1158 1168
1159Provide read and write buffers, manages watchers for reads and writes, 1169Provide read and write buffers, manages watchers for reads and writes,
1160supports raw and formatted I/O, I/O queued and fully transparent and 1170supports raw and formatted I/O, I/O queued and fully transparent and
1161non-blocking SSL/TLS (via L<AnyEvent::TLS>). 1171non-blocking SSL/TLS (via L<AnyEvent::TLS>).
1162 1172
1163=item L<AnyEvent::DNS> 1173=item L<AnyEvent::DNS> (part of the AnyEvent distribution)
1164 1174
1165Provides rich asynchronous DNS resolver capabilities. 1175Provides rich asynchronous DNS resolver capabilities.
1166 1176
1167=item L<AnyEvent::HTTP>, L<AnyEvent::IRC>, L<AnyEvent::XMPP>, L<AnyEvent::GPSD>, L<AnyEvent::IGS>, L<AnyEvent::FCP> 1177=item L<AnyEvent::HTTP>, L<AnyEvent::IRC>, L<AnyEvent::XMPP>, L<AnyEvent::GPSD>, L<AnyEvent::IGS>, L<AnyEvent::FCP>
1168 1178
1169Implement event-based interfaces to the protocols of the same name (for 1179Implement event-based interfaces to the protocols of the same name (for
1170the curious, IGS is the International Go Server and FCP is the Freenet 1180the curious, IGS is the International Go Server and FCP is the Freenet
1171Client Protocol). 1181Client Protocol).
1172 1182
1173=item L<AnyEvent::AIO> 1183=item L<AnyEvent::AIO> (part of the AnyEvent distribution)
1174 1184
1175Truly asynchronous (as opposed to non-blocking) I/O, should be in the 1185Truly asynchronous (as opposed to non-blocking) I/O, should be in the
1176toolbox of every event programmer. AnyEvent::AIO transparently fuses 1186toolbox of every event programmer. AnyEvent::AIO transparently fuses
1177L<IO::AIO> and AnyEvent together, giving AnyEvent access to event-based 1187L<IO::AIO> and AnyEvent together, giving AnyEvent access to event-based
1178file I/O, and much more. 1188file I/O, and much more.
1189
1190=item L<AnyEvent::Fork>, L<AnyEvent::Fork::RPC>, L<AnyEvent::Fork::Pool>, L<AnyEvent::Fork::Remote>
1191
1192These let you safely fork new subprocesses, either locally or
1193remotely (e.g.v ia ssh), using some RPC protocol or not, without
1194the limitations normally imposed by fork (AnyEvent works fine for
1195example). Dynamically-resized worker pools are obviously included as well.
1196
1197And they are quite tiny and fast as well - "abusing" L<AnyEvent::Fork>
1198just to exec external programs can easily beat using C<fork> and C<exec>
1199(or even C<system>) in most programs.
1179 1200
1180=item L<AnyEvent::Filesys::Notify> 1201=item L<AnyEvent::Filesys::Notify>
1181 1202
1182AnyEvent is good for non-blocking stuff, but it can't detect file or 1203AnyEvent is good for non-blocking stuff, but it can't detect file or
1183path changes (e.g. "watch this directory for new files", "watch this 1204path changes (e.g. "watch this directory for new files", "watch this
1185do just that in a portbale fashion, supporting inotify on GNU/Linux and 1206do just that in a portbale fashion, supporting inotify on GNU/Linux and
1186some weird, without doubt broken, stuff on OS X to monitor files. It can 1207some weird, without doubt broken, stuff on OS X to monitor files. It can
1187fall back to blocking scans at regular intervals transparently on other 1208fall back to blocking scans at regular intervals transparently on other
1188platforms, so it's about as portable as it gets. 1209platforms, so it's about as portable as it gets.
1189 1210
1190(I haven't used it myself, but I haven't heard anybody complaining about 1211(I haven't used it myself, but it seems the biggest problem with it is
1191it yet). 1212it quite bad performance).
1192 1213
1193=item L<AnyEvent::DBI> 1214=item L<AnyEvent::DBI>
1194 1215
1195Executes L<DBI> requests asynchronously in a proxy process for you, 1216Executes L<DBI> requests asynchronously in a proxy process for you,
1196notifying you in an event-based way when the operation is finished. 1217notifying you in an event-based way when the operation is finished.
1197
1198=item L<AnyEvent::HTTPD>
1199
1200A simple embedded webserver.
1201 1218
1202=item L<AnyEvent::FastPing> 1219=item L<AnyEvent::FastPing>
1203 1220
1204The fastest ping in the west. 1221The fastest ping in the west.
1205 1222
1223 1240
1224=cut 1241=cut
1225 1242
1226package AnyEvent; 1243package AnyEvent;
1227 1244
1228# basically a tuned-down version of common::sense 1245BEGIN {
1229sub common_sense { 1246 require "AnyEvent/constants.pl";
1230 # from common:.sense 3.4 1247 &AnyEvent::common_sense;
1231 ${^WARNING_BITS} ^= ${^WARNING_BITS} ^ "\x3c\x3f\x33\x00\x0f\xf0\x0f\xc0\xf0\xfc\x33\x00";
1232 # use strict vars subs - NO UTF-8, as Util.pm doesn't like this atm. (uts46data.pl)
1233 $^H |= 0x00000600;
1234} 1248}
1235
1236BEGIN { AnyEvent::common_sense }
1237 1249
1238use Carp (); 1250use Carp ();
1239 1251
1240our $VERSION = '6.02'; 1252our $VERSION = '7.05';
1241our $MODEL; 1253our $MODEL;
1242our @ISA; 1254our @ISA;
1243our @REGISTRY; 1255our @REGISTRY;
1244our $VERBOSE; 1256our $VERBOSE;
1245our $MAX_SIGNAL_LATENCY = 10;
1246our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred 1257our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred
1258our $MAX_SIGNAL_LATENCY = $ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY} || 10; # executes after the BEGIN block below (tainting!)
1247 1259
1248BEGIN { 1260BEGIN {
1249 require "AnyEvent/constants.pl";
1250
1251 eval "sub TAINT (){" . (${^TAINT}*1) . "}"; 1261 eval "sub TAINT (){" . (${^TAINT}*1) . "}";
1252 1262
1253 delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} 1263 delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV}
1254 if ${^TAINT}; 1264 if ${^TAINT};
1255 1265
1259 @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} = () 1269 @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} = ()
1260 if ${^TAINT}; 1270 if ${^TAINT};
1261 1271
1262 # $ENV{PERL_ANYEVENT_xxx} now valid 1272 # $ENV{PERL_ANYEVENT_xxx} now valid
1263 1273
1264 $VERBOSE = length $ENV{PERL_ANYEVENT_VERBOSE} ? $ENV{PERL_ANYEVENT_VERBOSE}*1 : 3; 1274 $VERBOSE = length $ENV{PERL_ANYEVENT_VERBOSE} ? $ENV{PERL_ANYEVENT_VERBOSE}*1 : 4;
1265 1275
1266 my $idx; 1276 my $idx;
1267 $PROTOCOL{$_} = ++$idx 1277 $PROTOCOL{$_} = ++$idx
1268 for reverse split /\s*,\s*/, 1278 for reverse split /\s*,\s*/,
1269 $ENV{PERL_ANYEVENT_PROTOCOLS} || "ipv4,ipv6"; 1279 $ENV{PERL_ANYEVENT_PROTOCOLS} || "ipv4,ipv6";
1303 () 1313 ()
1304} 1314}
1305 1315
1306sub log($$;@) { 1316sub log($$;@) {
1307 # only load the big bloated module when we actually are about to log something 1317 # only load the big bloated module when we actually are about to log something
1308 if ($_[0] <= $VERBOSE) { # also catches non-numeric levels(!) 1318 if ($_[0] <= ($VERBOSE || 1)) { # also catches non-numeric levels(!) and fatal
1309 require AnyEvent::Log; 1319 local ($!, $@);
1320 require AnyEvent::Log; # among other things, sets $VERBOSE to 9
1310 # AnyEvent::Log overwrites this function 1321 # AnyEvent::Log overwrites this function
1311 goto &log; 1322 goto &log;
1312 } 1323 }
1313 1324
1314 0 # not logged 1325 0 # not logged
1315} 1326}
1316 1327
1328sub _logger($;$) {
1329 my ($level, $renabled) = @_;
1330
1331 $$renabled = $level <= $VERBOSE;
1332
1333 my $logger = [(caller)[0], $level, $renabled];
1334
1335 $AnyEvent::Log::LOGGER{$logger+0} = $logger;
1336
1337# return unless defined wantarray;
1338#
1339# require AnyEvent::Util;
1340# my $guard = AnyEvent::Util::guard (sub {
1341# # "clean up"
1342# delete $LOGGER{$logger+0};
1343# });
1344#
1345# sub {
1346# return 0 unless $$renabled;
1347#
1348# $guard if 0; # keep guard alive, but don't cause runtime overhead
1349# require AnyEvent::Log unless $AnyEvent::Log::VERSION;
1350# package AnyEvent::Log;
1351# _log ($logger->[0], $level, @_) # logger->[0] has been converted at load time
1352# }
1353}
1354
1317if (length $ENV{PERL_ANYEVENT_LOG}) { 1355if (length $ENV{PERL_ANYEVENT_LOG}) {
1318 require AnyEvent::Log; # AnyEvent::Log does the thing for us 1356 require AnyEvent::Log; # AnyEvent::Log does the thing for us
1319} 1357}
1320 1358
1321our @models = ( 1359our @models = (
1322 [EV:: => AnyEvent::Impl::EV:: , 1], 1360 [EV:: => AnyEvent::Impl::EV::],
1323 [AnyEvent::Loop:: => AnyEvent::Impl::Perl:: , 1], 1361 [AnyEvent::Loop:: => AnyEvent::Impl::Perl::],
1324 # everything below here will not (normally) be autoprobed 1362 # everything below here will not (normally) be autoprobed
1325 # as the pure perl backend should work everywhere 1363 # as the pure perl backend should work everywhere
1326 # and is usually faster 1364 # and is usually faster
1365 [Irssi:: => AnyEvent::Impl::Irssi::], # Irssi has a bogus "Event" package, so msut be near the top
1327 [Event:: => AnyEvent::Impl::Event::, 1], 1366 [Event:: => AnyEvent::Impl::Event::], # slow, stable
1328 [Glib:: => AnyEvent::Impl::Glib:: , 1], # becomes extremely slow with many watchers 1367 [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers
1368 # everything below here should not be autoloaded
1329 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy 1369 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy
1330 [Irssi:: => AnyEvent::Impl::Irssi::], # Irssi has a bogus "Event" package
1331 [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles 1370 [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles
1332 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program 1371 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program
1333 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza 1372 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza
1334 [Wx:: => AnyEvent::Impl::POE::], 1373 [Wx:: => AnyEvent::Impl::POE::],
1335 [Prima:: => AnyEvent::Impl::POE::], 1374 [Prima:: => AnyEvent::Impl::POE::],
1364our @methods = qw(io timer time now now_update signal child idle condvar); 1403our @methods = qw(io timer time now now_update signal child idle condvar);
1365 1404
1366sub detect() { 1405sub detect() {
1367 return $MODEL if $MODEL; # some programs keep references to detect 1406 return $MODEL if $MODEL; # some programs keep references to detect
1368 1407
1408 # IO::Async::Loop::AnyEvent is extremely evil, refuse to work with it
1409 # the author knows about the problems and what it does to AnyEvent as a whole
1410 # (and the ability of others to use AnyEvent), but simply wants to abuse AnyEvent
1411 # anyway.
1412 AnyEvent::log fatal => "IO::Async::Loop::AnyEvent detected - that module is broken by\n"
1413 . "design, abuses internals and breaks AnyEvent - will not continue."
1414 if exists $INC{"IO/Async/Loop/AnyEvent.pm"};
1415
1369 local $!; # for good measure 1416 local $!; # for good measure
1370 local $SIG{__DIE__}; # we use eval 1417 local $SIG{__DIE__}; # we use eval
1371 1418
1372 # free some memory 1419 # free some memory
1373 *detect = sub () { $MODEL }; 1420 *detect = sub () { $MODEL };
1381 1428
1382 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z0-9:]+)$/) { 1429 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z0-9:]+)$/) {
1383 my $model = $1; 1430 my $model = $1;
1384 $model = "AnyEvent::Impl::$model" unless $model =~ s/::$//; 1431 $model = "AnyEvent::Impl::$model" unless $model =~ s/::$//;
1385 if (eval "require $model") { 1432 if (eval "require $model") {
1386 AnyEvent::log 7 => "loaded model '$model' (forced by \$ENV{PERL_ANYEVENT_MODEL}), using it."; 1433 AnyEvent::log 7 => "Loaded model '$model' (forced by \$ENV{PERL_ANYEVENT_MODEL}), using it.";
1387 $MODEL = $model; 1434 $MODEL = $model;
1388 } else { 1435 } else {
1389 AnyEvent::log 5 => "unable to load model '$model' (from \$ENV{PERL_ANYEVENT_MODEL}):\n$@"; 1436 AnyEvent::log 4 => "Unable to load model '$model' (from \$ENV{PERL_ANYEVENT_MODEL}):\n$@";
1390 } 1437 }
1391 } 1438 }
1392 1439
1393 # check for already loaded models 1440 # check for already loaded models
1394 unless ($MODEL) { 1441 unless ($MODEL) {
1395 for (@REGISTRY, @models) { 1442 for (@REGISTRY, @models) {
1396 my ($package, $model) = @$_; 1443 my ($package, $model) = @$_;
1397 if (${"$package\::VERSION"} > 0) { 1444 if (${"$package\::VERSION"} > 0) {
1398 if (eval "require $model") { 1445 if (eval "require $model") {
1399 AnyEvent::log 7 => "autodetected model '$model', using it."; 1446 AnyEvent::log 7 => "Autodetected model '$model', using it.";
1447 $MODEL = $model;
1448 last;
1449 } else {
1450 AnyEvent::log 8 => "Detected event loop $package, but cannot load '$model', skipping: $@";
1451 }
1452 }
1453 }
1454
1455 unless ($MODEL) {
1456 # try to autoload a model
1457 for (@REGISTRY, @models) {
1458 my ($package, $model) = @$_;
1459 if (
1460 eval "require $package"
1461 and ${"$package\::VERSION"} > 0
1462 and eval "require $model"
1463 ) {
1464 AnyEvent::log 7 => "Autoloaded model '$model', using it.";
1400 $MODEL = $model; 1465 $MODEL = $model;
1401 last; 1466 last;
1402 } 1467 }
1403 } 1468 }
1404 }
1405
1406 unless ($MODEL) {
1407 # try to autoload a model
1408 for (@REGISTRY, @models) {
1409 my ($package, $model, $autoload) = @$_;
1410 if (
1411 $autoload
1412 and eval "require $package"
1413 and ${"$package\::VERSION"} > 0
1414 and eval "require $model"
1415 ) {
1416 AnyEvent::log 7 => "autoloaded model '$model', using it.";
1417 $MODEL = $model;
1418 last;
1419 }
1420 }
1421 1469
1422 $MODEL 1470 $MODEL
1423 or die "AnyEvent: backend autodetection failed - did you properly install AnyEvent?"; 1471 or AnyEvent::log fatal => "Backend autodetection failed - did you properly install AnyEvent?";
1424 } 1472 }
1425 } 1473 }
1426 1474
1427 # free memory only needed for probing 1475 # free memory only needed for probing
1428 undef @models; 1476 undef @models;
1575 # probe for availability of Time::HiRes 1623 # probe for availability of Time::HiRes
1576 if (eval "use Time::HiRes (); Time::HiRes::time (); 1") { 1624 if (eval "use Time::HiRes (); Time::HiRes::time (); 1") {
1577 *time = sub { Time::HiRes::time () }; 1625 *time = sub { Time::HiRes::time () };
1578 *AE::time = \& Time::HiRes::time ; 1626 *AE::time = \& Time::HiRes::time ;
1579 *now = \&time; 1627 *now = \&time;
1580 AnyEvent::log 8 => "AnyEvent: using Time::HiRes for sub-second timing accuracy."; 1628 AnyEvent::log 8 => "using Time::HiRes for sub-second timing accuracy.";
1581 # if (eval "use POSIX (); (POSIX::times())... 1629 # if (eval "use POSIX (); (POSIX::times())...
1582 } else { 1630 } else {
1583 *time = sub { CORE::time }; 1631 *time = sub { CORE::time };
1584 *AE::time = sub (){ CORE::time }; 1632 *AE::time = sub (){ CORE::time };
1585 *now = \&time; 1633 *now = \&time;
1586 AnyEvent::log 3 => "using built-in time(), WARNING, no sub-second resolution!"; 1634 AnyEvent::log 3 => "Using built-in time(), no sub-second resolution!";
1587 } 1635 }
1588 }; 1636 };
1589 die if $@; 1637 die if $@;
1590 1638
1591 &time 1639 &time
1685 1733
1686sub signal { 1734sub signal {
1687 eval q{ # poor man's autoloading {} 1735 eval q{ # poor man's autoloading {}
1688 # probe for availability of Async::Interrupt 1736 # probe for availability of Async::Interrupt
1689 if (_have_async_interrupt) { 1737 if (_have_async_interrupt) {
1690 AnyEvent::log 8 => "using Async::Interrupt for race-free signal handling."; 1738 AnyEvent::log 8 => "Using Async::Interrupt for race-free signal handling.";
1691 1739
1692 $SIGPIPE_R = new Async::Interrupt::EventPipe; 1740 $SIGPIPE_R = new Async::Interrupt::EventPipe;
1693 $SIG_IO = AE::io $SIGPIPE_R->fileno, 0, \&_signal_exec; 1741 $SIG_IO = AE::io $SIGPIPE_R->fileno, 0, \&_signal_exec;
1694 1742
1695 } else { 1743 } else {
1696 AnyEvent::log 8 => "using emulated perl signal handling with latency timer."; 1744 AnyEvent::log 8 => "Using emulated perl signal handling with latency timer.";
1697 1745
1698 if (AnyEvent::WIN32) { 1746 if (AnyEvent::WIN32) {
1699 require AnyEvent::Util; 1747 require AnyEvent::Util;
1700 1748
1701 ($SIGPIPE_R, $SIGPIPE_W) = AnyEvent::Util::portable_pipe (); 1749 ($SIGPIPE_R, $SIGPIPE_W) = AnyEvent::Util::portable_pipe ();
2037 2085
2038=over 4 2086=over 4
2039 2087
2040=item C<PERL_ANYEVENT_VERBOSE> 2088=item C<PERL_ANYEVENT_VERBOSE>
2041 2089
2042By default, AnyEvent will only log messages with loglevel C<3> 2090By default, AnyEvent will log messages with loglevel C<4> (C<error>) or
2043(C<critical>) or higher (see L<AnyEvent::Log>). You can set this 2091higher (see L<AnyEvent::Log>). You can set this environment variable to a
2044environment variable to a numerical loglevel to make AnyEvent more (or 2092numerical loglevel to make AnyEvent more (or less) talkative.
2045less) talkative.
2046 2093
2047If you want to do more than just set the global logging level 2094If you want to do more than just set the global logging level
2048you should have a look at C<PERL_ANYEVENT_LOG>, which allows much more 2095you should have a look at C<PERL_ANYEVENT_LOG>, which allows much more
2049complex specifications. 2096complex specifications.
2050 2097
2051When set to C<0> (C<off>), then no messages whatsoever will be logged with 2098When set to C<0> (C<off>), then no messages whatsoever will be logged with
2052the default logging settings. 2099everything else at defaults.
2053 2100
2054When set to C<5> or higher (C<warn>), causes AnyEvent to warn about 2101When set to C<5> or higher (C<warn>), AnyEvent warns about unexpected
2055unexpected conditions, such as not being able to load the event model 2102conditions, such as not being able to load the event model specified by
2056specified by C<PERL_ANYEVENT_MODEL>, or a guard callback throwing an 2103C<PERL_ANYEVENT_MODEL>, or a guard callback throwing an exception - this
2057exception - this is the minimum recommended level. 2104is the minimum recommended level for use during development.
2058 2105
2059When set to C<7> or higher (info), cause AnyEvent to report which event model it 2106When set to C<7> or higher (info), AnyEvent reports which event model it
2060chooses. 2107chooses.
2061 2108
2062When set to C<8> or higher (debug), then AnyEvent will report extra information on 2109When set to C<8> or higher (debug), then AnyEvent will report extra
2063which optional modules it loads and how it implements certain features. 2110information on which optional modules it loads and how it implements
2111certain features.
2064 2112
2065=item C<PERL_ANYEVENT_LOG> 2113=item C<PERL_ANYEVENT_LOG>
2066 2114
2067Accepts rather complex logging specifications. For example, you could log 2115Accepts rather complex logging specifications. For example, you could log
2068all C<debug> messages of some module to stderr, warnings and above to 2116all C<debug> messages of some module to stderr, warnings and above to
2075This variable is evaluated when AnyEvent (or L<AnyEvent::Log>) is loaded, 2123This variable is evaluated when AnyEvent (or L<AnyEvent::Log>) is loaded,
2076so will take effect even before AnyEvent has initialised itself. 2124so will take effect even before AnyEvent has initialised itself.
2077 2125
2078Note that specifying this environment variable causes the L<AnyEvent::Log> 2126Note that specifying this environment variable causes the L<AnyEvent::Log>
2079module to be loaded, while C<PERL_ANYEVENT_VERBOSE> does not, so only 2127module to be loaded, while C<PERL_ANYEVENT_VERBOSE> does not, so only
2080using the latter saves a few hundred kB of memory until the first message 2128using the latter saves a few hundred kB of memory unless a module
2081is being logged. 2129explicitly needs the extra features of AnyEvent::Log.
2082 2130
2083=item C<PERL_ANYEVENT_STRICT> 2131=item C<PERL_ANYEVENT_STRICT>
2084 2132
2085AnyEvent does not do much argument checking by default, as thorough 2133AnyEvent does not do much argument checking by default, as thorough
2086argument checking is very costly. Setting this variable to a true value 2134argument checking is very costly. Setting this variable to a true value
2095C<PERL_ANYEVENT_STRICT=1> in your environment while developing programs 2143C<PERL_ANYEVENT_STRICT=1> in your environment while developing programs
2096can be very useful, however. 2144can be very useful, however.
2097 2145
2098=item C<PERL_ANYEVENT_DEBUG_SHELL> 2146=item C<PERL_ANYEVENT_DEBUG_SHELL>
2099 2147
2100If this env variable is set, then its contents will be interpreted by 2148If this env variable is nonempty, then its contents will be interpreted by
2101C<AnyEvent::Socket::parse_hostport> (after replacing every occurance of 2149C<AnyEvent::Socket::parse_hostport> and C<AnyEvent::Debug::shell> (after
2102C<$$> by the process pid) and an C<AnyEvent::Debug::shell> is bound on 2150replacing every occurance of C<$$> by the process pid). The shell object
2103that port. The shell object is saved in C<$AnyEvent::Debug::SHELL>. 2151is saved in C<$AnyEvent::Debug::SHELL>.
2104 2152
2105This happens when the first watcher is created. 2153This happens when the first watcher is created.
2106 2154
2107For example, to bind a debug shell on a unix domain socket in 2155For example, to bind a debug shell on a unix domain socket in
2108F<< /tmp/debug<pid>.sock >>, you could use this: 2156F<< /tmp/debug<pid>.sock >>, you could use this:
2109 2157
2110 PERL_ANYEVENT_DEBUG_SHELL=/tmp/debug\$\$.sock perlprog 2158 PERL_ANYEVENT_DEBUG_SHELL=/tmp/debug\$\$.sock perlprog
2159 # connect with e.g.: socat readline /tmp/debug123.sock
2111 2160
2161Or to bind to tcp port 4545 on localhost:
2162
2163 PERL_ANYEVENT_DEBUG_SHELL=127.0.0.1:4545 perlprog
2164 # connect with e.g.: telnet localhost 4545
2165
2112Note that creating sockets in F</tmp> is very unsafe on multiuser 2166Note that creating sockets in F</tmp> or on localhost is very unsafe on
2113systems. 2167multiuser systems.
2114 2168
2115=item C<PERL_ANYEVENT_DEBUG_WRAP> 2169=item C<PERL_ANYEVENT_DEBUG_WRAP>
2116 2170
2117Can be set to C<0>, C<1> or C<2> and enables wrapping of all watchers for 2171Can be set to C<0>, C<1> or C<2> and enables wrapping of all watchers for
2118debugging purposes. See C<AnyEvent::Debug::wrap> for details. 2172debugging purposes. See C<AnyEvent::Debug::wrap> for details.
2135For example, to force the pure perl model (L<AnyEvent::Loop::Perl>) you 2189For example, to force the pure perl model (L<AnyEvent::Loop::Perl>) you
2136could start your program like this: 2190could start your program like this:
2137 2191
2138 PERL_ANYEVENT_MODEL=Perl perl ... 2192 PERL_ANYEVENT_MODEL=Perl perl ...
2139 2193
2194=item C<PERL_ANYEVENT_IO_MODEL>
2195
2196The current file I/O model - see L<AnyEvent::IO> for more info.
2197
2198At the moment, only C<Perl> (small, pure-perl, synchronous) and
2199C<IOAIO> (truly asynchronous) are supported. The default is C<IOAIO> if
2200L<AnyEvent::AIO> can be loaded, otherwise it is C<Perl>.
2201
2140=item C<PERL_ANYEVENT_PROTOCOLS> 2202=item C<PERL_ANYEVENT_PROTOCOLS>
2141 2203
2142Used by both L<AnyEvent::DNS> and L<AnyEvent::Socket> to determine preferences 2204Used by both L<AnyEvent::DNS> and L<AnyEvent::Socket> to determine preferences
2143for IPv4 or IPv6. The default is unspecified (and might change, or be the result 2205for IPv4 or IPv6. The default is unspecified (and might change, or be the result
2144of auto probing). 2206of auto probing).
2182=item C<PERL_ANYEVENT_MAX_OUTSTANDING_DNS> 2244=item C<PERL_ANYEVENT_MAX_OUTSTANDING_DNS>
2183 2245
2184The default value for the C<max_outstanding> parameter for the default DNS 2246The default value for the C<max_outstanding> parameter for the default DNS
2185resolver - this is the maximum number of parallel DNS requests that are 2247resolver - this is the maximum number of parallel DNS requests that are
2186sent to the DNS server. 2248sent to the DNS server.
2249
2250=item C<PERL_ANYEVENT_MAX_SIGNAL_LATENCY>
2251
2252Perl has inherently racy signal handling (you can basically choose between
2253losing signals and memory corruption) - pure perl event loops (including
2254C<AnyEvent::Loop>, when C<Async::Interrupt> isn't available) therefore
2255have to poll regularly to avoid losing signals.
2256
2257Some event loops are racy, but don't poll regularly, and some event loops
2258are written in C but are still racy. For those event loops, AnyEvent
2259installs a timer that regularly wakes up the event loop.
2260
2261By default, the interval for this timer is C<10> seconds, but you can
2262override this delay with this environment variable (or by setting
2263the C<$AnyEvent::MAX_SIGNAL_LATENCY> variable before creating signal
2264watchers).
2265
2266Lower values increase CPU (and energy) usage, higher values can introduce
2267long delays when reaping children or waiting for signals.
2268
2269The L<AnyEvent::Async> module, if available, will be used to avoid this
2270polling (with most event loops).
2187 2271
2188=item C<PERL_ANYEVENT_RESOLV_CONF> 2272=item C<PERL_ANYEVENT_RESOLV_CONF>
2189 2273
2190The absolute path to a F<resolv.conf>-style file to use instead of 2274The absolute path to a F<resolv.conf>-style file to use instead of
2191F</etc/resolv.conf> (or the OS-specific configuration) in the default 2275F</etc/resolv.conf> (or the OS-specific configuration) in the default
2848This module is part of perl since release 5.008. It will be used when the 2932This module is part of perl since release 5.008. It will be used when the
2849chosen event library does not come with a timing source of its own. The 2933chosen event library does not come with a timing source of its own. The
2850pure-perl event loop (L<AnyEvent::Loop>) will additionally load it to 2934pure-perl event loop (L<AnyEvent::Loop>) will additionally load it to
2851try to use a monotonic clock for timing stability. 2935try to use a monotonic clock for timing stability.
2852 2936
2937=item L<AnyEvent::AIO> (and L<IO::AIO>)
2938
2939The default implementation of L<AnyEvent::IO> is to do I/O synchronously,
2940stopping programs while they access the disk, which is fine for a lot of
2941programs.
2942
2943Installing AnyEvent::AIO (and its IO::AIO dependency) makes it switch to
2944a true asynchronous implementation, so event processing can continue even
2945while waiting for disk I/O.
2946
2853=back 2947=back
2854 2948
2855 2949
2856=head1 FORK 2950=head1 FORK
2857 2951
2868usually happens when the first AnyEvent watcher is created, or the library 2962usually happens when the first AnyEvent watcher is created, or the library
2869is loaded). 2963is loaded).
2870 2964
2871If you have to fork, you must either do so I<before> creating your first 2965If you have to fork, you must either do so I<before> creating your first
2872watcher OR you must not use AnyEvent at all in the child OR you must do 2966watcher OR you must not use AnyEvent at all in the child OR you must do
2873something completely out of the scope of AnyEvent. 2967something completely out of the scope of AnyEvent (see below).
2874 2968
2875The problem of doing event processing in the parent I<and> the child 2969The problem of doing event processing in the parent I<and> the child
2876is much more complicated: even for backends that I<are> fork-aware or 2970is much more complicated: even for backends that I<are> fork-aware or
2877fork-safe, their behaviour is not usually what you want: fork clones all 2971fork-safe, their behaviour is not usually what you want: fork clones all
2878watchers, that means all timers, I/O watchers etc. are active in both 2972watchers, that means all timers, I/O watchers etc. are active in both
2879parent and child, which is almost never what you want. USing C<exec> 2973parent and child, which is almost never what you want. Using C<exec>
2880to start worker children from some kind of manage rprocess is usually 2974to start worker children from some kind of manage prrocess is usually
2881preferred, because it is much easier and cleaner, at the expense of having 2975preferred, because it is much easier and cleaner, at the expense of having
2882to have another binary. 2976to have another binary.
2977
2978In addition to logical problems with fork, there are also implementation
2979problems. For example, on POSIX systems, you cannot fork at all in Perl
2980code if a thread (I am talking of pthreads here) was ever created in the
2981process, and this is just the tip of the iceberg. In general, using fork
2982from Perl is difficult, and attempting to use fork without an exec to
2983implement some kind of parallel processing is almost certainly doomed.
2984
2985To safely fork and exec, you should use a module such as
2986L<Proc::FastSpawn> that let's you safely fork and exec new processes.
2987
2988If you want to do multiprocessing using processes, you can
2989look at the L<AnyEvent::Fork> module (and some related modules
2990such as L<AnyEvent::Fork::RPC>, L<AnyEvent::Fork::Pool> and
2991L<AnyEvent::Fork::Remote>). This module allows you to safely create
2992subprocesses without any limitations - you can use X11 toolkits or
2993AnyEvent in the children created by L<AnyEvent::Fork> safely and without
2994any special precautions.
2883 2995
2884 2996
2885=head1 SECURITY CONSIDERATIONS 2997=head1 SECURITY CONSIDERATIONS
2886 2998
2887AnyEvent can be forced to load any event model via 2999AnyEvent can be forced to load any event model via
2940L<AnyEvent::Impl::FLTK>. 3052L<AnyEvent::Impl::FLTK>.
2941 3053
2942Non-blocking handles, pipes, stream sockets, TCP clients and 3054Non-blocking handles, pipes, stream sockets, TCP clients and
2943servers: L<AnyEvent::Handle>, L<AnyEvent::Socket>, L<AnyEvent::TLS>. 3055servers: L<AnyEvent::Handle>, L<AnyEvent::Socket>, L<AnyEvent::TLS>.
2944 3056
3057Asynchronous File I/O: L<AnyEvent::IO>.
3058
2945Asynchronous DNS: L<AnyEvent::DNS>. 3059Asynchronous DNS: L<AnyEvent::DNS>.
2946 3060
2947Thread support: L<Coro>, L<Coro::AnyEvent>, L<Coro::EV>, L<Coro::Event>. 3061Thread support: L<Coro>, L<Coro::AnyEvent>, L<Coro::EV>, L<Coro::Event>.
2948 3062
2949Nontrivial usage examples: L<AnyEvent::GPSD>, L<AnyEvent::IRC>, 3063Nontrivial usage examples: L<AnyEvent::GPSD>, L<AnyEvent::IRC>,
2951 3065
2952 3066
2953=head1 AUTHOR 3067=head1 AUTHOR
2954 3068
2955 Marc Lehmann <schmorp@schmorp.de> 3069 Marc Lehmann <schmorp@schmorp.de>
2956 http://home.schmorp.de/ 3070 http://anyevent.schmorp.de
2957 3071
2958=cut 3072=cut
2959 3073
29601 30741
2961 3075

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines