ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent.pm
Revision: 1.206
Committed: Mon Apr 20 14:34:18 2009 UTC (15 years, 2 months ago) by root
Branch: MAIN
CVS Tags: rel-4_352
Changes since 1.205: +1 -1 lines
Log Message:
4.352

File Contents

# User Rev Content
1 root 1.150 =head1 NAME
2 root 1.1
3 root 1.2 AnyEvent - provide framework for multiple event loops
4    
5 root 1.108 EV, Event, Glib, Tk, Perl, Event::Lib, Qt, POE - various supported event loops
6 root 1.1
7     =head1 SYNOPSIS
8    
9 root 1.7 use AnyEvent;
10 root 1.2
11 root 1.173 my $w = AnyEvent->io (fh => $fh, poll => "r|w", cb => sub { ... });
12    
13     my $w = AnyEvent->timer (after => $seconds, cb => sub { ... });
14     my $w = AnyEvent->timer (after => $seconds, interval => $seconds, cb => ...
15    
16     print AnyEvent->now; # prints current event loop time
17     print AnyEvent->time; # think Time::HiRes::time or simply CORE::time.
18    
19     my $w = AnyEvent->signal (signal => "TERM", cb => sub { ... });
20 root 1.5
21 root 1.173 my $w = AnyEvent->child (pid => $pid, cb => sub {
22     my ($pid, $status) = @_;
23 root 1.2 ...
24     });
25    
26 root 1.52 my $w = AnyEvent->condvar; # stores whether a condition was flagged
27 root 1.114 $w->send; # wake up current and all future recv's
28     $w->recv; # enters "main loop" till $condvar gets ->send
29 root 1.173 # use a condvar in callback mode:
30     $w->cb (sub { $_[0]->recv });
31 root 1.5
32 root 1.148 =head1 INTRODUCTION/TUTORIAL
33    
34     This manpage is mainly a reference manual. If you are interested
35     in a tutorial or some gentle introduction, have a look at the
36     L<AnyEvent::Intro> manpage.
37    
38 root 1.43 =head1 WHY YOU SHOULD USE THIS MODULE (OR NOT)
39 root 1.41
40     Glib, POE, IO::Async, Event... CPAN offers event models by the dozen
41     nowadays. So what is different about AnyEvent?
42    
43     Executive Summary: AnyEvent is I<compatible>, AnyEvent is I<free of
44     policy> and AnyEvent is I<small and efficient>.
45    
46     First and foremost, I<AnyEvent is not an event model> itself, it only
47 root 1.168 interfaces to whatever event model the main program happens to use, in a
48 root 1.41 pragmatic way. For event models and certain classes of immortals alike,
49 root 1.53 the statement "there can only be one" is a bitter reality: In general,
50     only one event loop can be active at the same time in a process. AnyEvent
51 root 1.168 cannot change this, but it can hide the differences between those event
52     loops.
53 root 1.41
54     The goal of AnyEvent is to offer module authors the ability to do event
55     programming (waiting for I/O or timer events) without subscribing to a
56     religion, a way of living, and most importantly: without forcing your
57     module users into the same thing by forcing them to use the same event
58     model you use.
59    
60 root 1.53 For modules like POE or IO::Async (which is a total misnomer as it is
61     actually doing all I/O I<synchronously>...), using them in your module is
62     like joining a cult: After you joined, you are dependent on them and you
63 root 1.168 cannot use anything else, as they are simply incompatible to everything
64     that isn't them. What's worse, all the potential users of your
65     module are I<also> forced to use the same event loop you use.
66 root 1.53
67     AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works
68     fine. AnyEvent + Tk works fine etc. etc. but none of these work together
69 root 1.142 with the rest: POE + IO::Async? No go. Tk + Event? No go. Again: if
70 root 1.53 your module uses one of those, every user of your module has to use it,
71     too. But if your module uses AnyEvent, it works transparently with all
72 root 1.168 event models it supports (including stuff like IO::Async, as long as those
73     use one of the supported event loops. It is trivial to add new event loops
74     to AnyEvent, too, so it is future-proof).
75 root 1.41
76 root 1.53 In addition to being free of having to use I<the one and only true event
77 root 1.41 model>, AnyEvent also is free of bloat and policy: with POE or similar
78 root 1.128 modules, you get an enormous amount of code and strict rules you have to
79 root 1.53 follow. AnyEvent, on the other hand, is lean and up to the point, by only
80     offering the functionality that is necessary, in as thin as a wrapper as
81 root 1.41 technically possible.
82    
83 root 1.142 Of course, AnyEvent comes with a big (and fully optional!) toolbox
84     of useful functionality, such as an asynchronous DNS resolver, 100%
85     non-blocking connects (even with TLS/SSL, IPv6 and on broken platforms
86     such as Windows) and lots of real-world knowledge and workarounds for
87     platform bugs and differences.
88    
89     Now, if you I<do want> lots of policy (this can arguably be somewhat
90 root 1.46 useful) and you want to force your users to use the one and only event
91     model, you should I<not> use this module.
92 root 1.43
93 root 1.1 =head1 DESCRIPTION
94    
95 root 1.2 L<AnyEvent> provides an identical interface to multiple event loops. This
96 root 1.13 allows module authors to utilise an event loop without forcing module
97 root 1.2 users to use the same event loop (as only a single event loop can coexist
98     peacefully at any one time).
99    
100 root 1.53 The interface itself is vaguely similar, but not identical to the L<Event>
101 root 1.2 module.
102    
103 root 1.53 During the first call of any watcher-creation method, the module tries
104 root 1.61 to detect the currently loaded event loop by probing whether one of the
105 root 1.108 following modules is already loaded: L<EV>,
106 root 1.81 L<Event>, L<Glib>, L<AnyEvent::Impl::Perl>, L<Tk>, L<Event::Lib>, L<Qt>,
107 root 1.61 L<POE>. The first one found is used. If none are found, the module tries
108 root 1.81 to load these modules (excluding Tk, Event::Lib, Qt and POE as the pure perl
109 root 1.61 adaptor should always succeed) in the order given. The first one that can
110 root 1.57 be successfully loaded will be used. If, after this, still none could be
111     found, AnyEvent will fall back to a pure-perl event loop, which is not
112     very efficient, but should work everywhere.
113 root 1.14
114     Because AnyEvent first checks for modules that are already loaded, loading
115 root 1.53 an event model explicitly before first using AnyEvent will likely make
116 root 1.14 that model the default. For example:
117    
118     use Tk;
119     use AnyEvent;
120    
121     # .. AnyEvent will likely default to Tk
122    
123 root 1.53 The I<likely> means that, if any module loads another event model and
124     starts using it, all bets are off. Maybe you should tell their authors to
125     use AnyEvent so their modules work together with others seamlessly...
126    
127 root 1.14 The pure-perl implementation of AnyEvent is called
128     C<AnyEvent::Impl::Perl>. Like other event modules you can load it
129 root 1.142 explicitly and enjoy the high availability of that event loop :)
130 root 1.14
131     =head1 WATCHERS
132    
133     AnyEvent has the central concept of a I<watcher>, which is an object that
134     stores relevant data for each kind of event you are waiting for, such as
135 root 1.128 the callback to call, the file handle to watch, etc.
136 root 1.14
137     These watchers are normal Perl objects with normal Perl lifetime. After
138 root 1.53 creating a watcher it will immediately "watch" for events and invoke the
139     callback when the event occurs (of course, only when the event model
140     is in control).
141    
142 root 1.196 Note that B<callbacks must not permanently change global variables>
143     potentially in use by the event loop (such as C<$_> or C<$[>) and that B<<
144     callbacks must not C<die> >>. The former is good programming practise in
145     Perl and the latter stems from the fact that exception handling differs
146     widely between event loops.
147    
148 root 1.53 To disable the watcher you have to destroy it (e.g. by setting the
149     variable you store it in to C<undef> or otherwise deleting all references
150     to it).
151 root 1.14
152     All watchers are created by calling a method on the C<AnyEvent> class.
153    
154 root 1.53 Many watchers either are used with "recursion" (repeating timers for
155     example), or need to refer to their watcher object in other ways.
156    
157     An any way to achieve that is this pattern:
158    
159 root 1.151 my $w; $w = AnyEvent->type (arg => value ..., cb => sub {
160     # you can use $w here, for example to undef it
161     undef $w;
162     });
163 root 1.53
164     Note that C<my $w; $w => combination. This is necessary because in Perl,
165     my variables are only visible after the statement in which they are
166     declared.
167    
168 root 1.78 =head2 I/O WATCHERS
169 root 1.14
170 root 1.53 You can create an I/O watcher by calling the C<< AnyEvent->io >> method
171     with the following mandatory key-value pairs as arguments:
172 root 1.14
173 root 1.199 C<fh> is the Perl I<file handle> (I<not> file descriptor) to watch
174     for events (AnyEvent might or might not keep a reference to this file
175     handle). Note that only file handles pointing to things for which
176     non-blocking operation makes sense are allowed. This includes sockets,
177     most character devices, pipes, fifos and so on, but not for example files
178     or block devices.
179    
180     C<poll> must be a string that is either C<r> or C<w>, which creates a
181     watcher waiting for "r"eadable or "w"ritable events, respectively.
182    
183     C<cb> is the callback to invoke each time the file handle becomes ready.
184 root 1.53
185 root 1.85 Although the callback might get passed parameters, their value and
186     presence is undefined and you cannot rely on them. Portable AnyEvent
187     callbacks cannot use arguments passed to I/O watcher callbacks.
188    
189 root 1.82 The I/O watcher might use the underlying file descriptor or a copy of it.
190 root 1.84 You must not close a file handle as long as any watcher is active on the
191     underlying file descriptor.
192 root 1.53
193     Some event loops issue spurious readyness notifications, so you should
194     always use non-blocking calls when reading/writing from/to your file
195     handles.
196 root 1.14
197 root 1.164 Example: wait for readability of STDIN, then read a line and disable the
198     watcher.
199 root 1.14
200     my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub {
201     chomp (my $input = <STDIN>);
202     warn "read: $input\n";
203     undef $w;
204     });
205    
206 root 1.19 =head2 TIME WATCHERS
207 root 1.14
208 root 1.19 You can create a time watcher by calling the C<< AnyEvent->timer >>
209 root 1.14 method with the following mandatory arguments:
210    
211 root 1.53 C<after> specifies after how many seconds (fractional values are
212 root 1.85 supported) the callback should be invoked. C<cb> is the callback to invoke
213     in that case.
214    
215     Although the callback might get passed parameters, their value and
216     presence is undefined and you cannot rely on them. Portable AnyEvent
217     callbacks cannot use arguments passed to time watcher callbacks.
218 root 1.14
219 root 1.164 The callback will normally be invoked once only. If you specify another
220 root 1.165 parameter, C<interval>, as a strictly positive number (> 0), then the
221     callback will be invoked regularly at that interval (in fractional
222     seconds) after the first invocation. If C<interval> is specified with a
223     false value, then it is treated as if it were missing.
224 root 1.164
225     The callback will be rescheduled before invoking the callback, but no
226     attempt is done to avoid timer drift in most backends, so the interval is
227     only approximate.
228 root 1.14
229 root 1.164 Example: fire an event after 7.7 seconds.
230 root 1.14
231     my $w = AnyEvent->timer (after => 7.7, cb => sub {
232     warn "timeout\n";
233     });
234    
235     # to cancel the timer:
236 root 1.37 undef $w;
237 root 1.14
238 root 1.164 Example 2: fire an event after 0.5 seconds, then roughly every second.
239 root 1.53
240 root 1.164 my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub {
241     warn "timeout\n";
242 root 1.53 };
243    
244     =head3 TIMING ISSUES
245    
246     There are two ways to handle timers: based on real time (relative, "fire
247     in 10 seconds") and based on wallclock time (absolute, "fire at 12
248     o'clock").
249    
250 root 1.58 While most event loops expect timers to specified in a relative way, they
251     use absolute time internally. This makes a difference when your clock
252     "jumps", for example, when ntp decides to set your clock backwards from
253     the wrong date of 2014-01-01 to 2008-01-01, a watcher that is supposed to
254     fire "after" a second might actually take six years to finally fire.
255 root 1.53
256     AnyEvent cannot compensate for this. The only event loop that is conscious
257 root 1.58 about these issues is L<EV>, which offers both relative (ev_timer, based
258     on true relative time) and absolute (ev_periodic, based on wallclock time)
259     timers.
260 root 1.53
261     AnyEvent always prefers relative timers, if available, matching the
262     AnyEvent API.
263    
264 root 1.143 AnyEvent has two additional methods that return the "current time":
265    
266     =over 4
267    
268     =item AnyEvent->time
269    
270     This returns the "current wallclock time" as a fractional number of
271     seconds since the Epoch (the same thing as C<time> or C<Time::HiRes::time>
272     return, and the result is guaranteed to be compatible with those).
273    
274 root 1.144 It progresses independently of any event loop processing, i.e. each call
275     will check the system clock, which usually gets updated frequently.
276 root 1.143
277     =item AnyEvent->now
278    
279     This also returns the "current wallclock time", but unlike C<time>, above,
280     this value might change only once per event loop iteration, depending on
281     the event loop (most return the same time as C<time>, above). This is the
282 root 1.144 time that AnyEvent's timers get scheduled against.
283    
284     I<In almost all cases (in all cases if you don't care), this is the
285     function to call when you want to know the current time.>
286    
287     This function is also often faster then C<< AnyEvent->time >>, and
288     thus the preferred method if you want some timestamp (for example,
289     L<AnyEvent::Handle> uses this to update it's activity timeouts).
290    
291     The rest of this section is only of relevance if you try to be very exact
292     with your timing, you can skip it without bad conscience.
293 root 1.143
294     For a practical example of when these times differ, consider L<Event::Lib>
295     and L<EV> and the following set-up:
296    
297     The event loop is running and has just invoked one of your callback at
298     time=500 (assume no other callbacks delay processing). In your callback,
299     you wait a second by executing C<sleep 1> (blocking the process for a
300     second) and then (at time=501) you create a relative timer that fires
301     after three seconds.
302    
303     With L<Event::Lib>, C<< AnyEvent->time >> and C<< AnyEvent->now >> will
304     both return C<501>, because that is the current time, and the timer will
305     be scheduled to fire at time=504 (C<501> + C<3>).
306    
307 root 1.144 With L<EV>, C<< AnyEvent->time >> returns C<501> (as that is the current
308 root 1.143 time), but C<< AnyEvent->now >> returns C<500>, as that is the time the
309     last event processing phase started. With L<EV>, your timer gets scheduled
310     to run at time=503 (C<500> + C<3>).
311    
312     In one sense, L<Event::Lib> is more exact, as it uses the current time
313     regardless of any delays introduced by event processing. However, most
314     callbacks do not expect large delays in processing, so this causes a
315 root 1.144 higher drift (and a lot more system calls to get the current time).
316 root 1.143
317     In another sense, L<EV> is more exact, as your timer will be scheduled at
318     the same time, regardless of how long event processing actually took.
319    
320     In either case, if you care (and in most cases, you don't), then you
321     can get whatever behaviour you want with any event loop, by taking the
322     difference between C<< AnyEvent->time >> and C<< AnyEvent->now >> into
323     account.
324    
325 root 1.205 =item AnyEvent->now_update
326    
327     Some event loops (such as L<EV> or L<AnyEvent::Impl::Perl>) cache
328     the current time for each loop iteration (see the discussion of L<<
329     AnyEvent->now >>, above).
330    
331     When a callback runs for a long time (or when the process sleeps), then
332     this "current" time will differ substantially from the real time, which
333     might affect timers and time-outs.
334    
335     When this is the case, you can call this method, which will update the
336     event loop's idea of "current time".
337    
338     Note that updating the time I<might> cause some events to be handled.
339    
340 root 1.143 =back
341    
342 root 1.53 =head2 SIGNAL WATCHERS
343 root 1.14
344 root 1.53 You can watch for signals using a signal watcher, C<signal> is the signal
345 root 1.167 I<name> in uppercase and without any C<SIG> prefix, C<cb> is the Perl
346     callback to be invoked whenever a signal occurs.
347 root 1.53
348 root 1.85 Although the callback might get passed parameters, their value and
349     presence is undefined and you cannot rely on them. Portable AnyEvent
350     callbacks cannot use arguments passed to signal watcher callbacks.
351    
352 elmex 1.129 Multiple signal occurrences can be clumped together into one callback
353     invocation, and callback invocation will be synchronous. Synchronous means
354 root 1.53 that it might take a while until the signal gets handled by the process,
355 elmex 1.129 but it is guaranteed not to interrupt any other callbacks.
356 root 1.53
357     The main advantage of using these watchers is that you can share a signal
358     between multiple watchers.
359    
360     This watcher might use C<%SIG>, so programs overwriting those signals
361     directly will likely not work correctly.
362    
363     Example: exit on SIGINT
364    
365     my $w = AnyEvent->signal (signal => "INT", cb => sub { exit 1 });
366    
367     =head2 CHILD PROCESS WATCHERS
368    
369     You can also watch on a child process exit and catch its exit status.
370    
371     The child process is specified by the C<pid> argument (if set to C<0>, it
372 root 1.181 watches for any child process exit). The watcher will triggered only when
373     the child process has finished and an exit status is available, not on
374     any trace events (stopped/continued).
375    
376     The callback will be called with the pid and exit status (as returned by
377     waitpid), so unlike other watcher types, you I<can> rely on child watcher
378     callback arguments.
379    
380     This watcher type works by installing a signal handler for C<SIGCHLD>,
381     and since it cannot be shared, nothing else should use SIGCHLD or reap
382     random child processes (waiting for specific child processes, e.g. inside
383     C<system>, is just fine).
384 root 1.53
385 root 1.82 There is a slight catch to child watchers, however: you usually start them
386     I<after> the child process was created, and this means the process could
387     have exited already (and no SIGCHLD will be sent anymore).
388    
389     Not all event models handle this correctly (POE doesn't), but even for
390     event models that I<do> handle this correctly, they usually need to be
391     loaded before the process exits (i.e. before you fork in the first place).
392    
393     This means you cannot create a child watcher as the very first thing in an
394     AnyEvent program, you I<have> to create at least one watcher before you
395     C<fork> the child (alternatively, you can call C<AnyEvent::detect>).
396    
397     Example: fork a process and wait for it
398    
399 root 1.151 my $done = AnyEvent->condvar;
400    
401     my $pid = fork or exit 5;
402    
403     my $w = AnyEvent->child (
404     pid => $pid,
405     cb => sub {
406     my ($pid, $status) = @_;
407     warn "pid $pid exited with status $status";
408     $done->send;
409     },
410     );
411    
412     # do something else, then wait for process exit
413     $done->recv;
414 root 1.82
415 root 1.53 =head2 CONDITION VARIABLES
416    
417 root 1.105 If you are familiar with some event loops you will know that all of them
418     require you to run some blocking "loop", "run" or similar function that
419     will actively watch for new events and call your callbacks.
420    
421     AnyEvent is different, it expects somebody else to run the event loop and
422     will only block when necessary (usually when told by the user).
423    
424     The instrument to do that is called a "condition variable", so called
425     because they represent a condition that must become true.
426    
427     Condition variables can be created by calling the C<< AnyEvent->condvar
428     >> method, usually without arguments. The only argument pair allowed is
429 root 1.173
430 root 1.105 C<cb>, which specifies a callback to be called when the condition variable
431 root 1.173 becomes true, with the condition variable as the first argument (but not
432     the results).
433 root 1.105
434 elmex 1.129 After creation, the condition variable is "false" until it becomes "true"
435 root 1.131 by calling the C<send> method (or calling the condition variable as if it
436 root 1.135 were a callback, read about the caveats in the description for the C<<
437     ->send >> method).
438 root 1.105
439     Condition variables are similar to callbacks, except that you can
440     optionally wait for them. They can also be called merge points - points
441 elmex 1.129 in time where multiple outstanding events have been processed. And yet
442     another way to call them is transactions - each condition variable can be
443 root 1.105 used to represent a transaction, which finishes at some point and delivers
444     a result.
445 root 1.14
446 root 1.105 Condition variables are very useful to signal that something has finished,
447     for example, if you write a module that does asynchronous http requests,
448 root 1.53 then a condition variable would be the ideal candidate to signal the
449 root 1.105 availability of results. The user can either act when the callback is
450 root 1.114 called or can synchronously C<< ->recv >> for the results.
451 root 1.53
452 root 1.105 You can also use them to simulate traditional event loops - for example,
453     you can block your main program until an event occurs - for example, you
454 root 1.114 could C<< ->recv >> in your main program until the user clicks the Quit
455 root 1.106 button of your app, which would C<< ->send >> the "quit" event.
456 root 1.53
457     Note that condition variables recurse into the event loop - if you have
458 elmex 1.129 two pieces of code that call C<< ->recv >> in a round-robin fashion, you
459 root 1.53 lose. Therefore, condition variables are good to export to your caller, but
460     you should avoid making a blocking wait yourself, at least in callbacks,
461     as this asks for trouble.
462 root 1.41
463 root 1.105 Condition variables are represented by hash refs in perl, and the keys
464     used by AnyEvent itself are all named C<_ae_XXX> to make subclassing
465     easy (it is often useful to build your own transaction class on top of
466     AnyEvent). To subclass, use C<AnyEvent::CondVar> as base class and call
467     it's C<new> method in your own C<new> method.
468    
469     There are two "sides" to a condition variable - the "producer side" which
470 root 1.106 eventually calls C<< -> send >>, and the "consumer side", which waits
471     for the send to occur.
472 root 1.105
473 root 1.131 Example: wait for a timer.
474 root 1.105
475     # wait till the result is ready
476     my $result_ready = AnyEvent->condvar;
477    
478     # do something such as adding a timer
479 root 1.106 # or socket watcher the calls $result_ready->send
480 root 1.105 # when the "result" is ready.
481     # in this case, we simply use a timer:
482     my $w = AnyEvent->timer (
483     after => 1,
484 root 1.106 cb => sub { $result_ready->send },
485 root 1.105 );
486    
487     # this "blocks" (while handling events) till the callback
488 root 1.106 # calls send
489 root 1.114 $result_ready->recv;
490 root 1.105
491 root 1.131 Example: wait for a timer, but take advantage of the fact that
492     condition variables are also code references.
493    
494     my $done = AnyEvent->condvar;
495     my $delay = AnyEvent->timer (after => 5, cb => $done);
496     $done->recv;
497    
498 root 1.173 Example: Imagine an API that returns a condvar and doesn't support
499     callbacks. This is how you make a synchronous call, for example from
500     the main program:
501    
502     use AnyEvent::CouchDB;
503    
504     ...
505    
506     my @info = $couchdb->info->recv;
507    
508     And this is how you would just ste a callback to be called whenever the
509     results are available:
510    
511     $couchdb->info->cb (sub {
512     my @info = $_[0]->recv;
513     });
514    
515 root 1.105 =head3 METHODS FOR PRODUCERS
516    
517     These methods should only be used by the producing side, i.e. the
518 root 1.106 code/module that eventually sends the signal. Note that it is also
519 root 1.105 the producer side which creates the condvar in most cases, but it isn't
520     uncommon for the consumer to create it as well.
521 root 1.2
522 root 1.1 =over 4
523    
524 root 1.106 =item $cv->send (...)
525 root 1.105
526 root 1.114 Flag the condition as ready - a running C<< ->recv >> and all further
527     calls to C<recv> will (eventually) return after this method has been
528 root 1.106 called. If nobody is waiting the send will be remembered.
529 root 1.105
530     If a callback has been set on the condition variable, it is called
531 root 1.106 immediately from within send.
532 root 1.105
533 root 1.106 Any arguments passed to the C<send> call will be returned by all
534 root 1.114 future C<< ->recv >> calls.
535 root 1.105
536 root 1.135 Condition variables are overloaded so one can call them directly
537     (as a code reference). Calling them directly is the same as calling
538     C<send>. Note, however, that many C-based event loops do not handle
539     overloading, so as tempting as it may be, passing a condition variable
540     instead of a callback does not work. Both the pure perl and EV loops
541     support overloading, however, as well as all functions that use perl to
542     invoke a callback (as in L<AnyEvent::Socket> and L<AnyEvent::DNS> for
543     example).
544 root 1.131
545 root 1.105 =item $cv->croak ($error)
546    
547 root 1.114 Similar to send, but causes all call's to C<< ->recv >> to invoke
548 root 1.105 C<Carp::croak> with the given error message/object/scalar.
549    
550     This can be used to signal any errors to the condition variable
551     user/consumer.
552    
553     =item $cv->begin ([group callback])
554    
555     =item $cv->end
556    
557 root 1.114 These two methods are EXPERIMENTAL and MIGHT CHANGE.
558    
559 root 1.105 These two methods can be used to combine many transactions/events into
560     one. For example, a function that pings many hosts in parallel might want
561     to use a condition variable for the whole process.
562    
563     Every call to C<< ->begin >> will increment a counter, and every call to
564     C<< ->end >> will decrement it. If the counter reaches C<0> in C<< ->end
565     >>, the (last) callback passed to C<begin> will be executed. That callback
566 root 1.106 is I<supposed> to call C<< ->send >>, but that is not required. If no
567     callback was set, C<send> will be called without any arguments.
568 root 1.105
569     Let's clarify this with the ping example:
570    
571     my $cv = AnyEvent->condvar;
572    
573     my %result;
574 root 1.106 $cv->begin (sub { $cv->send (\%result) });
575 root 1.105
576     for my $host (@list_of_hosts) {
577     $cv->begin;
578     ping_host_then_call_callback $host, sub {
579     $result{$host} = ...;
580     $cv->end;
581     };
582     }
583    
584     $cv->end;
585    
586     This code fragment supposedly pings a number of hosts and calls
587 root 1.106 C<send> after results for all then have have been gathered - in any
588 root 1.105 order. To achieve this, the code issues a call to C<begin> when it starts
589     each ping request and calls C<end> when it has received some result for
590     it. Since C<begin> and C<end> only maintain a counter, the order in which
591     results arrive is not relevant.
592    
593     There is an additional bracketing call to C<begin> and C<end> outside the
594     loop, which serves two important purposes: first, it sets the callback
595     to be called once the counter reaches C<0>, and second, it ensures that
596 root 1.106 C<send> is called even when C<no> hosts are being pinged (the loop
597 root 1.105 doesn't execute once).
598    
599     This is the general pattern when you "fan out" into multiple subrequests:
600     use an outer C<begin>/C<end> pair to set the callback and ensure C<end>
601     is called at least once, and then, for each subrequest you start, call
602 elmex 1.129 C<begin> and for each subrequest you finish, call C<end>.
603 root 1.105
604     =back
605    
606     =head3 METHODS FOR CONSUMERS
607    
608     These methods should only be used by the consuming side, i.e. the
609     code awaits the condition.
610    
611 root 1.106 =over 4
612    
613 root 1.114 =item $cv->recv
614 root 1.14
615 root 1.106 Wait (blocking if necessary) until the C<< ->send >> or C<< ->croak
616 root 1.105 >> methods have been called on c<$cv>, while servicing other watchers
617     normally.
618    
619     You can only wait once on a condition - additional calls are valid but
620     will return immediately.
621    
622     If an error condition has been set by calling C<< ->croak >>, then this
623     function will call C<croak>.
624 root 1.14
625 root 1.106 In list context, all parameters passed to C<send> will be returned,
626 root 1.105 in scalar context only the first one will be returned.
627 root 1.14
628 root 1.47 Not all event models support a blocking wait - some die in that case
629 root 1.53 (programs might want to do that to stay interactive), so I<if you are
630     using this from a module, never require a blocking wait>, but let the
631 root 1.52 caller decide whether the call will block or not (for example, by coupling
632 root 1.47 condition variables with some kind of request results and supporting
633     callbacks so the caller knows that getting the result will not block,
634 elmex 1.129 while still supporting blocking waits if the caller so desires).
635 root 1.47
636 root 1.114 Another reason I<never> to C<< ->recv >> in a module is that you cannot
637     sensibly have two C<< ->recv >>'s in parallel, as that would require
638 root 1.47 multiple interpreters or coroutines/threads, none of which C<AnyEvent>
639 root 1.108 can supply.
640    
641     The L<Coro> module, however, I<can> and I<does> supply coroutines and, in
642     fact, L<Coro::AnyEvent> replaces AnyEvent's condvars by coroutine-safe
643     versions and also integrates coroutines into AnyEvent, making blocking
644 root 1.114 C<< ->recv >> calls perfectly safe as long as they are done from another
645 root 1.108 coroutine (one that doesn't run the event loop).
646 root 1.47
647 root 1.114 You can ensure that C<< -recv >> never blocks by setting a callback and
648     only calling C<< ->recv >> from within that callback (or at a later
649 root 1.105 time). This will work even when the event loop does not support blocking
650     waits otherwise.
651 root 1.53
652 root 1.106 =item $bool = $cv->ready
653    
654     Returns true when the condition is "true", i.e. whether C<send> or
655     C<croak> have been called.
656    
657 root 1.173 =item $cb = $cv->cb ($cb->($cv))
658 root 1.106
659     This is a mutator function that returns the callback set and optionally
660     replaces it before doing so.
661    
662     The callback will be called when the condition becomes "true", i.e. when
663 root 1.149 C<send> or C<croak> are called, with the only argument being the condition
664     variable itself. Calling C<recv> inside the callback or at any later time
665     is guaranteed not to block.
666 root 1.106
667 root 1.53 =back
668 root 1.14
669 root 1.53 =head1 GLOBAL VARIABLES AND FUNCTIONS
670 root 1.16
671     =over 4
672    
673     =item $AnyEvent::MODEL
674    
675     Contains C<undef> until the first watcher is being created. Then it
676     contains the event model that is being used, which is the name of the
677     Perl class implementing the model. This class is usually one of the
678     C<AnyEvent::Impl:xxx> modules, but can be any other class in the case
679     AnyEvent has been extended at runtime (e.g. in I<rxvt-unicode>).
680    
681     The known classes so far are:
682    
683 root 1.56 AnyEvent::Impl::EV based on EV (an interface to libev, best choice).
684     AnyEvent::Impl::Event based on Event, second best choice.
685 root 1.104 AnyEvent::Impl::Perl pure-perl implementation, fast and portable.
686 root 1.48 AnyEvent::Impl::Glib based on Glib, third-best choice.
687 root 1.16 AnyEvent::Impl::Tk based on Tk, very bad choice.
688 root 1.56 AnyEvent::Impl::Qt based on Qt, cannot be autoprobed (see its docs).
689 root 1.55 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
690 root 1.61 AnyEvent::Impl::POE based on POE, not generic enough for full support.
691    
692     There is no support for WxWidgets, as WxWidgets has no support for
693     watching file handles. However, you can use WxWidgets through the
694     POE Adaptor, as POE has a Wx backend that simply polls 20 times per
695     second, which was considered to be too horrible to even consider for
696 root 1.62 AnyEvent. Likewise, other POE backends can be used by AnyEvent by using
697 root 1.61 it's adaptor.
698 root 1.16
699 root 1.62 AnyEvent knows about L<Prima> and L<Wx> and will try to use L<POE> when
700     autodetecting them.
701    
702 root 1.19 =item AnyEvent::detect
703    
704 root 1.53 Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model
705     if necessary. You should only call this function right before you would
706     have created an AnyEvent watcher anyway, that is, as late as possible at
707     runtime.
708 root 1.19
709 root 1.111 =item $guard = AnyEvent::post_detect { BLOCK }
710 root 1.109
711     Arranges for the code block to be executed as soon as the event model is
712     autodetected (or immediately if this has already happened).
713    
714 root 1.110 If called in scalar or list context, then it creates and returns an object
715 root 1.112 that automatically removes the callback again when it is destroyed. See
716     L<Coro::BDB> for a case where this is useful.
717 root 1.110
718 root 1.111 =item @AnyEvent::post_detect
719 root 1.108
720     If there are any code references in this array (you can C<push> to it
721     before or after loading AnyEvent), then they will called directly after
722     the event loop has been chosen.
723    
724     You should check C<$AnyEvent::MODEL> before adding to this array, though:
725     if it contains a true value then the event loop has already been detected,
726     and the array will be ignored.
727    
728 root 1.111 Best use C<AnyEvent::post_detect { BLOCK }> instead.
729 root 1.109
730 root 1.16 =back
731    
732 root 1.14 =head1 WHAT TO DO IN A MODULE
733    
734 root 1.53 As a module author, you should C<use AnyEvent> and call AnyEvent methods
735 root 1.14 freely, but you should not load a specific event module or rely on it.
736    
737 root 1.53 Be careful when you create watchers in the module body - AnyEvent will
738 root 1.14 decide which event module to use as soon as the first method is called, so
739     by calling AnyEvent in your module body you force the user of your module
740     to load the event module first.
741    
742 root 1.114 Never call C<< ->recv >> on a condition variable unless you I<know> that
743 root 1.106 the C<< ->send >> method has been called on it already. This is
744 root 1.53 because it will stall the whole program, and the whole point of using
745     events is to stay interactive.
746    
747 root 1.114 It is fine, however, to call C<< ->recv >> when the user of your module
748 root 1.53 requests it (i.e. if you create a http request object ad have a method
749 root 1.114 called C<results> that returns the results, it should call C<< ->recv >>
750 root 1.53 freely, as the user of your module knows what she is doing. always).
751    
752 root 1.14 =head1 WHAT TO DO IN THE MAIN PROGRAM
753    
754     There will always be a single main program - the only place that should
755     dictate which event model to use.
756    
757     If it doesn't care, it can just "use AnyEvent" and use it itself, or not
758 root 1.53 do anything special (it does not need to be event-based) and let AnyEvent
759     decide which implementation to chose if some module relies on it.
760 root 1.14
761 root 1.134 If the main program relies on a specific event model - for example, in
762     Gtk2 programs you have to rely on the Glib module - you should load the
763 root 1.53 event module before loading AnyEvent or any module that uses it: generally
764     speaking, you should load it as early as possible. The reason is that
765     modules might create watchers when they are loaded, and AnyEvent will
766     decide on the event model to use as soon as it creates watchers, and it
767     might chose the wrong one unless you load the correct one yourself.
768 root 1.14
769 root 1.134 You can chose to use a pure-perl implementation by loading the
770     C<AnyEvent::Impl::Perl> module, which gives you similar behaviour
771     everywhere, but letting AnyEvent chose the model is generally better.
772    
773     =head2 MAINLOOP EMULATION
774    
775     Sometimes (often for short test scripts, or even standalone programs who
776     only want to use AnyEvent), you do not want to run a specific event loop.
777    
778     In that case, you can use a condition variable like this:
779    
780     AnyEvent->condvar->recv;
781    
782     This has the effect of entering the event loop and looping forever.
783    
784     Note that usually your program has some exit condition, in which case
785     it is better to use the "traditional" approach of storing a condition
786     variable somewhere, waiting for it, and sending it when the program should
787     exit cleanly.
788    
789 root 1.14
790 elmex 1.100 =head1 OTHER MODULES
791    
792 root 1.101 The following is a non-exhaustive list of additional modules that use
793     AnyEvent and can therefore be mixed easily with other AnyEvent modules
794     in the same program. Some of the modules come with AnyEvent, some are
795     available via CPAN.
796    
797     =over 4
798    
799     =item L<AnyEvent::Util>
800    
801     Contains various utility functions that replace often-used but blocking
802     functions such as C<inet_aton> by event-/callback-based versions.
803    
804 root 1.125 =item L<AnyEvent::Socket>
805    
806     Provides various utility functions for (internet protocol) sockets,
807     addresses and name resolution. Also functions to create non-blocking tcp
808     connections or tcp servers, with IPv6 and SRV record support and more.
809    
810 root 1.164 =item L<AnyEvent::Handle>
811    
812     Provide read and write buffers, manages watchers for reads and writes,
813     supports raw and formatted I/O, I/O queued and fully transparent and
814     non-blocking SSL/TLS.
815    
816 root 1.134 =item L<AnyEvent::DNS>
817    
818     Provides rich asynchronous DNS resolver capabilities.
819    
820 root 1.155 =item L<AnyEvent::HTTP>
821    
822     A simple-to-use HTTP library that is capable of making a lot of concurrent
823     HTTP requests.
824    
825 root 1.101 =item L<AnyEvent::HTTPD>
826    
827     Provides a simple web application server framework.
828    
829 elmex 1.100 =item L<AnyEvent::FastPing>
830    
831 root 1.101 The fastest ping in the west.
832    
833 root 1.159 =item L<AnyEvent::DBI>
834    
835 root 1.164 Executes L<DBI> requests asynchronously in a proxy process.
836    
837     =item L<AnyEvent::AIO>
838    
839     Truly asynchronous I/O, should be in the toolbox of every event
840     programmer. AnyEvent::AIO transparently fuses L<IO::AIO> and AnyEvent
841     together.
842    
843     =item L<AnyEvent::BDB>
844    
845     Truly asynchronous Berkeley DB access. AnyEvent::BDB transparently fuses
846     L<BDB> and AnyEvent together.
847    
848     =item L<AnyEvent::GPSD>
849    
850     A non-blocking interface to gpsd, a daemon delivering GPS information.
851    
852     =item L<AnyEvent::IGS>
853    
854     A non-blocking interface to the Internet Go Server protocol (used by
855     L<App::IGS>).
856 root 1.159
857 root 1.184 =item L<AnyEvent::IRC>
858 elmex 1.100
859 root 1.184 AnyEvent based IRC client module family (replacing the older Net::IRC3).
860 root 1.101
861 elmex 1.100 =item L<Net::XMPP2>
862    
863 root 1.101 AnyEvent based XMPP (Jabber protocol) module family.
864    
865     =item L<Net::FCP>
866    
867     AnyEvent-based implementation of the Freenet Client Protocol, birthplace
868     of AnyEvent.
869    
870     =item L<Event::ExecFlow>
871    
872     High level API for event-based execution flow control.
873    
874     =item L<Coro>
875    
876 root 1.108 Has special support for AnyEvent via L<Coro::AnyEvent>.
877 root 1.101
878 root 1.113 =item L<IO::Lambda>
879 root 1.101
880 root 1.113 The lambda approach to I/O - don't ask, look there. Can use AnyEvent.
881 root 1.101
882 elmex 1.100 =back
883    
884 root 1.1 =cut
885    
886     package AnyEvent;
887    
888 root 1.2 no warnings;
889 root 1.180 use strict qw(vars subs);
890 root 1.24
891 root 1.1 use Carp;
892    
893 root 1.206 our $VERSION = 4.352;
894 root 1.2 our $MODEL;
895 root 1.1
896 root 1.2 our $AUTOLOAD;
897     our @ISA;
898 root 1.1
899 root 1.135 our @REGISTRY;
900    
901 root 1.138 our $WIN32;
902    
903     BEGIN {
904     my $win32 = ! ! ($^O =~ /mswin32/i);
905     eval "sub WIN32(){ $win32 }";
906     }
907    
908 root 1.7 our $verbose = $ENV{PERL_ANYEVENT_VERBOSE}*1;
909    
910 root 1.136 our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred
911 root 1.126
912     {
913     my $idx;
914     $PROTOCOL{$_} = ++$idx
915 root 1.136 for reverse split /\s*,\s*/,
916     $ENV{PERL_ANYEVENT_PROTOCOLS} || "ipv4,ipv6";
917 root 1.126 }
918    
919 root 1.1 my @models = (
920 root 1.33 [EV:: => AnyEvent::Impl::EV::],
921 root 1.18 [Event:: => AnyEvent::Impl::Event::],
922     [AnyEvent::Impl::Perl:: => AnyEvent::Impl::Perl::],
923 root 1.135 # everything below here will not be autoprobed
924     # as the pureperl backend should work everywhere
925     # and is usually faster
926     [Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles
927     [Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers
928 root 1.61 [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy
929 root 1.56 [Qt:: => AnyEvent::Impl::Qt::], # requires special main program
930 root 1.61 [POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza
931 root 1.135 [Wx:: => AnyEvent::Impl::POE::],
932     [Prima:: => AnyEvent::Impl::POE::],
933 root 1.1 );
934    
935 root 1.205 our %method = map +($_ => 1),
936     qw(io timer time now now_update signal child condvar one_event DESTROY);
937 root 1.3
938 root 1.111 our @post_detect;
939 root 1.109
940 root 1.111 sub post_detect(&) {
941 root 1.110 my ($cb) = @_;
942    
943 root 1.109 if ($MODEL) {
944 root 1.110 $cb->();
945    
946     1
947 root 1.109 } else {
948 root 1.111 push @post_detect, $cb;
949 root 1.110
950     defined wantarray
951 root 1.119 ? bless \$cb, "AnyEvent::Util::PostDetect"
952 root 1.110 : ()
953 root 1.109 }
954     }
955 root 1.108
956 root 1.119 sub AnyEvent::Util::PostDetect::DESTROY {
957 root 1.111 @post_detect = grep $_ != ${$_[0]}, @post_detect;
958 root 1.110 }
959    
960 root 1.19 sub detect() {
961     unless ($MODEL) {
962     no strict 'refs';
963 root 1.137 local $SIG{__DIE__};
964 root 1.1
965 root 1.55 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z]+)$/) {
966     my $model = "AnyEvent::Impl::$1";
967     if (eval "require $model") {
968     $MODEL = $model;
969     warn "AnyEvent: loaded model '$model' (forced by \$PERL_ANYEVENT_MODEL), using it.\n" if $verbose > 1;
970 root 1.60 } else {
971     warn "AnyEvent: unable to load model '$model' (from \$PERL_ANYEVENT_MODEL):\n$@" if $verbose;
972 root 1.2 }
973 root 1.1 }
974    
975 root 1.55 # check for already loaded models
976 root 1.2 unless ($MODEL) {
977 root 1.61 for (@REGISTRY, @models) {
978 root 1.8 my ($package, $model) = @$_;
979 root 1.55 if (${"$package\::VERSION"} > 0) {
980     if (eval "require $model") {
981     $MODEL = $model;
982     warn "AnyEvent: autodetected model '$model', using it.\n" if $verbose > 1;
983     last;
984     }
985 root 1.8 }
986 root 1.2 }
987    
988 root 1.55 unless ($MODEL) {
989     # try to load a model
990    
991     for (@REGISTRY, @models) {
992     my ($package, $model) = @$_;
993     if (eval "require $package"
994     and ${"$package\::VERSION"} > 0
995     and eval "require $model") {
996     $MODEL = $model;
997     warn "AnyEvent: autoprobed model '$model', using it.\n" if $verbose > 1;
998     last;
999     }
1000     }
1001    
1002     $MODEL
1003 root 1.204 or die "No event module selected for AnyEvent and autodetect failed. Install any one of these modules: EV, Event or Glib.\n";
1004 root 1.55 }
1005 root 1.1 }
1006 root 1.19
1007     push @{"$MODEL\::ISA"}, "AnyEvent::Base";
1008 root 1.108
1009 root 1.168 unshift @ISA, $MODEL;
1010    
1011     require AnyEvent::Strict if $ENV{PERL_ANYEVENT_STRICT};
1012 root 1.167
1013 root 1.111 (shift @post_detect)->() while @post_detect;
1014 root 1.1 }
1015    
1016 root 1.19 $MODEL
1017     }
1018    
1019     sub AUTOLOAD {
1020     (my $func = $AUTOLOAD) =~ s/.*://;
1021    
1022     $method{$func}
1023     or croak "$func: not a valid method for AnyEvent objects";
1024    
1025     detect unless $MODEL;
1026 root 1.2
1027     my $class = shift;
1028 root 1.18 $class->$func (@_);
1029 root 1.1 }
1030    
1031 root 1.169 # utility function to dup a filehandle. this is used by many backends
1032     # to support binding more than one watcher per filehandle (they usually
1033     # allow only one watcher per fd, so we dup it to get a different one).
1034     sub _dupfh($$$$) {
1035     my ($poll, $fh, $r, $w) = @_;
1036    
1037     # cygwin requires the fh mode to be matching, unix doesn't
1038     my ($rw, $mode) = $poll eq "r" ? ($r, "<")
1039     : $poll eq "w" ? ($w, ">")
1040     : Carp::croak "AnyEvent->io requires poll set to either 'r' or 'w'";
1041    
1042     open my $fh2, "$mode&" . fileno $fh
1043 root 1.204 or die "cannot dup() filehandle: $!,";
1044 root 1.169
1045     # we assume CLOEXEC is already set by perl in all important cases
1046    
1047     ($fh2, $rw)
1048     }
1049    
1050 root 1.19 package AnyEvent::Base;
1051    
1052 root 1.205 # default implementations for many methods
1053 root 1.143
1054 root 1.179 BEGIN {
1055     if (eval "use Time::HiRes (); time (); 1") {
1056     *_time = \&Time::HiRes::time;
1057     # if (eval "use POSIX (); (POSIX::times())...
1058     } else {
1059 root 1.182 *_time = sub { time }; # epic fail
1060 root 1.179 }
1061     }
1062 root 1.143
1063 root 1.179 sub time { _time }
1064     sub now { _time }
1065 root 1.205 sub now_update { }
1066 root 1.143
1067 root 1.114 # default implementation for ->condvar
1068 root 1.20
1069     sub condvar {
1070 root 1.124 bless { @_ == 3 ? (_ae_cb => $_[2]) : () }, AnyEvent::CondVar::
1071 root 1.20 }
1072    
1073     # default implementation for ->signal
1074 root 1.19
1075 root 1.195 our ($SIGPIPE_R, $SIGPIPE_W, %SIG_CB, %SIG_EV, $SIG_IO);
1076    
1077     sub _signal_exec {
1078 root 1.198 sysread $SIGPIPE_R, my $dummy, 4;
1079    
1080 root 1.195 while (%SIG_EV) {
1081     for (keys %SIG_EV) {
1082     delete $SIG_EV{$_};
1083     $_->() for values %{ $SIG_CB{$_} || {} };
1084     }
1085     }
1086     }
1087 root 1.19
1088     sub signal {
1089     my (undef, %arg) = @_;
1090    
1091 root 1.195 unless ($SIGPIPE_R) {
1092 root 1.200 require Fcntl;
1093    
1094 root 1.195 if (AnyEvent::WIN32) {
1095 root 1.200 require AnyEvent::Util;
1096    
1097 root 1.195 ($SIGPIPE_R, $SIGPIPE_W) = AnyEvent::Util::portable_pipe ();
1098     AnyEvent::Util::fh_nonblocking ($SIGPIPE_R) if $SIGPIPE_R;
1099     AnyEvent::Util::fh_nonblocking ($SIGPIPE_W) if $SIGPIPE_W; # just in case
1100     } else {
1101     pipe $SIGPIPE_R, $SIGPIPE_W;
1102     fcntl $SIGPIPE_R, &Fcntl::F_SETFL, &Fcntl::O_NONBLOCK if $SIGPIPE_R;
1103     fcntl $SIGPIPE_W, &Fcntl::F_SETFL, &Fcntl::O_NONBLOCK if $SIGPIPE_W; # just in case
1104     }
1105    
1106     $SIGPIPE_R
1107     or Carp::croak "AnyEvent: unable to create a signal reporting pipe: $!\n";
1108    
1109 root 1.201 # not strictly required, as $^F is normally 2, but let's make sure...
1110 root 1.200 fcntl $SIGPIPE_R, &Fcntl::F_SETFD, &Fcntl::FD_CLOEXEC;
1111     fcntl $SIGPIPE_W, &Fcntl::F_SETFD, &Fcntl::FD_CLOEXEC;
1112    
1113 root 1.195 $SIG_IO = AnyEvent->io (fh => $SIGPIPE_R, poll => "r", cb => \&_signal_exec);
1114     }
1115    
1116 root 1.19 my $signal = uc $arg{signal}
1117     or Carp::croak "required option 'signal' is missing";
1118    
1119 root 1.31 $SIG_CB{$signal}{$arg{cb}} = $arg{cb};
1120 root 1.19 $SIG{$signal} ||= sub {
1121 root 1.202 local $!;
1122 root 1.195 syswrite $SIGPIPE_W, "\x00", 1 unless %SIG_EV;
1123     undef $SIG_EV{$signal};
1124 root 1.19 };
1125    
1126 root 1.20 bless [$signal, $arg{cb}], "AnyEvent::Base::Signal"
1127 root 1.19 }
1128    
1129     sub AnyEvent::Base::Signal::DESTROY {
1130     my ($signal, $cb) = @{$_[0]};
1131    
1132     delete $SIG_CB{$signal}{$cb};
1133    
1134 root 1.161 delete $SIG{$signal} unless keys %{ $SIG_CB{$signal} };
1135 root 1.19 }
1136    
1137 root 1.20 # default implementation for ->child
1138    
1139     our %PID_CB;
1140     our $CHLD_W;
1141 root 1.37 our $CHLD_DELAY_W;
1142 root 1.20 our $PID_IDLE;
1143     our $WNOHANG;
1144    
1145     sub _child_wait {
1146 root 1.38 while (0 < (my $pid = waitpid -1, $WNOHANG)) {
1147 root 1.32 $_->($pid, $?) for (values %{ $PID_CB{$pid} || {} }),
1148     (values %{ $PID_CB{0} || {} });
1149 root 1.20 }
1150    
1151     undef $PID_IDLE;
1152     }
1153    
1154 root 1.37 sub _sigchld {
1155     # make sure we deliver these changes "synchronous" with the event loop.
1156     $CHLD_DELAY_W ||= AnyEvent->timer (after => 0, cb => sub {
1157     undef $CHLD_DELAY_W;
1158     &_child_wait;
1159     });
1160     }
1161    
1162 root 1.20 sub child {
1163     my (undef, %arg) = @_;
1164    
1165 root 1.31 defined (my $pid = $arg{pid} + 0)
1166 root 1.20 or Carp::croak "required option 'pid' is missing";
1167    
1168     $PID_CB{$pid}{$arg{cb}} = $arg{cb};
1169    
1170     unless ($WNOHANG) {
1171 root 1.137 $WNOHANG = eval { local $SIG{__DIE__}; require POSIX; &POSIX::WNOHANG } || 1;
1172 root 1.20 }
1173    
1174 root 1.23 unless ($CHLD_W) {
1175 root 1.37 $CHLD_W = AnyEvent->signal (signal => 'CHLD', cb => \&_sigchld);
1176     # child could be a zombie already, so make at least one round
1177     &_sigchld;
1178 root 1.23 }
1179 root 1.20
1180     bless [$pid, $arg{cb}], "AnyEvent::Base::Child"
1181     }
1182    
1183     sub AnyEvent::Base::Child::DESTROY {
1184     my ($pid, $cb) = @{$_[0]};
1185    
1186     delete $PID_CB{$pid}{$cb};
1187     delete $PID_CB{$pid} unless keys %{ $PID_CB{$pid} };
1188    
1189     undef $CHLD_W unless keys %PID_CB;
1190     }
1191    
1192 root 1.116 package AnyEvent::CondVar;
1193    
1194     our @ISA = AnyEvent::CondVar::Base::;
1195    
1196     package AnyEvent::CondVar::Base;
1197 root 1.114
1198 root 1.131 use overload
1199     '&{}' => sub { my $self = shift; sub { $self->send (@_) } },
1200     fallback => 1;
1201    
1202 root 1.114 sub _send {
1203 root 1.116 # nop
1204 root 1.114 }
1205    
1206     sub send {
1207 root 1.115 my $cv = shift;
1208     $cv->{_ae_sent} = [@_];
1209 root 1.116 (delete $cv->{_ae_cb})->($cv) if $cv->{_ae_cb};
1210 root 1.115 $cv->_send;
1211 root 1.114 }
1212    
1213     sub croak {
1214 root 1.115 $_[0]{_ae_croak} = $_[1];
1215 root 1.114 $_[0]->send;
1216     }
1217    
1218     sub ready {
1219     $_[0]{_ae_sent}
1220     }
1221    
1222 root 1.116 sub _wait {
1223     AnyEvent->one_event while !$_[0]{_ae_sent};
1224     }
1225    
1226 root 1.114 sub recv {
1227 root 1.116 $_[0]->_wait;
1228 root 1.114
1229     Carp::croak $_[0]{_ae_croak} if $_[0]{_ae_croak};
1230     wantarray ? @{ $_[0]{_ae_sent} } : $_[0]{_ae_sent}[0]
1231     }
1232    
1233     sub cb {
1234     $_[0]{_ae_cb} = $_[1] if @_ > 1;
1235     $_[0]{_ae_cb}
1236     }
1237    
1238     sub begin {
1239     ++$_[0]{_ae_counter};
1240     $_[0]{_ae_end_cb} = $_[1] if @_ > 1;
1241     }
1242    
1243     sub end {
1244     return if --$_[0]{_ae_counter};
1245 root 1.124 &{ $_[0]{_ae_end_cb} || sub { $_[0]->send } };
1246 root 1.114 }
1247    
1248     # undocumented/compatibility with pre-3.4
1249     *broadcast = \&send;
1250 root 1.116 *wait = \&_wait;
1251 root 1.114
1252 root 1.180 =head1 ERROR AND EXCEPTION HANDLING
1253 root 1.53
1254 root 1.180 In general, AnyEvent does not do any error handling - it relies on the
1255     caller to do that if required. The L<AnyEvent::Strict> module (see also
1256     the C<PERL_ANYEVENT_STRICT> environment variable, below) provides strict
1257     checking of all AnyEvent methods, however, which is highly useful during
1258     development.
1259    
1260     As for exception handling (i.e. runtime errors and exceptions thrown while
1261     executing a callback), this is not only highly event-loop specific, but
1262     also not in any way wrapped by this module, as this is the job of the main
1263     program.
1264    
1265     The pure perl event loop simply re-throws the exception (usually
1266     within C<< condvar->recv >>), the L<Event> and L<EV> modules call C<<
1267     $Event/EV::DIED->() >>, L<Glib> uses C<< install_exception_handler >> and
1268     so on.
1269 root 1.12
1270 root 1.7 =head1 ENVIRONMENT VARIABLES
1271    
1272 root 1.180 The following environment variables are used by this module or its
1273     submodules:
1274 root 1.7
1275 root 1.55 =over 4
1276    
1277     =item C<PERL_ANYEVENT_VERBOSE>
1278    
1279 root 1.60 By default, AnyEvent will be completely silent except in fatal
1280     conditions. You can set this environment variable to make AnyEvent more
1281     talkative.
1282    
1283     When set to C<1> or higher, causes AnyEvent to warn about unexpected
1284     conditions, such as not being able to load the event model specified by
1285     C<PERL_ANYEVENT_MODEL>.
1286    
1287 root 1.55 When set to C<2> or higher, cause AnyEvent to report to STDERR which event
1288     model it chooses.
1289    
1290 root 1.167 =item C<PERL_ANYEVENT_STRICT>
1291    
1292     AnyEvent does not do much argument checking by default, as thorough
1293     argument checking is very costly. Setting this variable to a true value
1294 root 1.170 will cause AnyEvent to load C<AnyEvent::Strict> and then to thoroughly
1295     check the arguments passed to most method calls. If it finds any problems
1296     it will croak.
1297    
1298     In other words, enables "strict" mode.
1299    
1300 root 1.180 Unlike C<use strict>, it is definitely recommended ot keep it off in
1301     production. Keeping C<PERL_ANYEVENT_STRICT=1> in your environment while
1302     developing programs can be very useful, however.
1303 root 1.167
1304 root 1.55 =item C<PERL_ANYEVENT_MODEL>
1305    
1306     This can be used to specify the event model to be used by AnyEvent, before
1307 root 1.128 auto detection and -probing kicks in. It must be a string consisting
1308 root 1.55 entirely of ASCII letters. The string C<AnyEvent::Impl::> gets prepended
1309     and the resulting module name is loaded and if the load was successful,
1310     used as event model. If it fails to load AnyEvent will proceed with
1311 root 1.128 auto detection and -probing.
1312 root 1.55
1313     This functionality might change in future versions.
1314    
1315     For example, to force the pure perl model (L<AnyEvent::Impl::Perl>) you
1316     could start your program like this:
1317    
1318 root 1.151 PERL_ANYEVENT_MODEL=Perl perl ...
1319 root 1.55
1320 root 1.125 =item C<PERL_ANYEVENT_PROTOCOLS>
1321    
1322     Used by both L<AnyEvent::DNS> and L<AnyEvent::Socket> to determine preferences
1323     for IPv4 or IPv6. The default is unspecified (and might change, or be the result
1324 root 1.128 of auto probing).
1325 root 1.125
1326     Must be set to a comma-separated list of protocols or address families,
1327     current supported: C<ipv4> and C<ipv6>. Only protocols mentioned will be
1328     used, and preference will be given to protocols mentioned earlier in the
1329     list.
1330    
1331 root 1.127 This variable can effectively be used for denial-of-service attacks
1332     against local programs (e.g. when setuid), although the impact is likely
1333 root 1.194 small, as the program has to handle conenction and other failures anyways.
1334 root 1.127
1335 root 1.125 Examples: C<PERL_ANYEVENT_PROTOCOLS=ipv4,ipv6> - prefer IPv4 over IPv6,
1336     but support both and try to use both. C<PERL_ANYEVENT_PROTOCOLS=ipv4>
1337     - only support IPv4, never try to resolve or contact IPv6
1338 root 1.128 addresses. C<PERL_ANYEVENT_PROTOCOLS=ipv6,ipv4> support either IPv4 or
1339 root 1.125 IPv6, but prefer IPv6 over IPv4.
1340    
1341 root 1.127 =item C<PERL_ANYEVENT_EDNS0>
1342    
1343 root 1.128 Used by L<AnyEvent::DNS> to decide whether to use the EDNS0 extension
1344 root 1.127 for DNS. This extension is generally useful to reduce DNS traffic, but
1345     some (broken) firewalls drop such DNS packets, which is why it is off by
1346     default.
1347    
1348     Setting this variable to C<1> will cause L<AnyEvent::DNS> to announce
1349     EDNS0 in its DNS requests.
1350    
1351 root 1.142 =item C<PERL_ANYEVENT_MAX_FORKS>
1352    
1353     The maximum number of child processes that C<AnyEvent::Util::fork_call>
1354     will create in parallel.
1355    
1356 root 1.55 =back
1357 root 1.7
1358 root 1.180 =head1 SUPPLYING YOUR OWN EVENT MODEL INTERFACE
1359    
1360     This is an advanced topic that you do not normally need to use AnyEvent in
1361     a module. This section is only of use to event loop authors who want to
1362     provide AnyEvent compatibility.
1363    
1364     If you need to support another event library which isn't directly
1365     supported by AnyEvent, you can supply your own interface to it by
1366     pushing, before the first watcher gets created, the package name of
1367     the event module and the package name of the interface to use onto
1368     C<@AnyEvent::REGISTRY>. You can do that before and even without loading
1369     AnyEvent, so it is reasonably cheap.
1370    
1371     Example:
1372    
1373     push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::];
1374    
1375     This tells AnyEvent to (literally) use the C<urxvt::anyevent::>
1376     package/class when it finds the C<urxvt> package/module is already loaded.
1377    
1378     When AnyEvent is loaded and asked to find a suitable event model, it
1379     will first check for the presence of urxvt by trying to C<use> the
1380     C<urxvt::anyevent> module.
1381    
1382     The class should provide implementations for all watcher types. See
1383     L<AnyEvent::Impl::EV> (source code), L<AnyEvent::Impl::Glib> (Source code)
1384     and so on for actual examples. Use C<perldoc -m AnyEvent::Impl::Glib> to
1385     see the sources.
1386    
1387     If you don't provide C<signal> and C<child> watchers than AnyEvent will
1388     provide suitable (hopefully) replacements.
1389    
1390     The above example isn't fictitious, the I<rxvt-unicode> (a.k.a. urxvt)
1391     terminal emulator uses the above line as-is. An interface isn't included
1392     in AnyEvent because it doesn't make sense outside the embedded interpreter
1393     inside I<rxvt-unicode>, and it is updated and maintained as part of the
1394     I<rxvt-unicode> distribution.
1395    
1396     I<rxvt-unicode> also cheats a bit by not providing blocking access to
1397     condition variables: code blocking while waiting for a condition will
1398     C<die>. This still works with most modules/usages, and blocking calls must
1399     not be done in an interactive application, so it makes sense.
1400    
1401 root 1.53 =head1 EXAMPLE PROGRAM
1402 root 1.2
1403 root 1.78 The following program uses an I/O watcher to read data from STDIN, a timer
1404 root 1.53 to display a message once per second, and a condition variable to quit the
1405     program when the user enters quit:
1406 root 1.2
1407     use AnyEvent;
1408    
1409     my $cv = AnyEvent->condvar;
1410    
1411 root 1.53 my $io_watcher = AnyEvent->io (
1412     fh => \*STDIN,
1413     poll => 'r',
1414     cb => sub {
1415     warn "io event <$_[0]>\n"; # will always output <r>
1416     chomp (my $input = <STDIN>); # read a line
1417     warn "read: $input\n"; # output what has been read
1418 root 1.118 $cv->send if $input =~ /^q/i; # quit program if /^q/i
1419 root 1.53 },
1420     );
1421 root 1.2
1422     my $time_watcher; # can only be used once
1423    
1424     sub new_timer {
1425     $timer = AnyEvent->timer (after => 1, cb => sub {
1426     warn "timeout\n"; # print 'timeout' about every second
1427     &new_timer; # and restart the time
1428     });
1429     }
1430    
1431     new_timer; # create first timer
1432    
1433 root 1.118 $cv->recv; # wait until user enters /^q/i
1434 root 1.2
1435 root 1.5 =head1 REAL-WORLD EXAMPLE
1436    
1437     Consider the L<Net::FCP> module. It features (among others) the following
1438     API calls, which are to freenet what HTTP GET requests are to http:
1439    
1440     my $data = $fcp->client_get ($url); # blocks
1441    
1442     my $transaction = $fcp->txn_client_get ($url); # does not block
1443     $transaction->cb ( sub { ... } ); # set optional result callback
1444     my $data = $transaction->result; # possibly blocks
1445    
1446     The C<client_get> method works like C<LWP::Simple::get>: it requests the
1447     given URL and waits till the data has arrived. It is defined to be:
1448    
1449     sub client_get { $_[0]->txn_client_get ($_[1])->result }
1450    
1451     And in fact is automatically generated. This is the blocking API of
1452     L<Net::FCP>, and it works as simple as in any other, similar, module.
1453    
1454     More complicated is C<txn_client_get>: It only creates a transaction
1455     (completion, result, ...) object and initiates the transaction.
1456    
1457     my $txn = bless { }, Net::FCP::Txn::;
1458    
1459     It also creates a condition variable that is used to signal the completion
1460     of the request:
1461    
1462     $txn->{finished} = AnyAvent->condvar;
1463    
1464     It then creates a socket in non-blocking mode.
1465    
1466     socket $txn->{fh}, ...;
1467     fcntl $txn->{fh}, F_SETFL, O_NONBLOCK;
1468     connect $txn->{fh}, ...
1469     and !$!{EWOULDBLOCK}
1470     and !$!{EINPROGRESS}
1471     and Carp::croak "unable to connect: $!\n";
1472    
1473 root 1.6 Then it creates a write-watcher which gets called whenever an error occurs
1474 root 1.5 or the connection succeeds:
1475    
1476     $txn->{w} = AnyEvent->io (fh => $txn->{fh}, poll => 'w', cb => sub { $txn->fh_ready_w });
1477    
1478     And returns this transaction object. The C<fh_ready_w> callback gets
1479     called as soon as the event loop detects that the socket is ready for
1480     writing.
1481    
1482     The C<fh_ready_w> method makes the socket blocking again, writes the
1483     request data and replaces the watcher by a read watcher (waiting for reply
1484     data). The actual code is more complicated, but that doesn't matter for
1485     this example:
1486    
1487     fcntl $txn->{fh}, F_SETFL, 0;
1488     syswrite $txn->{fh}, $txn->{request}
1489     or die "connection or write error";
1490     $txn->{w} = AnyEvent->io (fh => $txn->{fh}, poll => 'r', cb => sub { $txn->fh_ready_r });
1491    
1492     Again, C<fh_ready_r> waits till all data has arrived, and then stores the
1493 root 1.128 result and signals any possible waiters that the request has finished:
1494 root 1.5
1495     sysread $txn->{fh}, $txn->{buf}, length $txn->{$buf};
1496    
1497     if (end-of-file or data complete) {
1498     $txn->{result} = $txn->{buf};
1499 root 1.118 $txn->{finished}->send;
1500 root 1.6 $txb->{cb}->($txn) of $txn->{cb}; # also call callback
1501 root 1.5 }
1502    
1503     The C<result> method, finally, just waits for the finished signal (if the
1504     request was already finished, it doesn't wait, of course, and returns the
1505     data:
1506    
1507 root 1.118 $txn->{finished}->recv;
1508 root 1.6 return $txn->{result};
1509 root 1.5
1510     The actual code goes further and collects all errors (C<die>s, exceptions)
1511 root 1.128 that occurred during request processing. The C<result> method detects
1512 root 1.52 whether an exception as thrown (it is stored inside the $txn object)
1513 root 1.5 and just throws the exception, which means connection errors and other
1514     problems get reported tot he code that tries to use the result, not in a
1515     random callback.
1516    
1517     All of this enables the following usage styles:
1518    
1519     1. Blocking:
1520    
1521     my $data = $fcp->client_get ($url);
1522    
1523 root 1.49 2. Blocking, but running in parallel:
1524 root 1.5
1525     my @datas = map $_->result,
1526     map $fcp->txn_client_get ($_),
1527     @urls;
1528    
1529     Both blocking examples work without the module user having to know
1530     anything about events.
1531    
1532 root 1.49 3a. Event-based in a main program, using any supported event module:
1533 root 1.5
1534 root 1.49 use EV;
1535 root 1.5
1536     $fcp->txn_client_get ($url)->cb (sub {
1537     my $txn = shift;
1538     my $data = $txn->result;
1539     ...
1540     });
1541    
1542 root 1.49 EV::loop;
1543 root 1.5
1544     3b. The module user could use AnyEvent, too:
1545    
1546     use AnyEvent;
1547    
1548     my $quit = AnyEvent->condvar;
1549    
1550     $fcp->txn_client_get ($url)->cb (sub {
1551     ...
1552 root 1.118 $quit->send;
1553 root 1.5 });
1554    
1555 root 1.118 $quit->recv;
1556 root 1.5
1557 root 1.64
1558 root 1.91 =head1 BENCHMARKS
1559 root 1.64
1560 root 1.65 To give you an idea of the performance and overheads that AnyEvent adds
1561 root 1.91 over the event loops themselves and to give you an impression of the speed
1562     of various event loops I prepared some benchmarks.
1563 root 1.77
1564 root 1.91 =head2 BENCHMARKING ANYEVENT OVERHEAD
1565    
1566     Here is a benchmark of various supported event models used natively and
1567 root 1.128 through AnyEvent. The benchmark creates a lot of timers (with a zero
1568 root 1.91 timeout) and I/O watchers (watching STDOUT, a pty, to become writable,
1569     which it is), lets them fire exactly once and destroys them again.
1570    
1571     Source code for this benchmark is found as F<eg/bench> in the AnyEvent
1572     distribution.
1573    
1574     =head3 Explanation of the columns
1575 root 1.68
1576     I<watcher> is the number of event watchers created/destroyed. Since
1577     different event models feature vastly different performances, each event
1578     loop was given a number of watchers so that overall runtime is acceptable
1579     and similar between tested event loop (and keep them from crashing): Glib
1580     would probably take thousands of years if asked to process the same number
1581     of watchers as EV in this benchmark.
1582    
1583     I<bytes> is the number of bytes (as measured by the resident set size,
1584     RSS) consumed by each watcher. This method of measuring captures both C
1585     and Perl-based overheads.
1586    
1587     I<create> is the time, in microseconds (millionths of seconds), that it
1588     takes to create a single watcher. The callback is a closure shared between
1589     all watchers, to avoid adding memory overhead. That means closure creation
1590     and memory usage is not included in the figures.
1591    
1592     I<invoke> is the time, in microseconds, used to invoke a simple
1593     callback. The callback simply counts down a Perl variable and after it was
1594 root 1.118 invoked "watcher" times, it would C<< ->send >> a condvar once to
1595 root 1.69 signal the end of this phase.
1596 root 1.64
1597 root 1.71 I<destroy> is the time, in microseconds, that it takes to destroy a single
1598 root 1.68 watcher.
1599 root 1.64
1600 root 1.91 =head3 Results
1601 root 1.64
1602 root 1.75 name watchers bytes create invoke destroy comment
1603 root 1.187 EV/EV 400000 224 0.47 0.35 0.27 EV native interface
1604     EV/Any 100000 224 2.88 0.34 0.27 EV + AnyEvent watchers
1605     CoroEV/Any 100000 224 2.85 0.35 0.28 coroutines + Coro::Signal
1606 root 1.190 Perl/Any 100000 452 4.13 0.73 0.95 pure perl implementation
1607 root 1.186 Event/Event 16000 517 32.20 31.80 0.81 Event native interface
1608     Event/Any 16000 590 35.85 31.55 1.06 Event + AnyEvent watchers
1609     Glib/Any 16000 1357 102.33 12.31 51.00 quadratic behaviour
1610     Tk/Any 2000 1860 27.20 66.31 14.00 SEGV with >> 2000 watchers
1611     POE/Event 2000 6328 109.99 751.67 14.02 via POE::Loop::Event
1612     POE/Select 2000 6027 94.54 809.13 579.80 via POE::Loop::Select
1613 root 1.64
1614 root 1.91 =head3 Discussion
1615 root 1.68
1616     The benchmark does I<not> measure scalability of the event loop very
1617     well. For example, a select-based event loop (such as the pure perl one)
1618     can never compete with an event loop that uses epoll when the number of
1619 root 1.80 file descriptors grows high. In this benchmark, all events become ready at
1620     the same time, so select/poll-based implementations get an unnatural speed
1621     boost.
1622 root 1.68
1623 root 1.95 Also, note that the number of watchers usually has a nonlinear effect on
1624     overall speed, that is, creating twice as many watchers doesn't take twice
1625     the time - usually it takes longer. This puts event loops tested with a
1626     higher number of watchers at a disadvantage.
1627    
1628 root 1.96 To put the range of results into perspective, consider that on the
1629     benchmark machine, handling an event takes roughly 1600 CPU cycles with
1630     EV, 3100 CPU cycles with AnyEvent's pure perl loop and almost 3000000 CPU
1631     cycles with POE.
1632    
1633 root 1.68 C<EV> is the sole leader regarding speed and memory use, which are both
1634 root 1.84 maximal/minimal, respectively. Even when going through AnyEvent, it uses
1635     far less memory than any other event loop and is still faster than Event
1636     natively.
1637 root 1.64
1638     The pure perl implementation is hit in a few sweet spots (both the
1639 root 1.86 constant timeout and the use of a single fd hit optimisations in the perl
1640     interpreter and the backend itself). Nevertheless this shows that it
1641     adds very little overhead in itself. Like any select-based backend its
1642     performance becomes really bad with lots of file descriptors (and few of
1643     them active), of course, but this was not subject of this benchmark.
1644 root 1.64
1645 root 1.90 The C<Event> module has a relatively high setup and callback invocation
1646     cost, but overall scores in on the third place.
1647 root 1.64
1648 root 1.90 C<Glib>'s memory usage is quite a bit higher, but it features a
1649 root 1.73 faster callback invocation and overall ends up in the same class as
1650     C<Event>. However, Glib scales extremely badly, doubling the number of
1651     watchers increases the processing time by more than a factor of four,
1652     making it completely unusable when using larger numbers of watchers
1653     (note that only a single file descriptor was used in the benchmark, so
1654     inefficiencies of C<poll> do not account for this).
1655 root 1.64
1656 root 1.73 The C<Tk> adaptor works relatively well. The fact that it crashes with
1657 root 1.64 more than 2000 watchers is a big setback, however, as correctness takes
1658 root 1.68 precedence over speed. Nevertheless, its performance is surprising, as the
1659     file descriptor is dup()ed for each watcher. This shows that the dup()
1660     employed by some adaptors is not a big performance issue (it does incur a
1661 root 1.87 hidden memory cost inside the kernel which is not reflected in the figures
1662     above).
1663 root 1.68
1664 root 1.103 C<POE>, regardless of underlying event loop (whether using its pure perl
1665     select-based backend or the Event module, the POE-EV backend couldn't
1666     be tested because it wasn't working) shows abysmal performance and
1667     memory usage with AnyEvent: Watchers use almost 30 times as much memory
1668     as EV watchers, and 10 times as much memory as Event (the high memory
1669 root 1.87 requirements are caused by requiring a session for each watcher). Watcher
1670     invocation speed is almost 900 times slower than with AnyEvent's pure perl
1671 root 1.103 implementation.
1672    
1673     The design of the POE adaptor class in AnyEvent can not really account
1674     for the performance issues, though, as session creation overhead is
1675     small compared to execution of the state machine, which is coded pretty
1676     optimally within L<AnyEvent::Impl::POE> (and while everybody agrees that
1677     using multiple sessions is not a good approach, especially regarding
1678     memory usage, even the author of POE could not come up with a faster
1679     design).
1680 root 1.72
1681 root 1.91 =head3 Summary
1682 root 1.72
1683 root 1.87 =over 4
1684    
1685 root 1.89 =item * Using EV through AnyEvent is faster than any other event loop
1686     (even when used without AnyEvent), but most event loops have acceptable
1687     performance with or without AnyEvent.
1688 root 1.72
1689 root 1.87 =item * The overhead AnyEvent adds is usually much smaller than the overhead of
1690 root 1.89 the actual event loop, only with extremely fast event loops such as EV
1691 root 1.73 adds AnyEvent significant overhead.
1692 root 1.72
1693 root 1.90 =item * You should avoid POE like the plague if you want performance or
1694 root 1.72 reasonable memory usage.
1695 root 1.64
1696 root 1.87 =back
1697    
1698 root 1.91 =head2 BENCHMARKING THE LARGE SERVER CASE
1699    
1700 root 1.128 This benchmark actually benchmarks the event loop itself. It works by
1701     creating a number of "servers": each server consists of a socket pair, a
1702 root 1.91 timeout watcher that gets reset on activity (but never fires), and an I/O
1703     watcher waiting for input on one side of the socket. Each time the socket
1704     watcher reads a byte it will write that byte to a random other "server".
1705    
1706     The effect is that there will be a lot of I/O watchers, only part of which
1707     are active at any one point (so there is a constant number of active
1708 root 1.128 fds for each loop iteration, but which fds these are is random). The
1709 root 1.91 timeout is reset each time something is read because that reflects how
1710     most timeouts work (and puts extra pressure on the event loops).
1711    
1712 root 1.128 In this benchmark, we use 10000 socket pairs (20000 sockets), of which 100
1713 root 1.91 (1%) are active. This mirrors the activity of large servers with many
1714 root 1.92 connections, most of which are idle at any one point in time.
1715 root 1.91
1716     Source code for this benchmark is found as F<eg/bench2> in the AnyEvent
1717     distribution.
1718    
1719     =head3 Explanation of the columns
1720    
1721     I<sockets> is the number of sockets, and twice the number of "servers" (as
1722 root 1.94 each server has a read and write socket end).
1723 root 1.91
1724 root 1.128 I<create> is the time it takes to create a socket pair (which is
1725 root 1.91 nontrivial) and two watchers: an I/O watcher and a timeout watcher.
1726    
1727     I<request>, the most important value, is the time it takes to handle a
1728     single "request", that is, reading the token from the pipe and forwarding
1729 root 1.93 it to another server. This includes deleting the old timeout and creating
1730     a new one that moves the timeout into the future.
1731 root 1.91
1732     =head3 Results
1733    
1734     name sockets create request
1735     EV 20000 69.01 11.16
1736 root 1.99 Perl 20000 73.32 35.87
1737 root 1.91 Event 20000 212.62 257.32
1738     Glib 20000 651.16 1896.30
1739     POE 20000 349.67 12317.24 uses POE::Loop::Event
1740    
1741     =head3 Discussion
1742    
1743     This benchmark I<does> measure scalability and overall performance of the
1744     particular event loop.
1745    
1746     EV is again fastest. Since it is using epoll on my system, the setup time
1747     is relatively high, though.
1748    
1749     Perl surprisingly comes second. It is much faster than the C-based event
1750     loops Event and Glib.
1751    
1752     Event suffers from high setup time as well (look at its code and you will
1753     understand why). Callback invocation also has a high overhead compared to
1754     the C<< $_->() for .. >>-style loop that the Perl event loop uses. Event
1755     uses select or poll in basically all documented configurations.
1756    
1757     Glib is hit hard by its quadratic behaviour w.r.t. many watchers. It
1758     clearly fails to perform with many filehandles or in busy servers.
1759    
1760     POE is still completely out of the picture, taking over 1000 times as long
1761     as EV, and over 100 times as long as the Perl implementation, even though
1762     it uses a C-based event loop in this case.
1763    
1764     =head3 Summary
1765    
1766     =over 4
1767    
1768 root 1.103 =item * The pure perl implementation performs extremely well.
1769 root 1.91
1770     =item * Avoid Glib or POE in large projects where performance matters.
1771    
1772     =back
1773    
1774     =head2 BENCHMARKING SMALL SERVERS
1775    
1776     While event loops should scale (and select-based ones do not...) even to
1777     large servers, most programs we (or I :) actually write have only a few
1778     I/O watchers.
1779    
1780     In this benchmark, I use the same benchmark program as in the large server
1781     case, but it uses only eight "servers", of which three are active at any
1782     one time. This should reflect performance for a small server relatively
1783     well.
1784    
1785     The columns are identical to the previous table.
1786    
1787     =head3 Results
1788    
1789     name sockets create request
1790     EV 16 20.00 6.54
1791 root 1.99 Perl 16 25.75 12.62
1792 root 1.91 Event 16 81.27 35.86
1793     Glib 16 32.63 15.48
1794     POE 16 261.87 276.28 uses POE::Loop::Event
1795    
1796     =head3 Discussion
1797    
1798     The benchmark tries to test the performance of a typical small
1799     server. While knowing how various event loops perform is interesting, keep
1800     in mind that their overhead in this case is usually not as important, due
1801 root 1.97 to the small absolute number of watchers (that is, you need efficiency and
1802     speed most when you have lots of watchers, not when you only have a few of
1803     them).
1804 root 1.91
1805     EV is again fastest.
1806    
1807 elmex 1.129 Perl again comes second. It is noticeably faster than the C-based event
1808 root 1.102 loops Event and Glib, although the difference is too small to really
1809     matter.
1810 root 1.91
1811 root 1.97 POE also performs much better in this case, but is is still far behind the
1812 root 1.91 others.
1813    
1814     =head3 Summary
1815    
1816     =over 4
1817    
1818     =item * C-based event loops perform very well with small number of
1819     watchers, as the management overhead dominates.
1820    
1821     =back
1822    
1823 root 1.64
1824 root 1.185 =head1 SIGNALS
1825    
1826     AnyEvent currently installs handlers for these signals:
1827    
1828     =over 4
1829    
1830     =item SIGCHLD
1831    
1832     A handler for C<SIGCHLD> is installed by AnyEvent's child watcher
1833     emulation for event loops that do not support them natively. Also, some
1834     event loops install a similar handler.
1835    
1836     =item SIGPIPE
1837    
1838     A no-op handler is installed for C<SIGPIPE> when C<$SIG{PIPE}> is C<undef>
1839     when AnyEvent gets loaded.
1840    
1841     The rationale for this is that AnyEvent users usually do not really depend
1842     on SIGPIPE delivery (which is purely an optimisation for shell use, or
1843     badly-written programs), but C<SIGPIPE> can cause spurious and rare
1844     program exits as a lot of people do not expect C<SIGPIPE> when writing to
1845     some random socket.
1846    
1847     The rationale for installing a no-op handler as opposed to ignoring it is
1848     that this way, the handler will be restored to defaults on exec.
1849    
1850     Feel free to install your own handler, or reset it to defaults.
1851    
1852     =back
1853    
1854     =cut
1855    
1856     $SIG{PIPE} = sub { }
1857     unless defined $SIG{PIPE};
1858    
1859    
1860 root 1.55 =head1 FORK
1861    
1862     Most event libraries are not fork-safe. The ones who are usually are
1863 root 1.104 because they rely on inefficient but fork-safe C<select> or C<poll>
1864     calls. Only L<EV> is fully fork-aware.
1865 root 1.55
1866     If you have to fork, you must either do so I<before> creating your first
1867     watcher OR you must not use AnyEvent at all in the child.
1868    
1869 root 1.64
1870 root 1.55 =head1 SECURITY CONSIDERATIONS
1871    
1872     AnyEvent can be forced to load any event model via
1873     $ENV{PERL_ANYEVENT_MODEL}. While this cannot (to my knowledge) be used to
1874     execute arbitrary code or directly gain access, it can easily be used to
1875     make the program hang or malfunction in subtle ways, as AnyEvent watchers
1876     will not be active when the program uses a different event model than
1877     specified in the variable.
1878    
1879     You can make AnyEvent completely ignore this variable by deleting it
1880     before the first watcher gets created, e.g. with a C<BEGIN> block:
1881    
1882 root 1.151 BEGIN { delete $ENV{PERL_ANYEVENT_MODEL} }
1883    
1884     use AnyEvent;
1885 root 1.55
1886 root 1.107 Similar considerations apply to $ENV{PERL_ANYEVENT_VERBOSE}, as that can
1887     be used to probe what backend is used and gain other information (which is
1888 root 1.167 probably even less useful to an attacker than PERL_ANYEVENT_MODEL), and
1889     $ENV{PERL_ANYEGENT_STRICT}.
1890 root 1.107
1891 root 1.64
1892 root 1.156 =head1 BUGS
1893    
1894     Perl 5.8 has numerous memleaks that sometimes hit this module and are hard
1895     to work around. If you suffer from memleaks, first upgrade to Perl 5.10
1896     and check wether the leaks still show up. (Perl 5.10.0 has other annoying
1897 root 1.197 memleaks, such as leaking on C<map> and C<grep> but it is usually not as
1898 root 1.156 pronounced).
1899    
1900    
1901 root 1.2 =head1 SEE ALSO
1902    
1903 root 1.125 Utility functions: L<AnyEvent::Util>.
1904    
1905 root 1.108 Event modules: L<EV>, L<EV::Glib>, L<Glib::EV>, L<Event>, L<Glib::Event>,
1906     L<Glib>, L<Tk>, L<Event::Lib>, L<Qt>, L<POE>.
1907    
1908     Implementations: L<AnyEvent::Impl::EV>, L<AnyEvent::Impl::Event>,
1909     L<AnyEvent::Impl::Glib>, L<AnyEvent::Impl::Tk>, L<AnyEvent::Impl::Perl>,
1910     L<AnyEvent::Impl::EventLib>, L<AnyEvent::Impl::Qt>,
1911     L<AnyEvent::Impl::POE>.
1912    
1913 root 1.125 Non-blocking file handles, sockets, TCP clients and
1914     servers: L<AnyEvent::Handle>, L<AnyEvent::Socket>.
1915    
1916 root 1.122 Asynchronous DNS: L<AnyEvent::DNS>.
1917    
1918 root 1.108 Coroutine support: L<Coro>, L<Coro::AnyEvent>, L<Coro::EV>, L<Coro::Event>,
1919 root 1.5
1920 root 1.125 Nontrivial usage examples: L<Net::FCP>, L<Net::XMPP2>, L<AnyEvent::DNS>.
1921 root 1.2
1922 root 1.64
1923 root 1.54 =head1 AUTHOR
1924    
1925 root 1.151 Marc Lehmann <schmorp@schmorp.de>
1926     http://home.schmorp.de/
1927 root 1.2
1928     =cut
1929    
1930     1
1931 root 1.1