ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/README
Revision: 1.47
Committed: Mon Jul 20 22:39:57 2009 UTC (14 years, 10 months ago) by root
Branch: MAIN
CVS Tags: rel-4_86
Changes since 1.46: +29 -12 lines
Log Message:
4.86

File Contents

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