File Coverage

blib/lib/AnyEvent.pm
Criterion Covered Total %
statement 142 193 73.5
branch 60 98 61.2
condition 12 28 42.8
subroutine 36 56 64.2
pod 14 14 100.0
total 264 389 67.8


line stmt bran cond sub pod time code
1             =head1 NAME
2              
3             AnyEvent - the DBI of event loop programming
4              
5             EV, Event, Glib, Tk, UV, Perl, Event::Lib, Irssi, rxvt-unicode, IO::Async,
6             Qt, FLTK and POE are various supported event loops/environments.
7              
8             =head1 SYNOPSIS
9              
10             use AnyEvent;
11              
12             # if you prefer function calls, look at the AE manpage for
13             # an alternative API.
14              
15             # file handle or descriptor readable
16             my $w = AnyEvent->io (fh => $fh, poll => "r", cb => sub { ... });
17              
18             # one-shot or repeating timers
19             my $w = AnyEvent->timer (after => $seconds, cb => sub { ... });
20             my $w = AnyEvent->timer (after => $seconds, interval => $seconds, cb => ...);
21              
22             print AnyEvent->now; # prints current event loop time
23             print AnyEvent->time; # think Time::HiRes::time or simply CORE::time.
24              
25             # POSIX signal
26             my $w = AnyEvent->signal (signal => "TERM", cb => sub { ... });
27              
28             # child process exit
29             my $w = AnyEvent->child (pid => $pid, cb => sub {
30             my ($pid, $status) = @_;
31             ...
32             });
33              
34             # called when event loop idle (if applicable)
35             my $w = AnyEvent->idle (cb => sub { ... });
36              
37             my $w = AnyEvent->condvar; # stores whether a condition was flagged
38             $w->send; # wake up current and all future recv's
39             $w->recv; # enters "main loop" till $condvar gets ->send
40             # use a condvar in callback mode:
41             $w->cb (sub { $_[0]->recv });
42              
43             =head1 INTRODUCTION/TUTORIAL
44              
45             This manpage is mainly a reference manual. If you are interested
46             in a tutorial or some gentle introduction, have a look at the
47             L manpage.
48              
49             =head1 SUPPORT
50              
51             An FAQ document is available as L.
52              
53             There also is a mailinglist for discussing all things AnyEvent, and an IRC
54             channel, too.
55              
56             See the AnyEvent project page at the B
57             Repository>, at L, for more info.
58              
59             =head1 WHY YOU SHOULD USE THIS MODULE (OR NOT)
60              
61             Glib, POE, IO::Async, Event... CPAN offers event models by the dozen
62             nowadays. So what is different about AnyEvent?
63              
64             Executive Summary: AnyEvent is I, AnyEvent is I
65             policy> and AnyEvent is I.
66              
67             First and foremost, I itself, it only
68             interfaces to whatever event model the main program happens to use, in a
69             pragmatic way. For event models and certain classes of immortals alike,
70             the statement "there can only be one" is a bitter reality: In general,
71             only one event loop can be active at the same time in a process. AnyEvent
72             cannot change this, but it can hide the differences between those event
73             loops.
74              
75             The goal of AnyEvent is to offer module authors the ability to do event
76             programming (waiting for I/O or timer events) without subscribing to a
77             religion, a way of living, and most importantly: without forcing your
78             module users into the same thing by forcing them to use the same event
79             model you use.
80              
81             For modules like POE or IO::Async (which is a total misnomer as it is
82             actually doing all I/O I...), using them in your module is
83             like joining a cult: After you join, you are dependent on them and you
84             cannot use anything else, as they are simply incompatible to everything
85             that isn't them. What's worse, all the potential users of your
86             module are I forced to use the same event loop you use.
87              
88             AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works
89             fine. AnyEvent + Tk works fine etc. etc. but none of these work together
90             with the rest: POE + EV? No go. Tk + Event? No go. Again: if your module
91             uses one of those, every user of your module has to use it, too. But if
92             your module uses AnyEvent, it works transparently with all event models it
93             supports (including stuff like IO::Async, as long as those use one of the
94             supported event loops. It is easy to add new event loops to AnyEvent, too,
95             so it is future-proof).
96              
97             In addition to being free of having to use I
98             model>, AnyEvent also is free of bloat and policy: with POE or similar
99             modules, you get an enormous amount of code and strict rules you have to
100             follow. AnyEvent, on the other hand, is lean and to the point, by only
101             offering the functionality that is necessary, in as thin as a wrapper as
102             technically possible.
103              
104             Of course, AnyEvent comes with a big (and fully optional!) toolbox
105             of useful functionality, such as an asynchronous DNS resolver, 100%
106             non-blocking connects (even with TLS/SSL, IPv6 and on broken platforms
107             such as Windows) and lots of real-world knowledge and workarounds for
108             platform bugs and differences.
109              
110             Now, if you I lots of policy (this can arguably be somewhat
111             useful) and you want to force your users to use the one and only event
112             model, you should I use this module.
113              
114             =head1 DESCRIPTION
115              
116             L provides a uniform interface to various event loops. This
117             allows module authors to use event loop functionality without forcing
118             module users to use a specific event loop implementation (since more
119             than one event loop cannot coexist peacefully).
120              
121             The interface itself is vaguely similar, but not identical to the L
122             module.
123              
124             During the first call of any watcher-creation method, the module tries
125             to detect the currently loaded event loop by probing whether one of the
126             following modules is already loaded: L, L,
127             L, L, L, L, L, L. The first one
128             found is used. If none are detected, the module tries to load the first
129             four modules in the order given; but note that if L is not
130             available, the pure-perl L should always work, so
131             the other two are not normally tried.
132              
133             Because AnyEvent first checks for modules that are already loaded, loading
134             an event model explicitly before first using AnyEvent will likely make
135             that model the default. For example:
136              
137             use Tk;
138             use AnyEvent;
139              
140             # .. AnyEvent will likely default to Tk
141              
142             The I means that, if any module loads another event model and
143             starts using it, all bets are off - this case should be very rare though,
144             as very few modules hardcode event loops without announcing this very
145             loudly.
146              
147             The pure-perl implementation of AnyEvent is called C. Like
148             other event modules you can load it explicitly and enjoy the high
149             availability of that event loop :)
150              
151             =head1 WATCHERS
152              
153             AnyEvent has the central concept of a I, which is an object that
154             stores relevant data for each kind of event you are waiting for, such as
155             the callback to call, the file handle to watch, etc.
156              
157             These watchers are normal Perl objects with normal Perl lifetime. After
158             creating a watcher it will immediately "watch" for events and invoke the
159             callback when the event occurs (of course, only when the event model
160             is in control).
161              
162             Note that B
163             potentially in use by the event loop (such as C<$_> or C<$[>) and that B<<
164             callbacks must not C >>. The former is good programming practice in
165             Perl and the latter stems from the fact that exception handling differs
166             widely between event loops.
167              
168             To disable a watcher you have to destroy it (e.g. by setting the
169             variable you store it in to C or otherwise deleting all references
170             to it).
171              
172             All watchers are created by calling a method on the C class.
173              
174             Many watchers either are used with "recursion" (repeating timers for
175             example), or need to refer to their watcher object in other ways.
176              
177             One way to achieve that is this pattern:
178              
179             my $w; $w = AnyEvent->type (arg => value ..., cb => sub {
180             # you can use $w here, for example to undef it
181             undef $w;
182             });
183              
184             Note that C combination. This is necessary because in Perl,
185             my variables are only visible after the statement in which they are
186             declared.
187              
188             =head2 I/O WATCHERS
189              
190             $w = AnyEvent->io (
191             fh => ,
192             poll => <"r" or "w">,
193             cb => ,
194             );
195              
196             You can create an I/O watcher by calling the C<< AnyEvent->io >> method
197             with the following mandatory key-value pairs as arguments:
198              
199             C is the Perl I (or a naked file descriptor) to watch
200             for events (AnyEvent might or might not keep a reference to this file
201             handle). Note that only file handles pointing to things for which
202             non-blocking operation makes sense are allowed. This includes sockets,
203             most character devices, pipes, fifos and so on, but not for example files
204             or block devices.
205              
206             C must be a string that is either C or C, which creates a
207             watcher waiting for "r"eadable or "w"ritable events, respectively.
208              
209             C is the callback to invoke each time the file handle becomes ready.
210              
211             Although the callback might get passed parameters, their value and
212             presence is undefined and you cannot rely on them. Portable AnyEvent
213             callbacks cannot use arguments passed to I/O watcher callbacks.
214              
215             The I/O watcher might use the underlying file descriptor or a copy of it.
216             You must not close a file handle as long as any watcher is active on the
217             underlying file descriptor.
218              
219             Some event loops issue spurious readiness notifications, so you should
220             always use non-blocking calls when reading/writing from/to your file
221             handles.
222              
223             Example: wait for readability of STDIN, then read a line and disable the
224             watcher.
225              
226             my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub {
227             chomp (my $input = );
228             warn "read: $input\n";
229             undef $w;
230             });
231              
232             =head2 TIME WATCHERS
233              
234             $w = AnyEvent->timer (after => , cb => );
235              
236             $w = AnyEvent->timer (
237             after => ,
238             interval => ,
239             cb => ,
240             );
241              
242             You can create a time watcher by calling the C<< AnyEvent->timer >>
243             method with the following mandatory arguments:
244              
245             C specifies after how many seconds (fractional values are
246             supported) the callback should be invoked. C is the callback to invoke
247             in that case.
248              
249             Although the callback might get passed parameters, their value and
250             presence is undefined and you cannot rely on them. Portable AnyEvent
251             callbacks cannot use arguments passed to time watcher callbacks.
252              
253             The callback will normally be invoked only once. If you specify another
254             parameter, C, as a strictly positive number (> 0), then the
255             callback will be invoked regularly at that interval (in fractional
256             seconds) after the first invocation. If C is specified with a
257             false value, then it is treated as if it were not specified at all.
258              
259             The callback will be rescheduled before invoking the callback, but no
260             attempt is made to avoid timer drift in most backends, so the interval is
261             only approximate.
262              
263             Example: fire an event after 7.7 seconds.
264              
265             my $w = AnyEvent->timer (after => 7.7, cb => sub {
266             warn "timeout\n";
267             });
268              
269             # to cancel the timer:
270             undef $w;
271              
272             Example 2: fire an event after 0.5 seconds, then roughly every second.
273              
274             my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub {
275             warn "timeout\n";
276             });
277              
278             =head3 TIMING ISSUES
279              
280             There are two ways to handle timers: based on real time (relative, "fire
281             in 10 seconds") and based on wallclock time (absolute, "fire at 12
282             o'clock").
283              
284             While most event loops expect timers to specified in a relative way, they
285             use absolute time internally. This makes a difference when your clock
286             "jumps", for example, when ntp decides to set your clock backwards from
287             the wrong date of 2014-01-01 to 2008-01-01, a watcher that is supposed to
288             fire "after a second" might actually take six years to finally fire.
289              
290             AnyEvent cannot compensate for this. The only event loop that is conscious
291             of these issues is L, which offers both relative (ev_timer, based
292             on true relative time) and absolute (ev_periodic, based on wallclock time)
293             timers.
294              
295             AnyEvent always prefers relative timers, if available, matching the
296             AnyEvent API.
297              
298             AnyEvent has two additional methods that return the "current time":
299              
300             =over 4
301              
302             =item AnyEvent->time
303              
304             This returns the "current wallclock time" as a fractional number of
305             seconds since the Epoch (the same thing as C
306             return, and the result is guaranteed to be compatible with those).
307              
308             It progresses independently of any event loop processing, i.e. each call
309             will check the system clock, which usually gets updated frequently.
310              
311             =item AnyEvent->now
312              
313             This also returns the "current wallclock time", but unlike C
314             this value might change only once per event loop iteration, depending on
315             the event loop (most return the same time as C
316             time that AnyEvent's timers get scheduled against.
317              
318             I
319             function to call when you want to know the current time.>
320              
321             This function is also often faster then C<< AnyEvent->time >>, and
322             thus the preferred method if you want some timestamp (for example,
323             L uses this to update its activity timeouts).
324              
325             The rest of this section is only of relevance if you try to be very exact
326             with your timing; you can skip it without a bad conscience.
327              
328             For a practical example of when these times differ, consider L
329             and L and the following set-up:
330              
331             The event loop is running and has just invoked one of your callbacks at
332             time=500 (assume no other callbacks delay processing). In your callback,
333             you wait a second by executing C (blocking the process for a
334             second) and then (at time=501) you create a relative timer that fires
335             after three seconds.
336              
337             With L, C<< AnyEvent->time >> and C<< AnyEvent->now >> will
338             both return C<501>, because that is the current time, and the timer will
339             be scheduled to fire at time=504 (C<501> + C<3>).
340              
341             With L, C<< AnyEvent->time >> returns C<501> (as that is the current
342             time), but C<< AnyEvent->now >> returns C<500>, as that is the time the
343             last event processing phase started. With L, your timer gets scheduled
344             to run at time=503 (C<500> + C<3>).
345              
346             In one sense, L is more exact, as it uses the current time
347             regardless of any delays introduced by event processing. However, most
348             callbacks do not expect large delays in processing, so this causes a
349             higher drift (and a lot more system calls to get the current time).
350              
351             In another sense, L is more exact, as your timer will be scheduled at
352             the same time, regardless of how long event processing actually took.
353              
354             In either case, if you care (and in most cases, you don't), then you
355             can get whatever behaviour you want with any event loop, by taking the
356             difference between C<< AnyEvent->time >> and C<< AnyEvent->now >> into
357             account.
358              
359             =item AnyEvent->now_update
360              
361             Some event loops (such as L or L) cache the current
362             time for each loop iteration (see the discussion of L<< AnyEvent->now >>,
363             above).
364              
365             When a callback runs for a long time (or when the process sleeps), then
366             this "current" time will differ substantially from the real time, which
367             might affect timers and time-outs.
368              
369             When this is the case, you can call this method, which will update the
370             event loop's idea of "current time".
371              
372             A typical example would be a script in a web server (e.g. C) -
373             when mod_perl executes the script, then the event loop will have the wrong
374             idea about the "current time" (being potentially far in the past, when the
375             script ran the last time). In that case you should arrange a call to C<<
376             AnyEvent->now_update >> each time the web server process wakes up again
377             (e.g. at the start of your script, or in a handler).
378              
379             Note that updating the time I cause some events to be handled.
380              
381             =back
382              
383             =head2 SIGNAL WATCHERS
384              
385             $w = AnyEvent->signal (signal => , cb => );
386              
387             You can watch for signals using a signal watcher, C is the signal
388             I in uppercase and without any C prefix, C is the Perl
389             callback to be invoked whenever a signal occurs.
390              
391             Although the callback might get passed parameters, their value and
392             presence is undefined and you cannot rely on them. Portable AnyEvent
393             callbacks cannot use arguments passed to signal watcher callbacks.
394              
395             Multiple signal occurrences can be clumped together into one callback
396             invocation, and callback invocation will be synchronous. Synchronous means
397             that it might take a while until the signal gets handled by the process,
398             but it is guaranteed not to interrupt any other callbacks.
399              
400             The main advantage of using these watchers is that you can share a signal
401             between multiple watchers, and AnyEvent will ensure that signals will not
402             interrupt your program at bad times.
403              
404             This watcher might use C<%SIG> (depending on the event loop used),
405             so programs overwriting those signals directly will likely not work
406             correctly.
407              
408             Example: exit on SIGINT
409              
410             my $w = AnyEvent->signal (signal => "INT", cb => sub { exit 1 });
411              
412             =head3 Restart Behaviour
413              
414             While restart behaviour is up to the event loop implementation, most will
415             not restart syscalls (that includes L and AnyEvent's
416             pure perl implementation).
417              
418             =head3 Safe/Unsafe Signals
419              
420             Perl signals can be either "safe" (synchronous to opcode handling)
421             or "unsafe" (asynchronous) - the former might delay signal delivery
422             indefinitely, the latter might corrupt your memory.
423              
424             AnyEvent signal handlers are, in addition, synchronous to the event loop,
425             i.e. they will not interrupt your running perl program but will only be
426             called as part of the normal event handling (just like timer, I/O etc.
427             callbacks, too).
428              
429             =head3 Signal Races, Delays and Workarounds
430              
431             Many event loops (e.g. Glib, Tk, Qt, IO::Async) do not support
432             attaching callbacks to signals in a generic way, which is a pity,
433             as you cannot do race-free signal handling in perl, requiring
434             C libraries for this. AnyEvent will try to do its best, which
435             means in some cases, signals will be delayed. The maximum time
436             a signal might be delayed is 10 seconds by default, but can
437             be overriden via C<$ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY}> or
438             C<$AnyEvent::MAX_SIGNAL_LATENCY> - see the L
439             section for details.
440              
441             All these problems can be avoided by installing the optional
442             L module, which works with most event loops. It will not
443             work with inherently broken event loops such as L or L
444             (and not with L currently). For those, you just have to suffer the
445             delays.
446              
447             =head2 CHILD PROCESS WATCHERS
448              
449             $w = AnyEvent->child (pid => , cb => );
450              
451             You can also watch for a child process exit and catch its exit status.
452              
453             The child process is specified by the C argument (on some backends,
454             using C<0> watches for any child process exit, on others this will
455             croak). The watcher will be triggered only when the child process has
456             finished and an exit status is available, not on any trace events
457             (stopped/continued).
458              
459             The callback will be called with the pid and exit status (as returned by
460             waitpid), so unlike other watcher types, you I rely on child watcher
461             callback arguments.
462              
463             This watcher type works by installing a signal handler for C,
464             and since it cannot be shared, nothing else should use SIGCHLD or reap
465             random child processes (waiting for specific child processes, e.g. inside
466             C, is just fine).
467              
468             There is a slight catch to child watchers, however: you usually start them
469             I the child process was created, and this means the process could
470             have exited already (and no SIGCHLD will be sent anymore).
471              
472             Not all event models handle this correctly (neither POE nor IO::Async do,
473             see their AnyEvent::Impl manpages for details), but even for event models
474             that I handle this correctly, they usually need to be loaded before
475             the process exits (i.e. before you fork in the first place). AnyEvent's
476             pure perl event loop handles all cases correctly regardless of when you
477             start the watcher.
478              
479             This means you cannot create a child watcher as the very first
480             thing in an AnyEvent program, you I to create at least one
481             watcher before you C the child (alternatively, you can call
482             C).
483              
484             As most event loops do not support waiting for child events, they will be
485             emulated by AnyEvent in most cases, in which case the latency and race
486             problems mentioned in the description of signal watchers apply.
487              
488             Example: fork a process and wait for it
489              
490             my $done = AnyEvent->condvar;
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.
496             my $pid = fork or exit 5;
497            
498             my $w = AnyEvent->child (
499             pid => $pid,
500             cb => sub {
501             my ($pid, $status) = @_;
502             warn "pid $pid exited with status $status";
503             $done->send;
504             },
505             );
506            
507             # do something else, then wait for process exit
508             $done->recv;
509              
510             =head2 IDLE WATCHERS
511              
512             $w = AnyEvent->idle (cb => );
513              
514             This will repeatedly invoke the callback after the process becomes idle,
515             until either the watcher is destroyed or new events have been detected.
516              
517             Idle watchers are useful when there is a need to do something, but it
518             is not so important (or wise) to do it instantly. The callback will be
519             invoked only when there is "nothing better to do", which is usually
520             defined as "all outstanding events have been handled and no new events
521             have been detected". That means that idle watchers ideally get invoked
522             when the event loop has just polled for new events but none have been
523             detected. Instead of blocking to wait for more events, the idle watchers
524             will be invoked.
525              
526             Unfortunately, most event loops do not really support idle watchers (only
527             EV, Event and Glib do it in a usable fashion) - for the rest, AnyEvent
528             will simply call the callback "from time to time".
529              
530             Example: read lines from STDIN, but only process them when the
531             program is otherwise idle:
532              
533             my @lines; # read data
534             my $idle_w;
535             my $io_w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub {
536             push @lines, scalar ;
537              
538             # start an idle watcher, if not already done
539             $idle_w ||= AnyEvent->idle (cb => sub {
540             # handle only one line, when there are lines left
541             if (my $line = shift @lines) {
542             print "handled when idle: $line";
543             } else {
544             # otherwise disable the idle watcher again
545             undef $idle_w;
546             }
547             });
548             });
549              
550             =head2 CONDITION VARIABLES
551              
552             $cv = AnyEvent->condvar;
553              
554             $cv->send ();
555             my @res = $cv->recv;
556              
557             If you are familiar with some event loops you will know that all of them
558             require you to run some blocking "loop", "run" or similar function that
559             will actively watch for new events and call your callbacks.
560              
561             AnyEvent is slightly different: it expects somebody else to run the event
562             loop and will only block when necessary (usually when told by the user).
563              
564             The tool to do that is called a "condition variable", so called because
565             they represent a condition that must become true.
566              
567             Now is probably a good time to look at the examples further below.
568              
569             Condition variables can be created by calling the C<< AnyEvent->condvar
570             >> method, usually without arguments. The only argument pair allowed is
571             C, which specifies a callback to be called when the condition variable
572             becomes true, with the condition variable as the first argument (but not
573             the results).
574              
575             After creation, the condition variable is "false" until it becomes "true"
576             by calling the C method (or calling the condition variable as if it
577             were a callback, read about the caveats in the description for the C<<
578             ->send >> method).
579              
580             Since condition variables are the most complex part of the AnyEvent API, here are
581             some different mental models of what they are - pick the ones you can connect to:
582              
583             =over 4
584              
585             =item * Condition variables are like callbacks - you can call them (and pass them instead
586             of callbacks). Unlike callbacks however, you can also wait for them to be called.
587              
588             =item * Condition variables are signals - one side can emit or send them,
589             the other side can wait for them, or install a handler that is called when
590             the signal fires.
591              
592             =item * Condition variables are like "Merge Points" - points in your program
593             where you merge multiple independent results/control flows into one.
594              
595             =item * Condition variables represent a transaction - functions that start
596             some kind of transaction can return them, leaving the caller the choice
597             between waiting in a blocking fashion, or setting a callback.
598              
599             =item * Condition variables represent future values, or promises to deliver
600             some result, long before the result is available.
601              
602             =back
603              
604             Condition variables are very useful to signal that something has finished,
605             for example, if you write a module that does asynchronous http requests,
606             then a condition variable would be the ideal candidate to signal the
607             availability of results. The user can either act when the callback is
608             called or can synchronously C<< ->recv >> for the results.
609              
610             You can also use them to simulate traditional event loops - for example,
611             you can block your main program until an event occurs - for example, you
612             could C<< ->recv >> in your main program until the user clicks the Quit
613             button of your app, which would C<< ->send >> the "quit" event.
614              
615             Note that condition variables recurse into the event loop - if you have
616             two pieces of code that call C<< ->recv >> in a round-robin fashion, you
617             lose. Therefore, condition variables are good to export to your caller, but
618             you should avoid making a blocking wait yourself, at least in callbacks,
619             as this asks for trouble.
620              
621             Condition variables are represented by hash refs in perl, and the keys
622             used by AnyEvent itself are all named C<_ae_XXX> to make subclassing
623             easy (it is often useful to build your own transaction class on top of
624             AnyEvent). To subclass, use C as base class and call
625             its C method in your own C method.
626              
627             There are two "sides" to a condition variable - the "producer side" which
628             eventually calls C<< -> send >>, and the "consumer side", which waits
629             for the send to occur.
630              
631             Example: wait for a timer.
632              
633             # condition: "wait till the timer is fired"
634             my $timer_fired = AnyEvent->condvar;
635              
636             # create the timer - we could wait for, say
637             # a handle becomign ready, or even an
638             # AnyEvent::HTTP request to finish, but
639             # in this case, we simply use a timer:
640             my $w = AnyEvent->timer (
641             after => 1,
642             cb => sub { $timer_fired->send },
643             );
644              
645             # this "blocks" (while handling events) till the callback
646             # calls ->send
647             $timer_fired->recv;
648              
649             Example: wait for a timer, but take advantage of the fact that condition
650             variables are also callable directly.
651              
652             my $done = AnyEvent->condvar;
653             my $delay = AnyEvent->timer (after => 5, cb => $done);
654             $done->recv;
655              
656             Example: Imagine an API that returns a condvar and doesn't support
657             callbacks. This is how you make a synchronous call, for example from
658             the main program:
659              
660             use AnyEvent::CouchDB;
661              
662             ...
663              
664             my @info = $couchdb->info->recv;
665              
666             And this is how you would just set a callback to be called whenever the
667             results are available:
668              
669             $couchdb->info->cb (sub {
670             my @info = $_[0]->recv;
671             });
672              
673             =head3 METHODS FOR PRODUCERS
674              
675             These methods should only be used by the producing side, i.e. the
676             code/module that eventually sends the signal. Note that it is also
677             the producer side which creates the condvar in most cases, but it isn't
678             uncommon for the consumer to create it as well.
679              
680             =over 4
681              
682             =item $cv->send (...)
683              
684             Flag the condition as ready - a running C<< ->recv >> and all further
685             calls to C will (eventually) return after this method has been
686             called. If nobody is waiting the send will be remembered.
687              
688             If a callback has been set on the condition variable, it is called
689             immediately from within send.
690              
691             Any arguments passed to the C call will be returned by all
692             future C<< ->recv >> calls.
693              
694             Condition variables are overloaded so one can call them directly (as if
695             they were a code reference). Calling them directly is the same as calling
696             C.
697              
698             =item $cv->croak ($error)
699              
700             Similar to send, but causes all calls to C<< ->recv >> to invoke
701             C with the given error message/object/scalar.
702              
703             This can be used to signal any errors to the condition variable
704             user/consumer. Doing it this way instead of calling C directly
705             delays the error detection, but has the overwhelming advantage that it
706             diagnoses the error at the place where the result is expected, and not
707             deep in some event callback with no connection to the actual code causing
708             the problem.
709              
710             =item $cv->begin ([group callback])
711              
712             =item $cv->end
713              
714             These two methods can be used to combine many transactions/events into
715             one. For example, a function that pings many hosts in parallel might want
716             to use a condition variable for the whole process.
717              
718             Every call to C<< ->begin >> will increment a counter, and every call to
719             C<< ->end >> will decrement it. If the counter reaches C<0> in C<< ->end
720             >>, the (last) callback passed to C will be executed, passing the
721             condvar as first argument. That callback is I to call C<< ->send
722             >>, but that is not required. If no group callback was set, C will
723             be called without any arguments.
724              
725             You can think of C<< $cv->send >> giving you an OR condition (one call
726             sends), while C<< $cv->begin >> and C<< $cv->end >> giving you an AND
727             condition (all C calls must be C'ed before the condvar sends).
728              
729             Let's start with a simple example: you have two I/O watchers (for example,
730             STDOUT and STDERR for a program), and you want to wait for both streams to
731             close before activating a condvar:
732              
733             my $cv = AnyEvent->condvar;
734              
735             $cv->begin; # first watcher
736             my $w1 = AnyEvent->io (fh => $fh1, cb => sub {
737             defined sysread $fh1, my $buf, 4096
738             or $cv->end;
739             });
740              
741             $cv->begin; # second watcher
742             my $w2 = AnyEvent->io (fh => $fh2, cb => sub {
743             defined sysread $fh2, my $buf, 4096
744             or $cv->end;
745             });
746              
747             $cv->recv;
748              
749             This works because for every event source (EOF on file handle), there is
750             one call to C, so the condvar waits for all calls to C before
751             sending.
752              
753             The ping example mentioned above is slightly more complicated, as the
754             there are results to be passed back, and the number of tasks that are
755             begun can potentially be zero:
756              
757             my $cv = AnyEvent->condvar;
758              
759             my %result;
760             $cv->begin (sub { shift->send (\%result) });
761              
762             for my $host (@list_of_hosts) {
763             $cv->begin;
764             ping_host_then_call_callback $host, sub {
765             $result{$host} = ...;
766             $cv->end;
767             };
768             }
769              
770             $cv->end;
771              
772             ...
773              
774             my $results = $cv->recv;
775              
776             This code fragment supposedly pings a number of hosts and calls
777             C after results for all then have have been gathered - in any
778             order. To achieve this, the code issues a call to C when it starts
779             each ping request and calls C when it has received some result for
780             it. Since C and C only maintain a counter, the order in which
781             results arrive is not relevant.
782              
783             There is an additional bracketing call to C and C outside the
784             loop, which serves two important purposes: first, it sets the callback
785             to be called once the counter reaches C<0>, and second, it ensures that
786             C is called even when C hosts are being pinged (the loop
787             doesn't execute once).
788              
789             This is the general pattern when you "fan out" into multiple (but
790             potentially zero) subrequests: use an outer C/C pair to set
791             the callback and ensure C is called at least once, and then, for each
792             subrequest you start, call C and for each subrequest you finish,
793             call C.
794              
795             =back
796              
797             =head3 METHODS FOR CONSUMERS
798              
799             These methods should only be used by the consuming side, i.e. the
800             code awaits the condition.
801              
802             =over 4
803              
804             =item $cv->recv
805              
806             Wait (blocking if necessary) until the C<< ->send >> or C<< ->croak
807             >> methods have been called on C<$cv>, while servicing other watchers
808             normally.
809              
810             You can only wait once on a condition - additional calls are valid but
811             will return immediately.
812              
813             If an error condition has been set by calling C<< ->croak >>, then this
814             function will call C.
815              
816             In list context, all parameters passed to C will be returned,
817             in scalar context only the first one will be returned.
818              
819             Note that doing a blocking wait in a callback is not supported by any
820             event loop, that is, recursive invocation of a blocking C<< ->recv >> is
821             not allowed and the C call will C if such a condition is
822             detected. This requirement can be dropped by relying on L
823             , which allows you to do a blocking C<< ->recv >> from any thread
824             that doesn't run the event loop itself. L is loaded
825             automatically when L is used with L, so code does not need
826             to do anything special to take advantage of that: any code that would
827             normally block your program because it calls C, be executed in an
828             C thread instead without blocking other threads.
829              
830             Not all event models support a blocking wait - some die in that case
831             (programs might want to do that to stay interactive), so I
832             using this from a module, never require a blocking wait>. Instead, let the
833             caller decide whether the call will block or not (for example, by coupling
834             condition variables with some kind of request results and supporting
835             callbacks so the caller knows that getting the result will not block,
836             while still supporting blocking waits if the caller so desires).
837              
838             You can ensure that C<< ->recv >> never blocks by setting a callback and
839             only calling C<< ->recv >> from within that callback (or at a later
840             time). This will work even when the event loop does not support blocking
841             waits otherwise.
842              
843             =item $bool = $cv->ready
844              
845             Returns true when the condition is "true", i.e. whether C or
846             C have been called.
847              
848             =item $cb = $cv->cb ($cb->($cv))
849              
850             This is a mutator function that returns the callback set (or C if
851             not) and optionally replaces it before doing so.
852              
853             The callback will be called when the condition becomes "true", i.e. when
854             C or C are called, with the only argument being the
855             condition variable itself. If the condition is already true, the
856             callback is called immediately when it is set. Calling C inside
857             the callback or at any later time is guaranteed not to block.
858              
859             Additionally, when the callback is invoked, it is also removed from the
860             condvar (reset to C), so the condvar does not keep a reference to
861             the callback after invocation.
862              
863             =back
864              
865             =head1 SUPPORTED EVENT LOOPS/BACKENDS
866              
867             The following backend classes are part of the AnyEvent distribution (every
868             class has its own manpage):
869              
870             =over 4
871              
872             =item Backends that are autoprobed when no other event loop can be found.
873              
874             EV is the preferred backend when no other event loop seems to be in
875             use. If EV is not installed, then AnyEvent will fall back to its own
876             pure-perl implementation, which is available everywhere as it comes with
877             AnyEvent itself.
878              
879             AnyEvent::Impl::EV based on EV (interface to libev, best choice).
880             AnyEvent::Impl::Perl pure-perl AnyEvent::Loop, fast and portable.
881              
882             =item Backends that are transparently being picked up when they are used.
883              
884             These will be used if they are already loaded when the first watcher
885             is created, in which case it is assumed that the application is using
886             them. This means that AnyEvent will automatically pick the right backend
887             when the main program loads an event module before anything starts to
888             create watchers. Nothing special needs to be done by the main program.
889              
890             AnyEvent::Impl::Event based on Event, very stable, few glitches.
891             AnyEvent::Impl::Glib based on Glib, slow but very stable.
892             AnyEvent::Impl::Tk based on Tk, very broken.
893             AnyEvent::Impl::UV based on UV, innovated square wheels.
894             AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
895             AnyEvent::Impl::POE based on POE, very slow, some limitations.
896             AnyEvent::Impl::Irssi used when running within irssi.
897             AnyEvent::Impl::IOAsync based on IO::Async.
898             AnyEvent::Impl::Cocoa based on Cocoa::EventLoop.
899             AnyEvent::Impl::FLTK based on FLTK (fltk 2 binding).
900              
901             =item Backends with special needs.
902              
903             Qt requires the Qt::Application to be instantiated first, but will
904             otherwise be picked up automatically. As long as the main program
905             instantiates the application before any AnyEvent watchers are created,
906             everything should just work.
907              
908             AnyEvent::Impl::Qt based on Qt.
909              
910             =item Event loops that are indirectly supported via other backends.
911              
912             Some event loops can be supported via other modules:
913              
914             There is no direct support for WxWidgets (L) or L.
915              
916             B has no support for watching file handles. However, you can
917             use WxWidgets through the POE adaptor, as POE has a Wx backend that simply
918             polls 20 times per second, which was considered to be too horrible to even
919             consider for AnyEvent.
920              
921             B is not supported as nobody seems to be using it, but it has a POE
922             backend, so it can be supported through POE.
923              
924             AnyEvent knows about both L and L, however, and will try to
925             load L when detecting them, in the hope that POE will pick them up,
926             in which case everything will be automatic.
927              
928             =item Known event loops outside the AnyEvent distribution
929              
930             The following event loops or programs support AnyEvent by providing their
931             own AnyEvent backend. They will be picked up automatically.
932              
933             urxvt::anyevent available to rxvt-unicode extensions
934              
935             =back
936              
937             =head1 GLOBAL VARIABLES AND FUNCTIONS
938              
939             These are not normally required to use AnyEvent, but can be useful to
940             write AnyEvent extension modules.
941              
942             =over 4
943              
944             =item $AnyEvent::MODEL
945              
946             Contains C until the first watcher is being created, before the
947             backend has been autodetected.
948              
949             Afterwards it contains the event model that is being used, which is the
950             name of the Perl class implementing the model. This class is usually one
951             of the C modules, but can be any other class in the
952             case AnyEvent has been extended at runtime (e.g. in I it
953             will be C).
954              
955             =item AnyEvent::detect
956              
957             Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model
958             if necessary. You should only call this function right before you would
959             have created an AnyEvent watcher anyway, that is, as late as possible at
960             runtime, and not e.g. during initialisation of your module.
961              
962             The effect of calling this function is as if a watcher had been created
963             (specifically, actions that happen "when the first watcher is created"
964             happen when calling detetc as well).
965              
966             If you need to do some initialisation before AnyEvent watchers are
967             created, use C.
968              
969             =item $guard = AnyEvent::post_detect { BLOCK }
970              
971             Arranges for the code block to be executed as soon as the event model is
972             autodetected (or immediately if that has already happened).
973              
974             The block will be executed I the actual backend has been detected
975             (C<$AnyEvent::MODEL> is set), so it is possible to do some initialisation
976             only when AnyEvent is actually initialised - see the sources of
977             L to see how this is used.
978              
979             The most common usage is to create some global watchers, without forcing
980             event module detection too early. For example, L creates
981             and installs the global L watcher in a C block to
982             avoid autodetecting the event module at load time.
983              
984             If called in scalar or list context, then it creates and returns an object
985             that automatically removes the callback again when it is destroyed (or
986             C when the hook was immediately executed). See L for
987             a case where this is useful.
988              
989             Example: Create a watcher for the IO::AIO module and store it in
990             C<$WATCHER>, but do so only do so after the event loop is initialised.
991              
992             our WATCHER;
993              
994             my $guard = AnyEvent::post_detect {
995             $WATCHER = AnyEvent->io (fh => IO::AIO::poll_fileno, poll => 'r', cb => \&IO::AIO::poll_cb);
996             };
997              
998             # the ||= is important in case post_detect immediately runs the block,
999             # as to not clobber the newly-created watcher. assigning both watcher and
1000             # post_detect guard to the same variable has the advantage of users being
1001             # able to just C if the watcher causes them grief.
1002              
1003             $WATCHER ||= $guard;
1004              
1005             =item @AnyEvent::post_detect
1006              
1007             This is a lower level interface then C (the
1008             function). This variable is mainly useful for modules that can do
1009             something useful when AnyEvent is used and thus want to know when it
1010             is initialised, but do not need to even load it by default. This array
1011             provides the means to hook into AnyEvent passively, without loading it.
1012              
1013             Here is how it works: If there are any code references in this array (you
1014             can C to it before or after loading AnyEvent), then they will be
1015             called directly after the event loop has been chosen.
1016              
1017             You should check C<$AnyEvent::MODEL> before adding to this array, though:
1018             if it is defined then the event loop has already been detected, and the
1019             array will be ignored.
1020              
1021             Best use C when your application allows
1022             it, as it takes care of these details.
1023              
1024             Example: To load Coro::AnyEvent whenever Coro and AnyEvent are used
1025             together, you could put this into Coro (this is the actual code used by
1026             Coro to accomplish this):
1027              
1028             if (defined $AnyEvent::MODEL) {
1029             # AnyEvent already initialised, so load Coro::AnyEvent
1030             require Coro::AnyEvent;
1031             } else {
1032             # AnyEvent not yet initialised, so make sure to load Coro::AnyEvent
1033             # as soon as it is
1034             push @AnyEvent::post_detect, sub { require Coro::AnyEvent };
1035             }
1036              
1037             =item AnyEvent::postpone { BLOCK }
1038              
1039             Arranges for the block to be executed as soon as possible, but not before
1040             the call itself returns. In practise, the block will be executed just
1041             before the event loop polls for new events, or shortly afterwards.
1042              
1043             This function never returns anything (to make the C
1044             }> idiom more useful.
1045              
1046             To understand the usefulness of this function, consider a function that
1047             asynchronously does something for you and returns some transaction
1048             object or guard to let you cancel the operation. For example,
1049             C:
1050              
1051             # start a connection attempt unless one is active
1052             $self->{connect_guard} ||= AnyEvent::Socket::tcp_connect "www.example.net", 80, sub {
1053             delete $self->{connect_guard};
1054             ...
1055             };
1056              
1057             Imagine that this function could instantly call the callback, for
1058             example, because it detects an obvious error such as a negative port
1059             number. Invoking the callback before the function returns causes problems
1060             however: the callback will be called and will try to delete the guard
1061             object. But since the function hasn't returned yet, there is nothing to
1062             delete. When the function eventually returns it will assign the guard
1063             object to C<< $self->{connect_guard} >>, where it will likely never be
1064             deleted, so the program thinks it is still trying to connect.
1065              
1066             This is where C should be used. Instead of calling the
1067             callback directly on error:
1068              
1069             $cb->(undef), return # signal error to callback, BAD!
1070             if $some_error_condition;
1071              
1072             It should use C:
1073              
1074             AnyEvent::postpone { $cb->(undef) }, return # signal error to callback, later
1075             if $some_error_condition;
1076              
1077             =item AnyEvent::log $level, $msg[, @args]
1078              
1079             Log the given C<$msg> at the given C<$level>.
1080              
1081             If L is not loaded then this function makes a simple test
1082             to see whether the message will be logged. If the test succeeds it will
1083             load AnyEvent::Log and call C - consequently, look at
1084             the L documentation for details.
1085              
1086             If the test fails it will simply return. Right now this happens when a
1087             numerical loglevel is used and it is larger than the level specified via
1088             C<$ENV{PERL_ANYEVENT_VERBOSE}>.
1089              
1090             If you want to sprinkle loads of logging calls around your code, consider
1091             creating a logger callback with the C function,
1092             which can reduce typing, codesize and can reduce the logging overhead
1093             enourmously.
1094              
1095             =item AnyEvent::fh_block $filehandle
1096              
1097             =item AnyEvent::fh_unblock $filehandle
1098              
1099             Sets blocking or non-blocking behaviour for the given filehandle.
1100              
1101             =back
1102              
1103             =head1 WHAT TO DO IN A MODULE
1104              
1105             As a module author, you should C and call AnyEvent methods
1106             freely, but you should not load a specific event module or rely on it.
1107              
1108             Be careful when you create watchers in the module body - AnyEvent will
1109             decide which event module to use as soon as the first method is called, so
1110             by calling AnyEvent in your module body you force the user of your module
1111             to load the event module first.
1112              
1113             Never call C<< ->recv >> on a condition variable unless you I that
1114             the C<< ->send >> method has been called on it already. This is
1115             because it will stall the whole program, and the whole point of using
1116             events is to stay interactive.
1117              
1118             It is fine, however, to call C<< ->recv >> when the user of your module
1119             requests it (i.e. if you create a http request object ad have a method
1120             called C that returns the results, it may call C<< ->recv >>
1121             freely, as the user of your module knows what she is doing. Always).
1122              
1123             =head1 WHAT TO DO IN THE MAIN PROGRAM
1124              
1125             There will always be a single main program - the only place that should
1126             dictate which event model to use.
1127              
1128             If the program is not event-based, it need not do anything special, even
1129             when it depends on a module that uses an AnyEvent. If the program itself
1130             uses AnyEvent, but does not care which event loop is used, all it needs
1131             to do is C. In either case, AnyEvent will choose the best
1132             available loop implementation.
1133              
1134             If the main program relies on a specific event model - for example, in
1135             Gtk2 programs you have to rely on the Glib module - you should load the
1136             event module before loading AnyEvent or any module that uses it: generally
1137             speaking, you should load it as early as possible. The reason is that
1138             modules might create watchers when they are loaded, and AnyEvent will
1139             decide on the event model to use as soon as it creates watchers, and it
1140             might choose the wrong one unless you load the correct one yourself.
1141              
1142             You can chose to use a pure-perl implementation by loading the
1143             C module, which gives you similar behaviour
1144             everywhere, but letting AnyEvent chose the model is generally better.
1145              
1146             =head2 MAINLOOP EMULATION
1147              
1148             Sometimes (often for short test scripts, or even standalone programs who
1149             only want to use AnyEvent), you do not want to run a specific event loop.
1150              
1151             In that case, you can use a condition variable like this:
1152              
1153             AnyEvent->condvar->recv;
1154              
1155             This has the effect of entering the event loop and looping forever.
1156              
1157             Note that usually your program has some exit condition, in which case
1158             it is better to use the "traditional" approach of storing a condition
1159             variable somewhere, waiting for it, and sending it when the program should
1160             exit cleanly.
1161              
1162              
1163             =head1 OTHER MODULES
1164              
1165             The following is a non-exhaustive list of additional modules that use
1166             AnyEvent as a client and can therefore be mixed easily with other
1167             AnyEvent modules and other event loops in the same program. Some of the
1168             modules come as part of AnyEvent, the others are available via CPAN (see
1169             L for
1170             a longer non-exhaustive list), and the list is heavily biased towards
1171             modules of the AnyEvent author himself :)
1172              
1173             =over 4
1174              
1175             =item L (part of the AnyEvent distribution)
1176              
1177             Contains various utility functions that replace often-used blocking
1178             functions such as C with event/callback-based versions.
1179              
1180             =item L (part of the AnyEvent distribution)
1181              
1182             Provides various utility functions for (internet protocol) sockets,
1183             addresses and name resolution. Also functions to create non-blocking tcp
1184             connections or tcp servers, with IPv6 and SRV record support and more.
1185              
1186             =item L (part of the AnyEvent distribution)
1187              
1188             Provide read and write buffers, manages watchers for reads and writes,
1189             supports raw and formatted I/O, I/O queued and fully transparent and
1190             non-blocking SSL/TLS (via L).
1191              
1192             =item L (part of the AnyEvent distribution)
1193              
1194             Provides rich asynchronous DNS resolver capabilities.
1195              
1196             =item L, L, L, L, L, L
1197              
1198             Implement event-based interfaces to the protocols of the same name (for
1199             the curious, IGS is the International Go Server and FCP is the Freenet
1200             Client Protocol).
1201              
1202             =item L (part of the AnyEvent distribution)
1203              
1204             Truly asynchronous (as opposed to non-blocking) I/O, should be in the
1205             toolbox of every event programmer. AnyEvent::AIO transparently fuses
1206             L and AnyEvent together, giving AnyEvent access to event-based
1207             file I/O, and much more.
1208              
1209             =item L, L, L, L
1210              
1211             These let you safely fork new subprocesses, either locally or
1212             remotely (e.g.v ia ssh), using some RPC protocol or not, without
1213             the limitations normally imposed by fork (AnyEvent works fine for
1214             example). Dynamically-resized worker pools are obviously included as well.
1215              
1216             And they are quite tiny and fast as well - "abusing" L
1217             just to exec external programs can easily beat using C and C
1218             (or even C) in most programs.
1219              
1220             =item L
1221              
1222             AnyEvent is good for non-blocking stuff, but it can't detect file or
1223             path changes (e.g. "watch this directory for new files", "watch this
1224             file for changes"). The L module promises to
1225             do just that in a portbale fashion, supporting inotify on GNU/Linux and
1226             some weird, without doubt broken, stuff on OS X to monitor files. It can
1227             fall back to blocking scans at regular intervals transparently on other
1228             platforms, so it's about as portable as it gets.
1229              
1230             (I haven't used it myself, but it seems the biggest problem with it is
1231             it quite bad performance).
1232              
1233             =item L
1234              
1235             Executes L requests asynchronously in a proxy process for you,
1236             notifying you in an event-based way when the operation is finished.
1237              
1238             =item L
1239              
1240             The fastest ping in the west.
1241              
1242             =item L
1243              
1244             Has special support for AnyEvent via L, which allows you
1245             to simply invert the flow control - don't call us, we will call you:
1246              
1247             async {
1248             Coro::AnyEvent::sleep 5; # creates a 5s timer and waits for it
1249             print "5 seconds later!\n";
1250              
1251             Coro::AnyEvent::readable *STDIN; # uses an I/O watcher
1252             my $line = ; # works for ttys
1253              
1254             AnyEvent::HTTP::http_get "url", Coro::rouse_cb;
1255             my ($body, $hdr) = Coro::rouse_wait;
1256             };
1257              
1258             =back
1259              
1260             =cut
1261              
1262             package AnyEvent;
1263              
1264             BEGIN {
1265 82     82   239189 require "AnyEvent/constants.pl";
1266 82         336 &AnyEvent::common_sense;
1267             }
1268              
1269 82     82   528 use Carp ();
  82         159  
  82         27262  
1270              
1271             our $VERSION = 7.15;
1272             our $MODEL;
1273             our @ISA;
1274             our @REGISTRY;
1275             our $VERBOSE;
1276             our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred
1277             our $MAX_SIGNAL_LATENCY = $ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY} || 10; # executes after the BEGIN block below (tainting!)
1278              
1279             BEGIN {
1280 82     82   5403 eval "sub TAINT (){" . (${^TAINT}*1) . "}";
1281              
1282 82 50       681 delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV}
1283             if ${^TAINT};
1284              
1285             $ENV{"PERL_ANYEVENT_$_"} = $ENV{"AE_$_"}
1286 82   33     2219 for grep s/^AE_// && !exists $ENV{"PERL_ANYEVENT_$_"}, keys %ENV;
1287              
1288 82 50       359 @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} = ()
1289             if ${^TAINT};
1290              
1291             # $ENV{PERL_ANYEVENT_xxx} now valid
1292              
1293 82 50       462 $VERBOSE = length $ENV{PERL_ANYEVENT_VERBOSE} ? $ENV{PERL_ANYEVENT_VERBOSE}*1 : 4;
1294              
1295 82         153 my $idx;
1296             $PROTOCOL{$_} = ++$idx
1297 82   50     41710 for reverse split /\s*,\s*/,
1298             $ENV{PERL_ANYEVENT_PROTOCOLS} || "ipv4,ipv6";
1299             }
1300              
1301             our @post_detect;
1302              
1303             sub post_detect(&) {
1304 0     0 1 0 my ($cb) = @_;
1305              
1306 0         0 push @post_detect, $cb;
1307              
1308             defined wantarray
1309 0 0       0 ? bless \$cb, "AnyEvent::Util::postdetect"
1310             : ()
1311             }
1312              
1313             sub AnyEvent::Util::postdetect::DESTROY {
1314 0     0   0 @post_detect = grep $_ != ${$_[0]}, @post_detect;
  0         0  
1315             }
1316              
1317             our $POSTPONE_W;
1318             our @POSTPONE;
1319              
1320             sub _postpone_exec {
1321 0     0   0 undef $POSTPONE_W;
1322              
1323 0         0 &{ shift @POSTPONE }
  0         0  
1324             while @POSTPONE;
1325             }
1326              
1327             sub postpone(&) {
1328 0     0 1 0 push @POSTPONE, shift;
1329              
1330 0   0     0 $POSTPONE_W ||= AE::timer (0, 0, \&_postpone_exec);
1331              
1332             ()
1333 0         0 }
1334              
1335             sub log($$;@) {
1336             # only load the big bloated module when we actually are about to log something
1337 66 50 50 66 1 399 if ($_[0] <= ($VERBOSE || 1)) { # also catches non-numeric levels(!) and fatal
1338 0         0 local ($!, $@);
1339 0         0 require AnyEvent::Log; # among other things, sets $VERBOSE to 9
1340             # AnyEvent::Log overwrites this function
1341 0         0 goto &log;
1342             }
1343              
1344             0 # not logged
1345 66         82560 }
1346              
1347             sub _logger($;$) {
1348 0     0   0 my ($level, $renabled) = @_;
1349              
1350 0         0 $$renabled = $level <= $VERBOSE;
1351              
1352 0         0 my $logger = [(caller)[0], $level, $renabled];
1353              
1354 0         0 $AnyEvent::Log::LOGGER{$logger+0} = $logger;
1355              
1356             # return unless defined wantarray;
1357             #
1358             # require AnyEvent::Util;
1359             # my $guard = AnyEvent::Util::guard (sub {
1360             # # "clean up"
1361             # delete $LOGGER{$logger+0};
1362             # });
1363             #
1364             # sub {
1365             # return 0 unless $$renabled;
1366             #
1367             # $guard if 0; # keep guard alive, but don't cause runtime overhead
1368             # require AnyEvent::Log unless $AnyEvent::Log::VERSION;
1369             # package AnyEvent::Log;
1370             # _log ($logger->[0], $level, @_) # logger->[0] has been converted at load time
1371             # }
1372             }
1373              
1374             if (length $ENV{PERL_ANYEVENT_LOG}) {
1375             require AnyEvent::Log; # AnyEvent::Log does the thing for us
1376             }
1377              
1378             BEGIN {
1379             *_fh_nonblocking = AnyEvent::WIN32
1380             ? sub($$) {
1381             ioctl $_[0], 0x8004667e, pack "L", $_[1]; # FIONBIO
1382             }
1383             : sub($$) {
1384 39 50   39   298 fcntl $_[0], AnyEvent::F_SETFL, $_[1] ? AnyEvent::O_NONBLOCK : 0;
1385             }
1386 82     82   112939 ;
1387             }
1388              
1389             sub fh_block($) {
1390 0     0 1 0 _fh_nonblocking shift, 0
1391             }
1392              
1393             sub fh_unblock($) {
1394 39     39 1 109 _fh_nonblocking shift, 1
1395             }
1396              
1397             our @models = (
1398             [EV:: => AnyEvent::Impl::EV::],
1399             [AnyEvent::Loop:: => AnyEvent::Impl::Perl::],
1400             # everything below here will not (normally) be autoprobed
1401             # as the pure perl backend should work everywhere
1402             # and is usually faster
1403             [Irssi:: => AnyEvent::Impl::Irssi::], # Irssi has a bogus "Event" package, so msut be near the top
1404             [Event:: => AnyEvent::Impl::Event::], # slow, stable
1405             [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers
1406             # everything below here should not be autoloaded
1407             [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy
1408             [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles
1409             [UV:: => AnyEvent::Impl::UV::], # switched from libev, added back all bugs imaginable
1410             [Qt:: => AnyEvent::Impl::Qt::], # requires special main program
1411             [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza
1412             [Wx:: => AnyEvent::Impl::POE::],
1413             [Prima:: => AnyEvent::Impl::POE::],
1414             [IO::Async::Loop:: => AnyEvent::Impl::IOAsync::], # a bitch to autodetect
1415             [Cocoa::EventLoop:: => AnyEvent::Impl::Cocoa::],
1416             [FLTK:: => AnyEvent::Impl::FLTK::],
1417             );
1418              
1419             our @isa_hook;
1420              
1421             sub _isa_set {
1422 15     15   75 my @pkg = ("AnyEvent", (map $_->[0], grep defined, @isa_hook), $MODEL);
1423              
1424 17         395 @{"$pkg[$_-1]::ISA"} = $pkg[$_]
1425 15         75 for 1 .. $#pkg;
1426              
1427 15 100 66     116 grep $_ && $_->[1], @isa_hook
1428             and AE::_reset ();
1429             }
1430              
1431             # used for hooking AnyEvent::Strict and AnyEvent::Debug::Wrap into the class hierarchy
1432             sub _isa_hook($$;$) {
1433 1     1   4 my ($i, $pkg, $reset_ae) = @_;
1434              
1435 1 50       7 $isa_hook[$i] = $pkg ? [$pkg, $reset_ae] : undef;
1436              
1437 1         4 _isa_set;
1438             }
1439              
1440             # all autoloaded methods reserve the complete glob, not just the method slot.
1441             # due to bugs in perls method cache implementation.
1442             our @methods = qw(io timer time now now_update signal child idle condvar);
1443              
1444             sub detect() {
1445 12 50   12 1 243 return $MODEL if $MODEL; # some programs keep references to detect
1446              
1447             # IO::Async::Loop::AnyEvent is extremely evil, refuse to work with it
1448             # the author knows about the problems and what it does to AnyEvent as a whole
1449             # (and the ability of others to use AnyEvent), but simply wants to abuse AnyEvent
1450             # anyway.
1451             AnyEvent::log fatal => "IO::Async::Loop::AnyEvent detected - that module is broken by\n"
1452             . "design, abuses internals and breaks AnyEvent - will not continue."
1453 12 50       101 if exists $INC{"IO/Async/Loop/AnyEvent.pm"};
1454              
1455 12         71 local $!; # for good measure
1456 12         53 local $SIG{__DIE__}; # we use eval
1457              
1458             # free some memory
1459 12     4   91 *detect = sub () { $MODEL };
  4         61  
1460             # undef &func doesn't correctly update the method cache. grmbl.
1461             # so we delete the whole glob. grmbl.
1462             # otoh, perl doesn't let me undef an active usb, but it lets me free
1463             # a glob with an active sub. hrm. i hope it works, but perl is
1464             # usually buggy in this department. sigh.
1465 12         43 delete @{"AnyEvent::"}{@methods};
  12         150  
1466 12         37 undef @methods;
1467              
1468 12 50       70 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z0-9:]+)$/) {
1469 0         0 my $model = $1;
1470 0 0       0 $model = "AnyEvent::Impl::$model" unless $model =~ s/::$//;
1471 0 0       0 if (eval "require $model") {
1472 0         0 AnyEvent::log 7 => "Loaded model '$model' (forced by \$ENV{PERL_ANYEVENT_MODEL}), using it.";
1473 0         0 $MODEL = $model;
1474             } else {
1475 0         0 AnyEvent::log 4 => "Unable to load model '$model' (from \$ENV{PERL_ANYEVENT_MODEL}):\n$@";
1476             }
1477             }
1478              
1479             # check for already loaded models
1480 12 50       62 unless ($MODEL) {
1481 12         49 for (@REGISTRY, @models) {
1482 50         121 my ($package, $model) = @$_;
1483 50 100       70 if (${"$package\::VERSION"} > 0) {
  50         342  
1484 10 50       657 if (eval "require $model") {
1485 10         62 AnyEvent::log 7 => "Autodetected model '$model', using it.";
1486 10         21 $MODEL = $model;
1487 10         29 last;
1488             } else {
1489 0         0 AnyEvent::log 8 => "Detected event loop $package, but cannot load '$model', skipping: $@";
1490             }
1491             }
1492             }
1493              
1494 12 100       56 unless ($MODEL) {
1495             # try to autoload a model
1496 2         7 for (@REGISTRY, @models) {
1497 2         6 my ($package, $model) = @$_;
1498 2 50 33     124 if (
      33        
1499             eval "require $package"
1500 2         4659 and ${"$package\::VERSION"} > 0
1501             and eval "require $model"
1502             ) {
1503 2         15 AnyEvent::log 7 => "Autoloaded model '$model', using it.";
1504 2         4 $MODEL = $model;
1505 2         6 last;
1506             }
1507             }
1508              
1509             $MODEL
1510 2 50       9 or AnyEvent::log fatal => "Backend autodetection failed - did you properly install AnyEvent?";
1511             }
1512             }
1513              
1514             # free memory only needed for probing
1515 12         191 undef @models;
1516 12         30 undef @REGISTRY;
1517              
1518 12         25 push @{"$MODEL\::ISA"}, "AnyEvent::Base";
  12         169  
1519              
1520             # now nuke some methods that are overridden by the backend.
1521             # SUPER usage is not allowed in these.
1522 12         47 for (qw(time signal child idle)) {
1523 18         154 undef &{"AnyEvent::Base::$_"}
1524 48 100       69 if defined &{"$MODEL\::$_"};
  48         206  
1525             }
1526              
1527 12         52 _isa_set;
1528              
1529             # we're officially open!
1530              
1531 12 50       54 if ($ENV{PERL_ANYEVENT_STRICT}) {
1532 0         0 require AnyEvent::Strict;
1533             }
1534              
1535 12 50       49 if ($ENV{PERL_ANYEVENT_DEBUG_WRAP}) {
1536 0         0 require AnyEvent::Debug;
1537 0         0 AnyEvent::Debug::wrap ($ENV{PERL_ANYEVENT_DEBUG_WRAP});
1538             }
1539              
1540 12 50       48 if (length $ENV{PERL_ANYEVENT_DEBUG_SHELL}) {
1541 0         0 require AnyEvent::Socket;
1542 0         0 require AnyEvent::Debug;
1543              
1544 0         0 my $shell = $ENV{PERL_ANYEVENT_DEBUG_SHELL};
1545 0         0 $shell =~ s/\$\$/$$/g;
1546              
1547 0         0 my ($host, $service) = AnyEvent::Socket::parse_hostport ($shell);
1548 0         0 $AnyEvent::Debug::SHELL = AnyEvent::Debug::shell ($host, $service);
1549             }
1550              
1551             # now the anyevent environment is set up as the user told us to, so
1552             # call the actual user code - post detects
1553              
1554 12         49 (shift @post_detect)->() while @post_detect;
1555 12         25 undef @post_detect;
1556              
1557             *post_detect = sub(&) {
1558 0     1   0 shift->();
1559              
1560             undef
1561 12         79 };
  0         0  
1562              
1563 12         108 $MODEL
1564             }
1565              
1566             for my $name (@methods) {
1567             *$name = sub {
1568 12     11   916 detect;
1569             # we use goto because
1570             # a) it makes the thunk more transparent
1571             # b) it allows us to delete the thunk later
1572 12         26 goto &{ UNIVERSAL::can AnyEvent => "SUPER::$name" }
  11         131  
1573             };
1574             }
1575              
1576             # utility function to dup a filehandle. this is used by many backends
1577             # to support binding more than one watcher per filehandle (they usually
1578             # allow only one watcher per fd, so we dup it to get a different one).
1579             sub _dupfh($$;$$) {
1580 0     0   0 my ($poll, $fh, $r, $w) = @_;
1581              
1582             # cygwin requires the fh mode to be matching, unix doesn't
1583 0 0       0 my ($rw, $mode) = $poll eq "r" ? ($r, "<&") : ($w, ">&");
1584              
1585 0 0       0 open my $fh2, $mode, $fh
1586             or die "AnyEvent->io: cannot dup() filehandle in mode '$poll': $!,";
1587              
1588             # we assume CLOEXEC is already set by perl in all important cases
1589              
1590 0         0 ($fh2, $rw)
1591             }
1592              
1593             =head1 SIMPLIFIED AE API
1594              
1595             Starting with version 5.0, AnyEvent officially supports a second, much
1596             simpler, API that is designed to reduce the calling, typing and memory
1597             overhead by using function call syntax and a fixed number of parameters.
1598              
1599             See the L manpage for details.
1600              
1601             =cut
1602              
1603             package AE;
1604              
1605             our $VERSION = $AnyEvent::VERSION;
1606              
1607             sub _reset() {
1608 84 50   84 1 29540 eval q{
  2     2 1 433  
  2     2 1 1154  
  8     8 1 311  
  0     0 1 0  
          1    
          1    
          1    
1609             # fall back to the main API by default - backends and AnyEvent::Base
1610             # implementations can overwrite these.
1611              
1612             sub io($$$) {
1613             AnyEvent->io (fh => $_[0], poll => $_[1] ? "w" : "r", cb => $_[2])
1614             }
1615              
1616             sub timer($$$) {
1617             AnyEvent->timer (after => $_[0], interval => $_[1], cb => $_[2])
1618             }
1619              
1620             sub signal($$) {
1621             AnyEvent->signal (signal => $_[0], cb => $_[1])
1622             }
1623              
1624             sub child($$) {
1625             AnyEvent->child (pid => $_[0], cb => $_[1])
1626             }
1627              
1628             sub idle($) {
1629             AnyEvent->idle (cb => $_[0]);
1630             }
1631              
1632             sub cv(;&) {
1633             AnyEvent->condvar (@_ ? (cb => $_[0]) : ())
1634             }
1635              
1636             sub now() {
1637             AnyEvent->now
1638             }
1639              
1640             sub now_update() {
1641             AnyEvent->now_update
1642             }
1643              
1644             sub time() {
1645             AnyEvent->time
1646             }
1647              
1648             *postpone = \&AnyEvent::postpone;
1649             *log = \&AnyEvent::log;
1650             };
1651 84 50       134954 die if $@;
1652             }
1653              
1654 82     82   476 BEGIN { _reset }
1655              
1656             package AnyEvent::Base;
1657              
1658             # default implementations for many methods
1659              
1660             sub time {
1661 0     0   0 eval q{ # poor man's autoloading {}
1662             # probe for availability of Time::HiRes
1663             if (eval "use Time::HiRes (); Time::HiRes::time (); 1") {
1664             *time = sub { Time::HiRes::time () };
1665             *AE::time = \& Time::HiRes::time ;
1666             *now = \&time;
1667             AnyEvent::log 8 => "using Time::HiRes for sub-second timing accuracy.";
1668             # if (eval "use POSIX (); (POSIX::times())...
1669             } else {
1670             *time = sub { CORE::time };
1671             *AE::time = sub (){ CORE::time };
1672             *now = \&time;
1673             AnyEvent::log 3 => "Using built-in time(), no sub-second resolution!";
1674             }
1675             };
1676 0 0       0 die if $@;
1677              
1678 0         0 &time
1679             }
1680              
1681             *now = \&time;
1682       0     sub now_update { }
1683              
1684             sub _poll {
1685 0     0   0 Carp::croak "$AnyEvent::MODEL does not support blocking waits. Caught";
1686             }
1687              
1688             # default implementation for ->condvar
1689             # in fact, the default should not be overwritten
1690              
1691             sub condvar {
1692 12 100   12   2951 eval q{ # poor man's autoloading {}
  42 100   42   11575  
  75         8398  
1693             *condvar = sub {
1694             bless { @_ == 3 ? (_ae_cb => $_[2]) : () }, "AnyEvent::CondVar"
1695             };
1696              
1697             *AE::cv = sub (;&) {
1698             bless { @_ ? (_ae_cb => shift) : () }, "AnyEvent::CondVar"
1699             };
1700             };
1701 12 50       75 die if $@;
1702              
1703 12         253 &condvar
1704             }
1705              
1706             # default implementation for ->signal
1707              
1708             our $HAVE_ASYNC_INTERRUPT;
1709              
1710             sub _have_async_interrupt() {
1711             $HAVE_ASYNC_INTERRUPT = 1*(!$ENV{PERL_ANYEVENT_AVOID_ASYNC_INTERRUPT}
1712 6 100 33 6   280 && eval "use Async::Interrupt 1.02 (); 1")
  15     0   185  
  12         316  
  12         93  
1713             unless defined $HAVE_ASYNC_INTERRUPT;
1714              
1715 6         131 $HAVE_ASYNC_INTERRUPT
1716             }
1717              
1718             our ($SIGPIPE_R, $SIGPIPE_W, %SIG_CB, %SIG_EV, $SIG_IO);
1719             our (%SIG_ASY, %SIG_ASY_W);
1720             our ($SIG_COUNT, $SIG_TW);
1721              
1722             # install a dummy wakeup watcher to reduce signal catching latency
1723             # used by Impls
1724             sub _sig_add() {
1725 0 0   0   0 unless ($SIG_COUNT++) {
1726             # try to align timer on a full-second boundary, if possible
1727 0         0 my $NOW = AE::now;
1728              
1729             $SIG_TW = AE::timer
1730             $MAX_SIGNAL_LATENCY - ($NOW - int $NOW),
1731             $MAX_SIGNAL_LATENCY,
1732       0     sub { } # just for the PERL_ASYNC_CHECK
1733 0         0 ;
1734             }
1735             }
1736              
1737             sub _sig_del {
1738 9 50   9   194 undef $SIG_TW
1739             unless --$SIG_COUNT;
1740             }
1741              
1742             our $_sig_name_init; $_sig_name_init = sub {
1743             eval q{ # poor man's autoloading {}
1744             undef $_sig_name_init;
1745              
1746             if (_have_async_interrupt) {
1747             *sig2num = \&Async::Interrupt::sig2num;
1748             *sig2name = \&Async::Interrupt::sig2name;
1749             } else {
1750             require Config;
1751              
1752             my %signame2num;
1753             @signame2num{ split ' ', $Config::Config{sig_name} }
1754             = split ' ', $Config::Config{sig_num};
1755              
1756             my @signum2name;
1757             @signum2name[values %signame2num] = keys %signame2num;
1758              
1759             *sig2num = sub($) {
1760             $_[0] > 0 ? shift : $signame2num{+shift}
1761             };
1762             *sig2name = sub ($) {
1763             $_[0] > 0 ? $signum2name[+shift] : shift
1764             };
1765             }
1766             };
1767             die if $@;
1768             };
1769              
1770 3     3   16 sub sig2num ($) { &$_sig_name_init; &sig2num }
  3         66  
1771 0     0   0 sub sig2name($) { &$_sig_name_init; &sig2name }
  0         0  
1772              
1773             sub signal {
1774 12 100   12   3069 eval q{ # poor man's autoloading {}
  7     0   237  
  7         25  
  12         166  
  16         38  
  16         238  
  12         365  
  12         55  
  12         188  
  11         51  
  11         72  
  12         260  
1775             # probe for availability of Async::Interrupt
1776             if (_have_async_interrupt) {
1777             AnyEvent::log 8 => "Using Async::Interrupt for race-free signal handling.";
1778              
1779             $SIGPIPE_R = new Async::Interrupt::EventPipe;
1780             $SIG_IO = AE::io $SIGPIPE_R->fileno, 0, \&_signal_exec;
1781              
1782             } else {
1783             AnyEvent::log 8 => "Using emulated perl signal handling with latency timer.";
1784              
1785             if (AnyEvent::WIN32) {
1786             require AnyEvent::Util;
1787              
1788             ($SIGPIPE_R, $SIGPIPE_W) = AnyEvent::Util::portable_pipe ();
1789             AnyEvent::Util::fh_nonblocking ($SIGPIPE_R, 1) if $SIGPIPE_R;
1790             AnyEvent::Util::fh_nonblocking ($SIGPIPE_W, 1) if $SIGPIPE_W; # just in case
1791             } else {
1792             pipe $SIGPIPE_R, $SIGPIPE_W;
1793             fcntl $SIGPIPE_R, AnyEvent::F_SETFL, AnyEvent::O_NONBLOCK if $SIGPIPE_R;
1794             fcntl $SIGPIPE_W, AnyEvent::F_SETFL, AnyEvent::O_NONBLOCK if $SIGPIPE_W; # just in case
1795              
1796             # not strictly required, as $^F is normally 2, but let's make sure...
1797             fcntl $SIGPIPE_R, AnyEvent::F_SETFD, AnyEvent::FD_CLOEXEC;
1798             fcntl $SIGPIPE_W, AnyEvent::F_SETFD, AnyEvent::FD_CLOEXEC;
1799             }
1800              
1801             $SIGPIPE_R
1802             or Carp::croak "AnyEvent: unable to create a signal reporting pipe: $!\n";
1803              
1804             $SIG_IO = AE::io $SIGPIPE_R, 0, \&_signal_exec;
1805             }
1806              
1807             *signal = $HAVE_ASYNC_INTERRUPT
1808             ? sub {
1809             my (undef, %arg) = @_;
1810              
1811             # async::interrupt
1812             my $signal = sig2num $arg{signal};
1813             $SIG_CB{$signal}{$arg{cb}} = $arg{cb};
1814              
1815             $SIG_ASY{$signal} ||= new Async::Interrupt
1816             cb => sub { undef $SIG_EV{$signal} },
1817             signal => $signal,
1818             pipe => [$SIGPIPE_R->filenos],
1819             pipe_autodrain => 0,
1820             ;
1821              
1822             bless [$signal, $arg{cb}], "AnyEvent::Base::signal"
1823             }
1824             : sub {
1825             my (undef, %arg) = @_;
1826              
1827             # pure perl
1828             my $signal = sig2name $arg{signal};
1829             $SIG_CB{$signal}{$arg{cb}} = $arg{cb};
1830              
1831             $SIG{$signal} ||= sub {
1832             local $!;
1833             syswrite $SIGPIPE_W, "\x00", 1 unless %SIG_EV;
1834             undef $SIG_EV{$signal};
1835             };
1836              
1837             # can't do signal processing without introducing races in pure perl,
1838             # so limit the signal latency.
1839             _sig_add;
1840              
1841             bless [$signal, $arg{cb}], "AnyEvent::Base::signal"
1842             }
1843             ;
1844              
1845             *AnyEvent::Base::signal::DESTROY = sub {
1846             my ($signal, $cb) = @{$_[0]};
1847              
1848             _sig_del;
1849              
1850             delete $SIG_CB{$signal}{$cb};
1851              
1852             $HAVE_ASYNC_INTERRUPT
1853             ? delete $SIG_ASY{$signal}
1854             : # delete doesn't work with older perls - they then
1855             # print weird messages, or just unconditionally exit
1856             # instead of getting the default action.
1857             undef $SIG{$signal}
1858             unless keys %{ $SIG_CB{$signal} };
1859             };
1860              
1861             *_signal_exec = sub {
1862             $HAVE_ASYNC_INTERRUPT
1863             ? $SIGPIPE_R->drain
1864             : sysread $SIGPIPE_R, (my $dummy), 9;
1865              
1866             while (%SIG_EV) {
1867             for (keys %SIG_EV) {
1868             delete $SIG_EV{$_};
1869             &$_ for values %{ $SIG_CB{$_} || {} };
1870             }
1871             }
1872             };
1873             };
1874 12 100       57 die if $@;
1875              
1876 12         167 &signal
1877             }
1878              
1879             # default implementation for ->child
1880              
1881             our %PID_CB;
1882             our $CHLD_W;
1883             our $CHLD_DELAY_W;
1884              
1885             # used by many Impl's
1886             sub _emit_childstatus($$) {
1887 20     11   546 my (undef, $rpid, $rstatus) = @_;
1888              
1889             $_->($rpid, $rstatus)
1890 24 100       187 for values %{ $PID_CB{$rpid} || {} },
  20         829  
1891 19 100       282 values %{ $PID_CB{0} || {} };
1892             }
1893              
1894             sub child {
1895 11     2   1317 eval q{ # poor man's autoloading {}
        0      
1896             *_sigchld = sub {
1897             my $pid;
1898              
1899             AnyEvent->_emit_childstatus ($pid, $?)
1900             while ($pid = waitpid -1, WNOHANG) > 0;
1901             };
1902              
1903             *child = sub {
1904             my (undef, %arg) = @_;
1905              
1906             my $pid = $arg{pid};
1907             my $cb = $arg{cb};
1908              
1909             $PID_CB{$pid}{$cb+0} = $cb;
1910              
1911             unless ($CHLD_W) {
1912             $CHLD_W = AE::signal CHLD => \&_sigchld;
1913             # child could be a zombie already, so make at least one round
1914             &_sigchld;
1915             }
1916              
1917             bless [$pid, $cb+0], "AnyEvent::Base::child"
1918             };
1919              
1920             *AnyEvent::Base::child::DESTROY = sub {
1921             my ($pid, $icb) = @{$_[0]};
1922              
1923             delete $PID_CB{$pid}{$icb};
1924             delete $PID_CB{$pid} unless keys %{ $PID_CB{$pid} };
1925              
1926             undef $CHLD_W unless keys %PID_CB;
1927             };
1928             };
1929 11 100       128 die if $@;
1930              
1931 11         129 &child
1932             }
1933              
1934             # idle emulation is done by simply using a timer, regardless
1935             # of whether the process is idle or not, and not letting
1936             # the callback use more than 50% of the time.
1937             sub idle {
1938 9     0   58 eval q{ # poor man's autoloading {}
1939             *idle = sub {
1940             my (undef, %arg) = @_;
1941              
1942             my ($cb, $w, $rcb) = $arg{cb};
1943              
1944             $rcb = sub {
1945             if ($cb) {
1946             $w = AE::time;
1947             &$cb;
1948             $w = AE::time - $w;
1949              
1950             # never use more then 50% of the time for the idle watcher,
1951             # within some limits
1952             $w = 0.0001 if $w < 0.0001;
1953             $w = 5 if $w > 5;
1954              
1955             $w = AE::timer $w, 0, $rcb;
1956             } else {
1957             # clean up...
1958             undef $w;
1959             undef $rcb;
1960             }
1961             };
1962              
1963             $w = AE::timer 0.05, 0, $rcb;
1964              
1965             bless \\$cb, "AnyEvent::Base::idle"
1966             };
1967              
1968             *AnyEvent::Base::idle::DESTROY = sub {
1969             undef $${$_[0]};
1970             };
1971             };
1972 9 0       412 die if $@;
1973              
1974 12         176 &idle
1975             }
1976              
1977             package AnyEvent::CondVar;
1978              
1979             our @ISA = AnyEvent::CondVar::Base::;
1980              
1981             # only to be used for subclassing
1982             sub new {
1983 12     0   51 my $class = shift;
1984 12         45 bless AnyEvent->condvar (@_), $class
1985             }
1986              
1987             package AnyEvent::CondVar::Base;
1988              
1989             #use overload
1990             # '&{}' => sub { my $self = shift; sub { $self->send (@_) } },
1991             # fallback => 1;
1992              
1993             # save 300+ kilobytes by dirtily hardcoding overloading
1994             ${"AnyEvent::CondVar::Base::OVERLOAD"}{dummy}++; # Register with magic by touching.
1995       0     *{'AnyEvent::CondVar::Base::()'} = sub { }; # "Make it findable via fetchmethod."
1996 48     36   174 *{'AnyEvent::CondVar::Base::(&{}'} = sub { my $self = shift; sub { $self->send (@_) } }; # &{}
  48         178  
  48         428  
1997             ${'AnyEvent::CondVar::Base::()'} = 1; # fallback
1998              
1999             our $WAITING;
2000              
2001       88     sub _send {
2002             # nop
2003             }
2004              
2005             sub _wait {
2006             AnyEvent->_poll until $_[0]{_ae_sent};
2007             }
2008              
2009             sub send {
2010 88     88   5431 my $cv = shift;
2011 88         378 $cv->{_ae_sent} = [@_];
2012 88 100       317 (delete $cv->{_ae_cb})->($cv) if $cv->{_ae_cb};
2013 88         425 $cv->_send;
2014             }
2015              
2016             sub croak {
2017 1     1   17 $_[0]{_ae_croak} = $_[1];
2018 1         2 $_[0]->send;
2019             }
2020              
2021             sub ready {
2022             $_[0]{_ae_sent}
2023 2     2   13 }
2024              
2025             sub recv {
2026 84 100   84   1016 unless ($_[0]{_ae_sent}) {
2027 43 50       111 $WAITING
2028             and Carp::croak "AnyEvent::CondVar: recursive blocking wait attempted";
2029              
2030 43         135 local $WAITING = 1;
2031 43         287 $_[0]->_wait;
2032             }
2033              
2034             $_[0]{_ae_croak}
2035 84 100       499 and Carp::croak $_[0]{_ae_croak};
2036              
2037             wantarray
2038 34         151 ? @{ $_[0]{_ae_sent} }
2039 82 100       272 : $_[0]{_ae_sent}[0]
2040             }
2041              
2042             sub cb {
2043 2     2   22 my $cv = shift;
2044              
2045             @_
2046             and $cv->{_ae_cb} = shift
2047             and $cv->{_ae_sent}
2048 2 50 100     49 and (delete $cv->{_ae_cb})->($cv);
      33        
2049              
2050             $cv->{_ae_cb}
2051 2         5 }
2052              
2053             sub begin {
2054 25     25   1102 ++$_[0]{_ae_counter};
2055 25 100       85 $_[0]{_ae_end_cb} = $_[1] if @_ > 1;
2056             }
2057              
2058             sub end {
2059 25 100   25   84881 return if --$_[0]{_ae_counter};
2060 12 100   11   31 &{ $_[0]{_ae_end_cb} || sub { $_[0]->send } };
  12         111  
  11         57  
2061             }
2062              
2063             # undocumented/compatibility with pre-3.4
2064             *broadcast = \&send;
2065             *wait = \&recv;
2066              
2067             =head1 ERROR AND EXCEPTION HANDLING
2068              
2069             In general, AnyEvent does not do any error handling - it relies on the
2070             caller to do that if required. The L module (see also
2071             the C environment variable, below) provides strict
2072             checking of all AnyEvent methods, however, which is highly useful during
2073             development.
2074              
2075             As for exception handling (i.e. runtime errors and exceptions thrown while
2076             executing a callback), this is not only highly event-loop specific, but
2077             also not in any way wrapped by this module, as this is the job of the main
2078             program.
2079              
2080             The pure perl event loop simply re-throws the exception (usually
2081             within C<< condvar->recv >>), the L and L modules call C<<
2082             $Event/EV::DIED->() >>, L uses C<< install_exception_handler >> and
2083             so on.
2084              
2085             =head1 ENVIRONMENT VARIABLES
2086              
2087             AnyEvent supports a number of environment variables that tune the
2088             runtime behaviour. They are usually evaluated when AnyEvent is
2089             loaded, initialised, or a submodule that uses them is loaded. Many of
2090             them also cause AnyEvent to load additional modules - for example,
2091             C causes the L module to be
2092             loaded.
2093              
2094             All the environment variables documented here start with
2095             C, which is what AnyEvent considers its own
2096             namespace. Other modules are encouraged (but by no means required) to use
2097             C if they have registered the AnyEvent::Submodule
2098             namespace on CPAN, for any submodule. For example, L could
2099             be expected to use C (it should not access env
2100             variables starting with C, see below).
2101              
2102             All variables can also be set via the C prefix, that is, instead
2103             of setting C you can also set C. In
2104             case there is a clash btween anyevent and another program that uses
2105             C you can set the corresponding C
2106             variable to the empty string, as those variables take precedence.
2107              
2108             When AnyEvent is first loaded, it copies all C env variables
2109             to their C counterpart unless that variable already
2110             exists. If taint mode is on, then AnyEvent will remove I environment
2111             variables starting with C from C<%ENV> (or replace them
2112             with C or the empty string, if the corresaponding C variable
2113             is set).
2114              
2115             The exact algorithm is currently:
2116              
2117             1. if taint mode enabled, delete all PERL_ANYEVENT_xyz variables from %ENV
2118             2. copy over AE_xyz to PERL_ANYEVENT_xyz unless the latter alraedy exists
2119             3. if taint mode enabled, set all PERL_ANYEVENT_xyz variables to undef.
2120              
2121             This ensures that child processes will not see the C variables.
2122              
2123             The following environment variables are currently known to AnyEvent:
2124              
2125             =over 4
2126              
2127             =item C
2128              
2129             By default, AnyEvent will log messages with loglevel C<4> (C) or
2130             higher (see L). You can set this environment variable to a
2131             numerical loglevel to make AnyEvent more (or less) talkative.
2132              
2133             If you want to do more than just set the global logging level
2134             you should have a look at C, which allows much more
2135             complex specifications.
2136              
2137             When set to C<0> (C), then no messages whatsoever will be logged with
2138             everything else at defaults.
2139              
2140             When set to C<5> or higher (C), AnyEvent warns about unexpected
2141             conditions, such as not being able to load the event model specified by
2142             C, or a guard callback throwing an exception - this
2143             is the minimum recommended level for use during development.
2144              
2145             When set to C<7> or higher (info), AnyEvent reports which event model it
2146             chooses.
2147              
2148             When set to C<8> or higher (debug), then AnyEvent will report extra
2149             information on which optional modules it loads and how it implements
2150             certain features.
2151              
2152             =item C
2153              
2154             Accepts rather complex logging specifications. For example, you could log
2155             all C messages of some module to stderr, warnings and above to
2156             stderr, and errors and above to syslog, with:
2157              
2158             PERL_ANYEVENT_LOG=Some::Module=debug,+log:filter=warn,+%syslog:%syslog=error,syslog
2159              
2160             For the rather extensive details, see L.
2161              
2162             This variable is evaluated when AnyEvent (or L) is loaded,
2163             so will take effect even before AnyEvent has initialised itself.
2164              
2165             Note that specifying this environment variable causes the L
2166             module to be loaded, while C does not, so only
2167             using the latter saves a few hundred kB of memory unless a module
2168             explicitly needs the extra features of AnyEvent::Log.
2169              
2170             =item C
2171              
2172             AnyEvent does not do much argument checking by default, as thorough
2173             argument checking is very costly. Setting this variable to a true value
2174             will cause AnyEvent to load C and then to thoroughly
2175             check the arguments passed to most method calls. If it finds any problems,
2176             it will croak.
2177              
2178             In other words, enables "strict" mode.
2179              
2180             Unlike C (or its modern cousin, C<< use L
2181             >>, it is definitely recommended to keep it off in production. Keeping
2182             C in your environment while developing programs
2183             can be very useful, however.
2184              
2185             =item C
2186              
2187             If this env variable is nonempty, then its contents will be interpreted by
2188             C and C (after
2189             replacing every occurance of C<$$> by the process pid). The shell object
2190             is saved in C<$AnyEvent::Debug::SHELL>.
2191              
2192             This happens when the first watcher is created.
2193              
2194             For example, to bind a debug shell on a unix domain socket in
2195             F<< /tmp/debug.sock >>, you could use this:
2196              
2197             PERL_ANYEVENT_DEBUG_SHELL=/tmp/debug\$\$.sock perlprog
2198             # connect with e.g.: socat readline /tmp/debug123.sock
2199              
2200             Or to bind to tcp port 4545 on localhost:
2201              
2202             PERL_ANYEVENT_DEBUG_SHELL=127.0.0.1:4545 perlprog
2203             # connect with e.g.: telnet localhost 4545
2204              
2205             Note that creating sockets in F or on localhost is very unsafe on
2206             multiuser systems.
2207              
2208             =item C
2209              
2210             Can be set to C<0>, C<1> or C<2> and enables wrapping of all watchers for
2211             debugging purposes. See C for details.
2212              
2213             =item C
2214              
2215             This can be used to specify the event model to be used by AnyEvent, before
2216             auto detection and -probing kicks in.
2217              
2218             It normally is a string consisting entirely of ASCII letters (e.g. C
2219             or C). The string C gets prepended and the
2220             resulting module name is loaded and - if the load was successful - used as
2221             event model backend. If it fails to load then AnyEvent will proceed with
2222             auto detection and -probing.
2223              
2224             If the string ends with C<::> instead (e.g. C) then
2225             nothing gets prepended and the module name is used as-is (hint: C<::> at
2226             the end of a string designates a module name and quotes it appropriately).
2227              
2228             For example, to force the pure perl model (L) you
2229             could start your program like this:
2230              
2231             PERL_ANYEVENT_MODEL=Perl perl ...
2232              
2233             =item C
2234              
2235             The current file I/O model - see L for more info.
2236              
2237             At the moment, only C (small, pure-perl, synchronous) and
2238             C (truly asynchronous) are supported. The default is C if
2239             L can be loaded, otherwise it is C.
2240              
2241             =item C
2242              
2243             Used by both L and L to determine preferences
2244             for IPv4 or IPv6. The default is unspecified (and might change, or be the result
2245             of auto probing).
2246              
2247             Must be set to a comma-separated list of protocols or address families,
2248             current supported: C and C. Only protocols mentioned will be
2249             used, and preference will be given to protocols mentioned earlier in the
2250             list.
2251              
2252             This variable can effectively be used for denial-of-service attacks
2253             against local programs (e.g. when setuid), although the impact is likely
2254             small, as the program has to handle connection and other failures anyways.
2255              
2256             Examples: C - prefer IPv4 over IPv6,
2257             but support both and try to use both. C
2258             - only support IPv4, never try to resolve or contact IPv6
2259             addresses. C support either IPv4 or
2260             IPv6, but prefer IPv6 over IPv4.
2261              
2262             =item C
2263              
2264             This variable, if specified, overrides the F file used by
2265             LC<::resolve_sockaddr>, i.e. hosts aliases will be read
2266             from that file instead.
2267              
2268             =item C
2269              
2270             Used by L to decide whether to use the EDNS0 extension for
2271             DNS. This extension is generally useful to reduce DNS traffic, especially
2272             when DNSSEC is involved, but some (broken) firewalls drop such DNS
2273             packets, which is why it is off by default.
2274              
2275             Setting this variable to C<1> will cause L to announce
2276             EDNS0 in its DNS requests.
2277              
2278             =item C
2279              
2280             The maximum number of child processes that C
2281             will create in parallel.
2282              
2283             =item C
2284              
2285             The default value for the C parameter for the default DNS
2286             resolver - this is the maximum number of parallel DNS requests that are
2287             sent to the DNS server.
2288              
2289             =item C
2290              
2291             Perl has inherently racy signal handling (you can basically choose between
2292             losing signals and memory corruption) - pure perl event loops (including
2293             C, when C isn't available) therefore
2294             have to poll regularly to avoid losing signals.
2295              
2296             Some event loops are racy, but don't poll regularly, and some event loops
2297             are written in C but are still racy. For those event loops, AnyEvent
2298             installs a timer that regularly wakes up the event loop.
2299              
2300             By default, the interval for this timer is C<10> seconds, but you can
2301             override this delay with this environment variable (or by setting
2302             the C<$AnyEvent::MAX_SIGNAL_LATENCY> variable before creating signal
2303             watchers).
2304              
2305             Lower values increase CPU (and energy) usage, higher values can introduce
2306             long delays when reaping children or waiting for signals.
2307              
2308             The L module, if available, will be used to avoid this
2309             polling (with most event loops).
2310              
2311             =item C
2312              
2313             The absolute path to a F-style file to use instead of
2314             F (or the OS-specific configuration) in the default
2315             resolver, or the empty string to select the default configuration.
2316              
2317             =item C, C.
2318              
2319             When neither C nor C was specified during
2320             L context creation, and either of these environment
2321             variables are nonempty, they will be used to specify CA certificate
2322             locations instead of a system-dependent default.
2323              
2324             =item C and C
2325              
2326             When these are set to C<1>, then the respective modules are not
2327             loaded. Mostly good for testing AnyEvent itself.
2328              
2329             =back
2330              
2331             =head1 SUPPLYING YOUR OWN EVENT MODEL INTERFACE
2332              
2333             This is an advanced topic that you do not normally need to use AnyEvent in
2334             a module. This section is only of use to event loop authors who want to
2335             provide AnyEvent compatibility.
2336              
2337             If you need to support another event library which isn't directly
2338             supported by AnyEvent, you can supply your own interface to it by
2339             pushing, before the first watcher gets created, the package name of
2340             the event module and the package name of the interface to use onto
2341             C<@AnyEvent::REGISTRY>. You can do that before and even without loading
2342             AnyEvent, so it is reasonably cheap.
2343              
2344             Example:
2345              
2346             push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::];
2347              
2348             This tells AnyEvent to (literally) use the C
2349             package/class when it finds the C package/module is already loaded.
2350              
2351             When AnyEvent is loaded and asked to find a suitable event model, it
2352             will first check for the presence of urxvt by trying to C the
2353             C module.
2354              
2355             The class should provide implementations for all watcher types. See
2356             L (source code), L (Source code)
2357             and so on for actual examples. Use C to
2358             see the sources.
2359              
2360             If you don't provide C and C watchers than AnyEvent will
2361             provide suitable (hopefully) replacements.
2362              
2363             The above example isn't fictitious, the I (a.k.a. urxvt)
2364             terminal emulator uses the above line as-is. An interface isn't included
2365             in AnyEvent because it doesn't make sense outside the embedded interpreter
2366             inside I, and it is updated and maintained as part of the
2367             I distribution.
2368              
2369             I also cheats a bit by not providing blocking access to
2370             condition variables: code blocking while waiting for a condition will
2371             C. This still works with most modules/usages, and blocking calls must
2372             not be done in an interactive application, so it makes sense.
2373              
2374             =head1 EXAMPLE PROGRAM
2375              
2376             The following program uses an I/O watcher to read data from STDIN, a timer
2377             to display a message once per second, and a condition variable to quit the
2378             program when the user enters quit:
2379              
2380             use AnyEvent;
2381              
2382             my $cv = AnyEvent->condvar;
2383              
2384             my $io_watcher = AnyEvent->io (
2385             fh => \*STDIN,
2386             poll => 'r',
2387             cb => sub {
2388             warn "io event <$_[0]>\n"; # will always output
2389             chomp (my $input = ); # read a line
2390             warn "read: $input\n"; # output what has been read
2391             $cv->send if $input =~ /^q/i; # quit program if /^q/i
2392             },
2393             );
2394              
2395             my $time_watcher = AnyEvent->timer (after => 1, interval => 1, cb => sub {
2396             warn "timeout\n"; # print 'timeout' at most every second
2397             });
2398              
2399             $cv->recv; # wait until user enters /^q/i
2400              
2401             =head1 REAL-WORLD EXAMPLE
2402              
2403             Consider the L module. It features (among others) the following
2404             API calls, which are to freenet what HTTP GET requests are to http:
2405              
2406             my $data = $fcp->client_get ($url); # blocks
2407              
2408             my $transaction = $fcp->txn_client_get ($url); # does not block
2409             $transaction->cb ( sub { ... } ); # set optional result callback
2410             my $data = $transaction->result; # possibly blocks
2411              
2412             The C method works like C: it requests the
2413             given URL and waits till the data has arrived. It is defined to be:
2414              
2415             sub client_get { $_[0]->txn_client_get ($_[1])->result }
2416              
2417             And in fact is automatically generated. This is the blocking API of
2418             L, and it works as simple as in any other, similar, module.
2419              
2420             More complicated is C: It only creates a transaction
2421             (completion, result, ...) object and initiates the transaction.
2422              
2423             my $txn = bless { }, Net::FCP::Txn::;
2424              
2425             It also creates a condition variable that is used to signal the completion
2426             of the request:
2427              
2428             $txn->{finished} = AnyAvent->condvar;
2429              
2430             It then creates a socket in non-blocking mode.
2431              
2432             socket $txn->{fh}, ...;
2433             fcntl $txn->{fh}, F_SETFL, O_NONBLOCK;
2434             connect $txn->{fh}, ...
2435             and !$!{EWOULDBLOCK}
2436             and !$!{EINPROGRESS}
2437             and Carp::croak "unable to connect: $!\n";
2438              
2439             Then it creates a write-watcher which gets called whenever an error occurs
2440             or the connection succeeds:
2441              
2442             $txn->{w} = AnyEvent->io (fh => $txn->{fh}, poll => 'w', cb => sub { $txn->fh_ready_w });
2443              
2444             And returns this transaction object. The C callback gets
2445             called as soon as the event loop detects that the socket is ready for
2446             writing.
2447              
2448             The C method makes the socket blocking again, writes the
2449             request data and replaces the watcher by a read watcher (waiting for reply
2450             data). The actual code is more complicated, but that doesn't matter for
2451             this example:
2452              
2453             fcntl $txn->{fh}, F_SETFL, 0;
2454             syswrite $txn->{fh}, $txn->{request}
2455             or die "connection or write error";
2456             $txn->{w} = AnyEvent->io (fh => $txn->{fh}, poll => 'r', cb => sub { $txn->fh_ready_r });
2457              
2458             Again, C waits till all data has arrived, and then stores the
2459             result and signals any possible waiters that the request has finished:
2460              
2461             sysread $txn->{fh}, $txn->{buf}, length $txn->{$buf};
2462              
2463             if (end-of-file or data complete) {
2464             $txn->{result} = $txn->{buf};
2465             $txn->{finished}->send;
2466             $txb->{cb}->($txn) of $txn->{cb}; # also call callback
2467             }
2468              
2469             The C method, finally, just waits for the finished signal (if the
2470             request was already finished, it doesn't wait, of course, and returns the
2471             data:
2472              
2473             $txn->{finished}->recv;
2474             return $txn->{result};
2475              
2476             The actual code goes further and collects all errors (Cs, exceptions)
2477             that occurred during request processing. The C method detects
2478             whether an exception as thrown (it is stored inside the $txn object)
2479             and just throws the exception, which means connection errors and other
2480             problems get reported to the code that tries to use the result, not in a
2481             random callback.
2482              
2483             All of this enables the following usage styles:
2484              
2485             1. Blocking:
2486              
2487             my $data = $fcp->client_get ($url);
2488              
2489             2. Blocking, but running in parallel:
2490              
2491             my @datas = map $_->result,
2492             map $fcp->txn_client_get ($_),
2493             @urls;
2494              
2495             Both blocking examples work without the module user having to know
2496             anything about events.
2497              
2498             3a. Event-based in a main program, using any supported event module:
2499              
2500             use EV;
2501              
2502             $fcp->txn_client_get ($url)->cb (sub {
2503             my $txn = shift;
2504             my $data = $txn->result;
2505             ...
2506             });
2507              
2508             EV::run;
2509              
2510             3b. The module user could use AnyEvent, too:
2511              
2512             use AnyEvent;
2513              
2514             my $quit = AnyEvent->condvar;
2515              
2516             $fcp->txn_client_get ($url)->cb (sub {
2517             ...
2518             $quit->send;
2519             });
2520              
2521             $quit->recv;
2522              
2523              
2524             =head1 BENCHMARKS
2525              
2526             To give you an idea of the performance and overheads that AnyEvent adds
2527             over the event loops themselves and to give you an impression of the speed
2528             of various event loops I prepared some benchmarks.
2529              
2530             =head2 BENCHMARKING ANYEVENT OVERHEAD
2531              
2532             Here is a benchmark of various supported event models used natively and
2533             through AnyEvent. The benchmark creates a lot of timers (with a zero
2534             timeout) and I/O watchers (watching STDOUT, a pty, to become writable,
2535             which it is), lets them fire exactly once and destroys them again.
2536              
2537             Source code for this benchmark is found as F in the AnyEvent
2538             distribution. It uses the L interface, which makes a real difference
2539             for the EV and Perl backends only.
2540              
2541             =head3 Explanation of the columns
2542              
2543             I is the number of event watchers created/destroyed. Since
2544             different event models feature vastly different performances, each event
2545             loop was given a number of watchers so that overall runtime is acceptable
2546             and similar between tested event loop (and keep them from crashing): Glib
2547             would probably take thousands of years if asked to process the same number
2548             of watchers as EV in this benchmark.
2549              
2550             I is the number of bytes (as measured by the resident set size,
2551             RSS) consumed by each watcher. This method of measuring captures both C
2552             and Perl-based overheads.
2553              
2554             I is the time, in microseconds (millionths of seconds), that it
2555             takes to create a single watcher. The callback is a closure shared between
2556             all watchers, to avoid adding memory overhead. That means closure creation
2557             and memory usage is not included in the figures.
2558              
2559             I is the time, in microseconds, used to invoke a simple
2560             callback. The callback simply counts down a Perl variable and after it was
2561             invoked "watcher" times, it would C<< ->send >> a condvar once to
2562             signal the end of this phase.
2563              
2564             I is the time, in microseconds, that it takes to destroy a single
2565             watcher.
2566              
2567             =head3 Results
2568              
2569             name watchers bytes create invoke destroy comment
2570             EV/EV 100000 223 0.47 0.43 0.27 EV native interface
2571             EV/Any 100000 223 0.48 0.42 0.26 EV + AnyEvent watchers
2572             Coro::EV/Any 100000 223 0.47 0.42 0.26 coroutines + Coro::Signal
2573             Perl/Any 100000 431 2.70 0.74 0.92 pure perl implementation
2574             Event/Event 16000 516 31.16 31.84 0.82 Event native interface
2575             Event/Any 16000 1203 42.61 34.79 1.80 Event + AnyEvent watchers
2576             IOAsync/Any 16000 1911 41.92 27.45 16.81 via IO::Async::Loop::IO_Poll
2577             IOAsync/Any 16000 1726 40.69 26.37 15.25 via IO::Async::Loop::Epoll
2578             Glib/Any 16000 1118 89.00 12.57 51.17 quadratic behaviour
2579             Tk/Any 2000 1346 20.96 10.75 8.00 SEGV with >> 2000 watchers
2580             POE/Any 2000 6951 108.97 795.32 14.24 via POE::Loop::Event
2581             POE/Any 2000 6648 94.79 774.40 575.51 via POE::Loop::Select
2582              
2583             =head3 Discussion
2584              
2585             The benchmark does I measure scalability of the event loop very
2586             well. For example, a select-based event loop (such as the pure perl one)
2587             can never compete with an event loop that uses epoll when the number of
2588             file descriptors grows high. In this benchmark, all events become ready at
2589             the same time, so select/poll-based implementations get an unnatural speed
2590             boost.
2591              
2592             Also, note that the number of watchers usually has a nonlinear effect on
2593             overall speed, that is, creating twice as many watchers doesn't take twice
2594             the time - usually it takes longer. This puts event loops tested with a
2595             higher number of watchers at a disadvantage.
2596              
2597             To put the range of results into perspective, consider that on the
2598             benchmark machine, handling an event takes roughly 1600 CPU cycles with
2599             EV, 3100 CPU cycles with AnyEvent's pure perl loop and almost 3000000 CPU
2600             cycles with POE.
2601              
2602             C is the sole leader regarding speed and memory use, which are both
2603             maximal/minimal, respectively. When using the L API there is zero
2604             overhead (when going through the AnyEvent API create is about 5-6 times
2605             slower, with other times being equal, so still uses far less memory than
2606             any other event loop and is still faster than Event natively).
2607              
2608             The pure perl implementation is hit in a few sweet spots (both the
2609             constant timeout and the use of a single fd hit optimisations in the perl
2610             interpreter and the backend itself). Nevertheless this shows that it
2611             adds very little overhead in itself. Like any select-based backend its
2612             performance becomes really bad with lots of file descriptors (and few of
2613             them active), of course, but this was not subject of this benchmark.
2614              
2615             The C module has a relatively high setup and callback invocation
2616             cost, but overall scores in on the third place.
2617              
2618             C performs admirably well, about on par with C, even
2619             when using its pure perl backend.
2620              
2621             C's memory usage is quite a bit higher, but it features a
2622             faster callback invocation and overall ends up in the same class as
2623             C. However, Glib scales extremely badly, doubling the number of
2624             watchers increases the processing time by more than a factor of four,
2625             making it completely unusable when using larger numbers of watchers
2626             (note that only a single file descriptor was used in the benchmark, so
2627             inefficiencies of C do not account for this).
2628              
2629             The C adaptor works relatively well. The fact that it crashes with
2630             more than 2000 watchers is a big setback, however, as correctness takes
2631             precedence over speed. Nevertheless, its performance is surprising, as the
2632             file descriptor is dup()ed for each watcher. This shows that the dup()
2633             employed by some adaptors is not a big performance issue (it does incur a
2634             hidden memory cost inside the kernel which is not reflected in the figures
2635             above).
2636              
2637             C, regardless of underlying event loop (whether using its pure perl
2638             select-based backend or the Event module, the POE-EV backend couldn't
2639             be tested because it wasn't working) shows abysmal performance and
2640             memory usage with AnyEvent: Watchers use almost 30 times as much memory
2641             as EV watchers, and 10 times as much memory as Event (the high memory
2642             requirements are caused by requiring a session for each watcher). Watcher
2643             invocation speed is almost 900 times slower than with AnyEvent's pure perl
2644             implementation.
2645              
2646             The design of the POE adaptor class in AnyEvent can not really account
2647             for the performance issues, though, as session creation overhead is
2648             small compared to execution of the state machine, which is coded pretty
2649             optimally within L (and while everybody agrees that
2650             using multiple sessions is not a good approach, especially regarding
2651             memory usage, even the author of POE could not come up with a faster
2652             design).
2653              
2654             =head3 Summary
2655              
2656             =over 4
2657              
2658             =item * Using EV through AnyEvent is faster than any other event loop
2659             (even when used without AnyEvent), but most event loops have acceptable
2660             performance with or without AnyEvent.
2661              
2662             =item * The overhead AnyEvent adds is usually much smaller than the overhead of
2663             the actual event loop, only with extremely fast event loops such as EV
2664             does AnyEvent add significant overhead.
2665              
2666             =item * You should avoid POE like the plague if you want performance or
2667             reasonable memory usage.
2668              
2669             =back
2670              
2671             =head2 BENCHMARKING THE LARGE SERVER CASE
2672              
2673             This benchmark actually benchmarks the event loop itself. It works by
2674             creating a number of "servers": each server consists of a socket pair, a
2675             timeout watcher that gets reset on activity (but never fires), and an I/O
2676             watcher waiting for input on one side of the socket. Each time the socket
2677             watcher reads a byte it will write that byte to a random other "server".
2678              
2679             The effect is that there will be a lot of I/O watchers, only part of which
2680             are active at any one point (so there is a constant number of active
2681             fds for each loop iteration, but which fds these are is random). The
2682             timeout is reset each time something is read because that reflects how
2683             most timeouts work (and puts extra pressure on the event loops).
2684              
2685             In this benchmark, we use 10000 socket pairs (20000 sockets), of which 100
2686             (1%) are active. This mirrors the activity of large servers with many
2687             connections, most of which are idle at any one point in time.
2688              
2689             Source code for this benchmark is found as F in the AnyEvent
2690             distribution. It uses the L interface, which makes a real difference
2691             for the EV and Perl backends only.
2692              
2693             =head3 Explanation of the columns
2694              
2695             I is the number of sockets, and twice the number of "servers" (as
2696             each server has a read and write socket end).
2697              
2698             I is the time it takes to create a socket pair (which is
2699             nontrivial) and two watchers: an I/O watcher and a timeout watcher.
2700              
2701             I, the most important value, is the time it takes to handle a
2702             single "request", that is, reading the token from the pipe and forwarding
2703             it to another server. This includes deleting the old timeout and creating
2704             a new one that moves the timeout into the future.
2705              
2706             =head3 Results
2707              
2708             name sockets create request
2709             EV 20000 62.66 7.99
2710             Perl 20000 68.32 32.64
2711             IOAsync 20000 174.06 101.15 epoll
2712             IOAsync 20000 174.67 610.84 poll
2713             Event 20000 202.69 242.91
2714             Glib 20000 557.01 1689.52
2715             POE 20000 341.54 12086.32 uses POE::Loop::Event
2716              
2717             =head3 Discussion
2718              
2719             This benchmark I measure scalability and overall performance of the
2720             particular event loop.
2721              
2722             EV is again fastest. Since it is using epoll on my system, the setup time
2723             is relatively high, though.
2724              
2725             Perl surprisingly comes second. It is much faster than the C-based event
2726             loops Event and Glib.
2727              
2728             IO::Async performs very well when using its epoll backend, and still quite
2729             good compared to Glib when using its pure perl backend.
2730              
2731             Event suffers from high setup time as well (look at its code and you will
2732             understand why). Callback invocation also has a high overhead compared to
2733             the C<< $_->() for .. >>-style loop that the Perl event loop uses. Event
2734             uses select or poll in basically all documented configurations.
2735              
2736             Glib is hit hard by its quadratic behaviour w.r.t. many watchers. It
2737             clearly fails to perform with many filehandles or in busy servers.
2738              
2739             POE is still completely out of the picture, taking over 1000 times as long
2740             as EV, and over 100 times as long as the Perl implementation, even though
2741             it uses a C-based event loop in this case.
2742              
2743             =head3 Summary
2744              
2745             =over 4
2746              
2747             =item * The pure perl implementation performs extremely well.
2748              
2749             =item * Avoid Glib or POE in large projects where performance matters.
2750              
2751             =back
2752              
2753             =head2 BENCHMARKING SMALL SERVERS
2754              
2755             While event loops should scale (and select-based ones do not...) even to
2756             large servers, most programs we (or I :) actually write have only a few
2757             I/O watchers.
2758              
2759             In this benchmark, I use the same benchmark program as in the large server
2760             case, but it uses only eight "servers", of which three are active at any
2761             one time. This should reflect performance for a small server relatively
2762             well.
2763              
2764             The columns are identical to the previous table.
2765              
2766             =head3 Results
2767              
2768             name sockets create request
2769             EV 16 20.00 6.54
2770             Perl 16 25.75 12.62
2771             Event 16 81.27 35.86
2772             Glib 16 32.63 15.48
2773             POE 16 261.87 276.28 uses POE::Loop::Event
2774              
2775             =head3 Discussion
2776              
2777             The benchmark tries to test the performance of a typical small
2778             server. While knowing how various event loops perform is interesting, keep
2779             in mind that their overhead in this case is usually not as important, due
2780             to the small absolute number of watchers (that is, you need efficiency and
2781             speed most when you have lots of watchers, not when you only have a few of
2782             them).
2783              
2784             EV is again fastest.
2785              
2786             Perl again comes second. It is noticeably faster than the C-based event
2787             loops Event and Glib, although the difference is too small to really
2788             matter.
2789              
2790             POE also performs much better in this case, but is is still far behind the
2791             others.
2792              
2793             =head3 Summary
2794              
2795             =over 4
2796              
2797             =item * C-based event loops perform very well with small number of
2798             watchers, as the management overhead dominates.
2799              
2800             =back
2801              
2802             =head2 THE IO::Lambda BENCHMARK
2803              
2804             Recently I was told about the benchmark in the IO::Lambda manpage, which
2805             could be misinterpreted to make AnyEvent look bad. In fact, the benchmark
2806             simply compares IO::Lambda with POE, and IO::Lambda looks better (which
2807             shouldn't come as a surprise to anybody). As such, the benchmark is
2808             fine, and mostly shows that the AnyEvent backend from IO::Lambda isn't
2809             very optimal. But how would AnyEvent compare when used without the extra
2810             baggage? To explore this, I wrote the equivalent benchmark for AnyEvent.
2811              
2812             The benchmark itself creates an echo-server, and then, for 500 times,
2813             connects to the echo server, sends a line, waits for the reply, and then
2814             creates the next connection. This is a rather bad benchmark, as it doesn't
2815             test the efficiency of the framework or much non-blocking I/O, but it is a
2816             benchmark nevertheless.
2817              
2818             name runtime
2819             Lambda/select 0.330 sec
2820             + optimized 0.122 sec
2821             Lambda/AnyEvent 0.327 sec
2822             + optimized 0.138 sec
2823             Raw sockets/select 0.077 sec
2824             POE/select, components 0.662 sec
2825             POE/select, raw sockets 0.226 sec
2826             POE/select, optimized 0.404 sec
2827              
2828             AnyEvent/select/nb 0.085 sec
2829             AnyEvent/EV/nb 0.068 sec
2830             +state machine 0.134 sec
2831              
2832             The benchmark is also a bit unfair (my fault): the IO::Lambda/POE
2833             benchmarks actually make blocking connects and use 100% blocking I/O,
2834             defeating the purpose of an event-based solution. All of the newly
2835             written AnyEvent benchmarks use 100% non-blocking connects (using
2836             AnyEvent::Socket::tcp_connect and the asynchronous pure perl DNS
2837             resolver), so AnyEvent is at a disadvantage here, as non-blocking connects
2838             generally require a lot more bookkeeping and event handling than blocking
2839             connects (which involve a single syscall only).
2840              
2841             The last AnyEvent benchmark additionally uses L, which
2842             offers similar expressive power as POE and IO::Lambda, using conventional
2843             Perl syntax. This means that both the echo server and the client are 100%
2844             non-blocking, further placing it at a disadvantage.
2845              
2846             As you can see, the AnyEvent + EV combination even beats the
2847             hand-optimised "raw sockets benchmark", while AnyEvent + its pure perl
2848             backend easily beats IO::Lambda and POE.
2849              
2850             And even the 100% non-blocking version written using the high-level (and
2851             slow :) L abstraction beats both POE and IO::Lambda
2852             higher level ("unoptimised") abstractions by a large margin, even though
2853             it does all of DNS, tcp-connect and socket I/O in a non-blocking way.
2854              
2855             The two AnyEvent benchmarks programs can be found as F and
2856             F in the AnyEvent distribution, the remaining benchmarks are
2857             part of the IO::Lambda distribution and were used without any changes.
2858              
2859              
2860             =head1 SIGNALS
2861              
2862             AnyEvent currently installs handlers for these signals:
2863              
2864             =over 4
2865              
2866             =item SIGCHLD
2867              
2868             A handler for C is installed by AnyEvent's child watcher
2869             emulation for event loops that do not support them natively. Also, some
2870             event loops install a similar handler.
2871              
2872             Additionally, when AnyEvent is loaded and SIGCHLD is set to IGNORE, then
2873             AnyEvent will reset it to default, to avoid losing child exit statuses.
2874              
2875             =item SIGPIPE
2876              
2877             A no-op handler is installed for C when C<$SIG{PIPE}> is C
2878             when AnyEvent gets loaded.
2879              
2880             The rationale for this is that AnyEvent users usually do not really depend
2881             on SIGPIPE delivery (which is purely an optimisation for shell use, or
2882             badly-written programs), but C can cause spurious and rare
2883             program exits as a lot of people do not expect C when writing to
2884             some random socket.
2885              
2886             The rationale for installing a no-op handler as opposed to ignoring it is
2887             that this way, the handler will be restored to defaults on exec.
2888              
2889             Feel free to install your own handler, or reset it to defaults.
2890              
2891             =back
2892              
2893             =cut
2894              
2895             undef $SIG{CHLD}
2896             if $SIG{CHLD} eq 'IGNORE';
2897              
2898             $SIG{PIPE} = sub { }
2899             unless defined $SIG{PIPE};
2900              
2901             =head1 RECOMMENDED/OPTIONAL MODULES
2902              
2903             One of AnyEvent's main goals is to be 100% Pure-Perl(tm): only perl (and
2904             its built-in modules) are required to use it.
2905              
2906             That does not mean that AnyEvent won't take advantage of some additional
2907             modules if they are installed.
2908              
2909             This section explains which additional modules will be used, and how they
2910             affect AnyEvent's operation.
2911              
2912             =over 4
2913              
2914             =item L
2915              
2916             This slightly arcane module is used to implement fast signal handling: To
2917             my knowledge, there is no way to do completely race-free and quick
2918             signal handling in pure perl. To ensure that signals still get
2919             delivered, AnyEvent will start an interval timer to wake up perl (and
2920             catch the signals) with some delay (default is 10 seconds, look for
2921             C<$AnyEvent::MAX_SIGNAL_LATENCY>).
2922              
2923             If this module is available, then it will be used to implement signal
2924             catching, which means that signals will not be delayed, and the event loop
2925             will not be interrupted regularly, which is more efficient (and good for
2926             battery life on laptops).
2927              
2928             This affects not just the pure-perl event loop, but also other event loops
2929             that have no signal handling on their own (e.g. Glib, Tk, Qt).
2930              
2931             Some event loops (POE, Event, Event::Lib) offer signal watchers natively,
2932             and either employ their own workarounds (POE) or use AnyEvent's workaround
2933             (using C<$AnyEvent::MAX_SIGNAL_LATENCY>). Installing L
2934             does nothing for those backends.
2935              
2936             =item L
2937              
2938             This module isn't really "optional", as it is simply one of the backend
2939             event loops that AnyEvent can use. However, it is simply the best event
2940             loop available in terms of features, speed and stability: It supports
2941             the AnyEvent API optimally, implements all the watcher types in XS, does
2942             automatic timer adjustments even when no monotonic clock is available,
2943             can take avdantage of advanced kernel interfaces such as C and
2944             C, and is the fastest backend I. You can even embed
2945             L/L in it (or vice versa, see L and L).
2946              
2947             If you only use backends that rely on another event loop (e.g. C),
2948             then this module will do nothing for you.
2949              
2950             =item L
2951              
2952             The guard module, when used, will be used to implement
2953             C. This speeds up guards considerably (and uses a
2954             lot less memory), but otherwise doesn't affect guard operation much. It is
2955             purely used for performance.
2956              
2957             =item L and L
2958              
2959             One of these modules is required when you want to read or write JSON data
2960             via L. L is also written in pure-perl, but can take
2961             advantage of the ultra-high-speed L module when it is installed.
2962              
2963             =item L
2964              
2965             Implementing TLS/SSL in Perl is certainly interesting, but not very
2966             worthwhile: If this module is installed, then L (with
2967             the help of L), gains the ability to do TLS/SSL.
2968              
2969             =item L
2970              
2971             This module is part of perl since release 5.008. It will be used when the
2972             chosen event library does not come with a timing source of its own. The
2973             pure-perl event loop (L) will additionally load it to
2974             try to use a monotonic clock for timing stability.
2975              
2976             =item L (and L)
2977              
2978             The default implementation of L is to do I/O synchronously,
2979             stopping programs while they access the disk, which is fine for a lot of
2980             programs.
2981              
2982             Installing AnyEvent::AIO (and its IO::AIO dependency) makes it switch to
2983             a true asynchronous implementation, so event processing can continue even
2984             while waiting for disk I/O.
2985              
2986             =back
2987              
2988              
2989             =head1 FORK
2990              
2991             Most event libraries are not fork-safe. The ones who are usually are
2992             because they rely on inefficient but fork-safe C
2993             - higher performance APIs such as BSD's kqueue or the dreaded Linux epoll
2994             are usually badly thought-out hacks that are incompatible with fork in
2995             one way or another. Only L is fully fork-aware and ensures that you
2996             continue event-processing in both parent and child (or both, if you know
2997             what you are doing).
2998              
2999             This means that, in general, you cannot fork and do event processing in
3000             the child if the event library was initialised before the fork (which
3001             usually happens when the first AnyEvent watcher is created, or the library
3002             is loaded).
3003              
3004             If you have to fork, you must either do so I creating your first
3005             watcher OR you must not use AnyEvent at all in the child OR you must do
3006             something completely out of the scope of AnyEvent (see below).
3007              
3008             The problem of doing event processing in the parent I the child
3009             is much more complicated: even for backends that I fork-aware or
3010             fork-safe, their behaviour is not usually what you want: fork clones all
3011             watchers, that means all timers, I/O watchers etc. are active in both
3012             parent and child, which is almost never what you want. Using C
3013             to start worker children from some kind of manage prrocess is usually
3014             preferred, because it is much easier and cleaner, at the expense of having
3015             to have another binary.
3016              
3017             In addition to logical problems with fork, there are also implementation
3018             problems. For example, on POSIX systems, you cannot fork at all in Perl
3019             code if a thread (I am talking of pthreads here) was ever created in the
3020             process, and this is just the tip of the iceberg. In general, using fork
3021             from Perl is difficult, and attempting to use fork without an exec to
3022             implement some kind of parallel processing is almost certainly doomed.
3023              
3024             To safely fork and exec, you should use a module such as
3025             L that let's you safely fork and exec new processes.
3026              
3027             If you want to do multiprocessing using processes, you can
3028             look at the L module (and some related modules
3029             such as L, L and
3030             L). This module allows you to safely create
3031             subprocesses without any limitations - you can use X11 toolkits or
3032             AnyEvent in the children created by L safely and without
3033             any special precautions.
3034              
3035              
3036             =head1 SECURITY CONSIDERATIONS
3037              
3038             AnyEvent can be forced to load any event model via
3039             $ENV{PERL_ANYEVENT_MODEL}. While this cannot (to my knowledge) be used to
3040             execute arbitrary code or directly gain access, it can easily be used to
3041             make the program hang or malfunction in subtle ways, as AnyEvent watchers
3042             will not be active when the program uses a different event model than
3043             specified in the variable.
3044              
3045             You can make AnyEvent completely ignore this variable by deleting it
3046             before the first watcher gets created, e.g. with a C block:
3047              
3048             BEGIN { delete $ENV{PERL_ANYEVENT_MODEL} }
3049            
3050             use AnyEvent;
3051              
3052             Similar considerations apply to $ENV{PERL_ANYEVENT_VERBOSE}, as that can
3053             be used to probe what backend is used and gain other information (which is
3054             probably even less useful to an attacker than PERL_ANYEVENT_MODEL), and
3055             $ENV{PERL_ANYEVENT_STRICT}.
3056              
3057             Note that AnyEvent will remove I environment variables starting with
3058             C from C<%ENV> when it is loaded while taint mode is
3059             enabled.
3060              
3061              
3062             =head1 BUGS
3063              
3064             Perl 5.8 has numerous memleaks that sometimes hit this module and are hard
3065             to work around. If you suffer from memleaks, first upgrade to Perl 5.10
3066             and check wether the leaks still show up. (Perl 5.10.0 has other annoying
3067             memleaks, such as leaking on C and C but it is usually not as
3068             pronounced).
3069              
3070              
3071             =head1 SEE ALSO
3072              
3073             Tutorial/Introduction: L.
3074              
3075             FAQ: L.
3076              
3077             Utility functions: L (misc. grab-bag), L
3078             (simply logging).
3079              
3080             Development/Debugging: L (stricter checking),
3081             L (interactive shell, watcher tracing).
3082              
3083             Supported event modules: L, L, L,
3084             L, L, L, L, L, L,
3085             L, L, L, L, L.
3086              
3087             Implementations: L, L,
3088             L, L, L,
3089             L, L,
3090             L, L, L,
3091             L, L, L.
3092              
3093             Non-blocking handles, pipes, stream sockets, TCP clients and
3094             servers: L, L, L.
3095              
3096             Asynchronous File I/O: L.
3097              
3098             Asynchronous DNS: L.
3099              
3100             Thread support: L, L, L, L.
3101              
3102             Nontrivial usage examples: L, L,
3103             L.
3104              
3105              
3106             =head1 AUTHOR
3107              
3108             Marc Lehmann
3109             http://anyevent.schmorp.de
3110              
3111             =cut
3112              
3113             1
3114